上篇我们聊了聊Nginx的七层负载均衡,我们大致对Nginx的负载均衡搭建有点小印象,至少知道负载均衡的基本概念,以及怎么使用
upstream
配置负载均衡。到最后,我们还介绍了下如何使用Consul+upsync+nginx搭建动态负载均衡,也动手实现了下。那么今天我们将带来如何使用Nginx搭建四层负载均衡(虽然很少这么做,但还是要学习下)
今天的内容如下:
1. 什么是四层负载均衡,什么又是七层负载均衡。区别是什么?(这点上次没说,专门留着这里说)
2. 如何搭建Nginx四层负载均衡
3. 常见的四层负载均衡器
不说了,进入正题
0x01 四层负载均衡和七层负载均衡
- 从OSI开放互联参考模型说起
- 我们都知道OSI有七层,从下往上,依次是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,这些相信都在网络课背过,这里也不多说。那么问题来了,为啥要谈到OSI呢?因为我们这里的四层,指的就是OSI模型中的第四层(从下往上数),也就是传输层。而七层呢?没错,就是应用层。也就是说:
- 四层负载均衡:基于传输层做的负载均衡
- 七层负载均衡:基于应用层做的负载均衡
- 我们都知道OSI有七层,从下往上,依次是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层,这些相信都在网络课背过,这里也不多说。那么问题来了,为啥要谈到OSI呢?因为我们这里的四层,指的就是OSI模型中的第四层(从下往上数),也就是传输层。而七层呢?没错,就是应用层。也就是说:
- 既然对四层和七层负载均衡有了一定的了解,那么他们有啥不同呢?
- 四层负载均衡:
- 我们都知道,四层的传输协议是啥?TCP、UDP。那么在四层做负载均衡,面向的就是TCP协议。我们也知道,OSI上层协议都是需要下层做支撑,也就是说,在四层做负载均衡,相当于可以运用所有请求。
- 七层负载均衡:
- 七层,也就是应用层,我们负载均衡面向的是HTTP协议,我们可以在Nginx的配置中看到,配置的就是一个Http块。
- 四层负载均衡:
- 有哪些四层负载均衡器?
- LVS:软负载,即使用软件做负载均衡。在企业中用的最多。已经集成到了Linux上面。
- F5:硬负载,即使用硬件设备做负载均衡。
- Nginx(版本1.9以后)
0x02 使用Nginx搭建四层负载均衡
-
下载Nginx1.9以后版本。emm,这个现在最新版本都是1.17.1了。我这里使用的版本是1.14.0
-
解压文件
-
进入到解压目录。执行命令
./configure --with-stream
,这里我们只带--with-stream
参数。 -
命令执行完后,执行
make && make install
命令。安装Nginx -
好了,现在我们的Nginx可以做四层负载均衡了。那么现在我们来说说,为啥要带
--with-stream
这个参数?- 在Nginx里,使用一个
stream
块来实现四层负载均衡,而这个模块默认是不会带的。所以需要加上这个模块。
- 在Nginx里,使用一个
-
安装好了,那么就来配置吧。照样是编辑
conf/nginx.conf
文件。在里面定义如下内容:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23worker_processes 1;
events {
worker_connections 1024;
}
##定义stream块,和http块同级。我这里直接把http块删除了。
##和http块一样,可以在里面定义server、upstream等,也可以使用proxy_pass转发我们的请求
stream{
## 定义上游服务器,用于负载均衡
upstream server{
server 192.168.25.1:6000;
server 192.168.25.1:6001;
}
# 定义server块,监听我们的请求
server{
## 监听1234端口
listen 1234;
## 转发到上游服务器
proxy_pass server;
}
} -
配置没毛病,相信都能看懂。那么就启动下Nginx看下效果吧。
-
搭建配置说明:
- 使用TCP&UDP测试工具,新建两台服务器。一台端口为6000,一台为60001,也就是上面配置的两台上游服务器。
- 使用TCP&UDP测试工具,新建一个连接。目标ip和端口填写我们Linux的地址和Nginx监听地址。我这里的目标ip为
192.168.25.201
,端口为1234
.图如下:
- 目标效果:
- 当客户端每连接一次,都会连接到不同的服务器上。注意,这里的负载均衡是针对每次连接,而不是收发消息。
-
实际效果说明:
- 首次连接,连接服务器端口为6000.可以相互收发消息
- 断开后再次连接,连接服务器端口为6001.
- 说明可以Nginx四层负载均衡已经搭建成功,并且默认的负载均衡算法也是为轮询。
- 首次连接,连接服务器端口为6000.可以相互收发消息
0x03 总结
- 以上就是我们使用Nginx做四层负载均衡的内容了,使用Nginx做四层负载均衡比使用LVS做四层负载均衡配置更加简单、更加轻量级。下面就让我们总结下该篇说了啥吧。
- 首先我们通过OSI七层互联参考模型来解释了什么是四层负载均衡,什么又是七层负载均衡,并且也说了两者之间的区别。
- 其次我们自己动手使用Nginx搭建了四层负载均衡,并且达到了我们负载均衡的目的。
- 最后,我们来谈谈配置文件。nginx中使用
stream
块来实现四层负载均衡,默认Nginx是不带的,需要在执行./configure
命令时添加参数。stream
块与http
块平级,同样可以和http
块一样,在里面定义upstream
进行负载均衡,也可以proxy_pass
对请求进行转发。
- 以上就是我们所有的内容。下面会带来使用
LVS+keepalived+Nginx
实现双机主从热备,敬请期待。谢谢观看~拜拜~~
评论