Nginx在1.9.0版本开始支持tcp模式的负载均衡,在1.9.13
版本开始支持udp协议的负载,udp主要用于DNS的域名解析,其配置方式和指令和http 代理类似,其基于ngx_stream_proxy_module
模块实现tcp负载,另外基于模块ngx_stream_upstream_module
实现后端服务器分组转发、权重分配、状态监测、调度算法等高级功能。
官方文档:https://nginx.org/en/docs/stream/ngx_stream_core_module.html
四层负载均衡实例–Redis
服务器安装redis
[root@s4 ~]# yum install redis -y
[root@s4 ~]# vim /etc/redis.conf
bind 0.0.0.0
......
[root@s4 ~]# systemctl start redis
[root@s4 ~]# systemctl enable redis
[root@s4 ~]# ss -tnl | grep 6379
LISTEN 0 128 *:6379 *:*
nginx配置
[root@s2 ~]# mkdir /apps/nginx/conf/tcp
[root@s2 ~]# cat /apps/nginx/conf/tcp/tcp.conf #自配置文件
stream {
upstream redis_server {
#hash $remote_addr consistent;
server 192.168.7.104:6379 max_fails=3 fail_timeout=30s;
}
server {
listen 192.168.7.102:6379;
proxy_connect_timeout 3s;
proxy_timeout 3s;
proxy_pass redis_server;
}
}
[root@s2 ~]# vim /apps/nginx/conf/nginx.conf
21 include /apps/nginx/conf/tcp/tcp.conf;
#注意此处的include与http模块平级
#且文档中的http{}下的include的七层负载的路径不能和四次的在同一目录下
如七层负载在include /apps/nginx/conf/tcp/tcp.conf;
四层也在include /apps/nginx/conf/tcp/tcp.conf; 那么就会报错
#重启nginx并访问测试
[root@s2 ~]# systemctl restart nginx
[root@s2 ~]# ss -tnl | grep 6379
LISTEN 0 128 192.168.7.102:6379 *:*
#测试通过nginx 负载连接redis:
[root@s4 ~]# redis-cli -h 192.168.7.102
192.168.7.102:6379> set name jack
OK
192.168.7.102:6379> get name
"jack"
192.168.7.102:6379>
来源:CSDN
作者:goo flush. org
链接:https://blog.csdn.net/weixin_42352759/article/details/103881815