四层负载均衡,七层负载均衡

时间:2022-05-21 05:47:34

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 了