实现Nginx tcp负载均衡:

南楼画角 提交于 2020-01-25 23:38:53

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>
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!