1,简介四层负载均衡 七层负载均衡
四层负载均衡,在网络模型中的传输层中,基于主要是基于tcp协议报文实现负载均衡(比如LVS、haproxy就是四层负载均衡器),使用改写报文的源地址和目的地址。
nginx 1.9 之后也可以通过配置实现四层负载均衡。四层负载均衡支持所有的负载均衡功能比如数据库,web 服务器等。
七层负载均衡,在网络模型中应用层中,基于URL或者HTTP协议实现负载均衡,Web服务器。nginx 是七层负载均衡器。
2,基于nginx 1.9 搭建四层负载均衡
1,安装一些包
1.安装gcc gcc-c++(如新环境,未安装请先安装)
$ yum install -y gcc gcc-c++
2.安装wget
$ yum -y install wget
2.安装PCRE库
$ cd /usr/local/
$ wget http://jaist.dl.sourceforge.net/project/pcre/pcre/8.33/pcre-8.33.tar.gz
$ tar -zxvf pcre-8.33.tar.gz
$ cd pcre-8.33
$ ./configure
$ make && make install
如果报错:
在 linux 中执行 wget 命令提示 -bash: wget: command not found 解决方法
解决办法 yum -y install wget
3.安装SSL库
$ cd /usr/local/
$ wget http://www.openssl.org/source/openssl-1.0.1j.tar.gz
$ tar -zxvf openssl-1.0.1j.tar.gz
$ cd openssl-1.0.1j
$ ./config
$ make && make install
4.安装zlib库存
$ cd /usr/local/
$ wget http://zlib.net/zlib-1.2.11.tar.gz
$ tar -zxvf zlib-1.2.11.tar.gz
$ cd zlib-1.2.11
$ ./configure
$ make && make install
5.安装patch
yum -y install patch 安装即可
2,安装Nginx
wget http://nginx.org/download/nginx-1.9.10.tar.gz
安装nginx_tcp_proxy_module 插件
wget https://github.com/yaoweibin/nginx_tcp_proxy_module/tarball/master
解压
tar -zxvf master,解压之后可以看到一个yaoweibin-nginx_tcp_proxy_module-b8a3028
tar -zxvf nginx-1.9.10.tar.gz
cd nginx-1.9.10,下载tcp.patch最新补丁
patch -p1 < ../yaoweibin-nginx_tcp_proxy_module-b8a3028/tcp.patch
如果报错
-bash: patch: 未找到命令 执行 yum -y install patch 安装即可。
编译Nginx
./configure --add-module=../yaoweibin-nginx_tcp_proxy_module-b8a3028
make && make install
如果报错
In file included from ../nginx_tcp_proxy_module-master/ngx_tcp.h:32,
from ../nginx_tcp_proxy_module-master/ngx_tcp.c:5:
../nginx_tcp_proxy_module-master/ngx_tcp_upstream.h:144: error: expected specifier-qualifier-list before 'ngx_resolver_addr_t'
make[1]: *** [objs/addon/nginx_tcp_proxy_module-master/ngx_tcp.o] Error 1
make[1]: Leaving directory `/opt/apps_install/nginx-1.9.9'
make: *** [build] Error 2
cd /usr/local/yaoweibin-nginx_tcp_proxy_module-b8a3028 找到ngx_tcp_upstream.h
修改第三方模块包里的头文件,ngx_tcp_upstream.h 144 行将ngx_resolver_addr_t 改为 ngx_addr_t
3,配置nginx.conf,并且启动
tcp {
### 定义多个上游服务器
upstream aiyuesheng{
### 定义TCP模块上游服务器
server 192.168.178.1:8001;
server 192.168.178.1:8002;
}
server {
listen 9999;
server_name 192.168.178.110;
### 反向代理upstream
proxy_pass aiyuesheng;
}
}
4,在tcp 测试工具里面添加客户端 和 服务器
服务器是本地的物理机ip 地址,两个服务
客户端是虚拟机配置者四层负载均衡的linux 服务
客户端主动连接之后,因为nginx 轮询机制,会连接其中一台服务器,断开连接之后,再次连接,会连接另一台。
因为是TCP 四层负载均衡使用的是长连接,只要客户端和服务器保持连接,就不会轮询到下一台机器。
这样,四层负载均衡就配置OK 了