安装过程

测试环境 CentOS7

Nginx1.9开始支持tcp层的转发,通过stream实现的,而socket也是基于tcp通信。
stream模块默认不安装的,需要手动添加参数:–with-stream,官方下载地址:download,根据自己系统版本选择nginx1.9或以上版本。

首先安装Nginx

wget http://nginx.org/download/nginx-1.2.4.tar.gz
wget https://github.com/yaoweibin/nginx_tcp_proxy_module/tarball/master
tar xvf nginx-1.2.4.tar.gz
tar xvf master
cd nginx-1.2.4
yum -y install patch
yum -y install pcre-devel
yum install -y zlib-devel
yum -y install openssl openssl-devel
patch -p1 < ../yaoweibin-nginx_tcp_proxy_module-121c026/tcp.patch
yum -y install gcc
./configure --add-module=/root/yaoweibin-nginx_tcp_proxy_module-121c026 这里要使用实际的地址
make
make install

修改配置文件

cd /usr/local/nginx/conf
vim nginx.conf
#user  nobody;
worker_processes 1;

events {
worker_connections 1024;
}
tcp{
upstream test1 {
server 192.10.200.203:9999;
server 192.10.200.111:9999;
check interval=60000 rise=2 fall=5 timeout=10000 type=tcp;
}
server {
listen 9999;
server_name 192.10.200.94;
proxy_pass test1;

so_keepalive on;
tcp_nodelay on;
}
}

参数说明
- interval nginx服务器检测server是否存活的时间间隔,短连接。
在windows下有些指令不支持:

#user  nobody;
worker_processes 1;

events {
worker_connections 1024;
}
stream{
upstream test1 {
server 192.10.200.203:9999;
server 192.10.200.111:9999;type=tcp;
}
server {
listen 9999;
proxy_pass test1;
}
}

启动nginx

cd /usr/local/nginx/sbin/
./nginx
lsof -i :9999
# 重启命令
./nginx -s reload
# 指定conf地址
./nginx -c /usr/local/nginx/conf/nginx.conf

Nginx 4层负载均衡测试_nginx

测试

共有3台机器参与测试:

  • 192.10.200.94 安装nginx
  • 192.10.200.203 监听9999TCP端口
  • 192.10.200.111 监听9999TCP端口

建立连接并发送:
Nginx 4层负载均衡测试_github_02

在/usr/local/nginx/logs/tcp_access.log
可以看到连接日志。
在连接不中断的情况下,TCP连接会一直连接到固定的服务端。
Nginx 4层负载均衡测试_centos_03

本文参考文章 :
​​​http://yaoweibin.github.io/nginx_tcp_proxy_module/​