Nginx在企业运维中通常用来均衡HTTP协议,例如我们熟知的80、8080、8081等服务。因为大部分的服务都是http请求访问协议,那有时候需要用到TCP协议,如果来实现均衡呢?
默认nginx不支持tcp的负载均衡,需要打补丁,(连接方式:从客户端收到一个连接,将从本地新建一个连接发起到后端服务器。)
接下来正式配置Nginx均衡TCP:
wget http://nginx.org/download/nginx-1.6.2.tar.gz
wget https://github.com/yaoweibin/nginx_tcp_proxy_module/archive/master.zip
源码主页: https://github.com/yaoweibin/nginx_tcp_proxy_module
分别下载两个软件包,然后unzip master.zip解压后如下图:
tar xvf nginx-1.6.2.tar.gz
cd nginx-1.6.2
patch -p1 </root/nginx_tcp_proxy_module-master/tcp.patch
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --add-module=/root/nginx_tcp_proxy_module-master
make
make install
编译完成后,如下图:(有TCP模块参数)
在nginx.conf配置http段之前添加:
tcp {
upstream cluster {
#simple round-robin
server 192.168.33.10:1234;
server 192.168.33.10:2345;
check interval=3000 rise=2 fall=5 timeout=1000;
}
server {
listen 8888;
proxy_pass cluster;
}
}
如上配置之后,访问nginx 8888端口,默认会将请求转发到后端1234 和2345请求。