Nginx在1.9.0版本开始支持tcp模式的负载均衡,在1.9.13版本开始支持udp协议的负载,udp主要用于DNS的域名解析,其配置方式和指令和http 代理类似,其基于ngx_stream_proxy_module模块实现tcp负载,另外基于模块ngx_stream_upstream_module实现后端服务器分组转发、权重分配、状态监测、调度算法等高级功能。
如果编译安装,需要指定 –with-stream 选项才能支持ngx_stream_proxy_module模块
1、tcp负载均衡配置参数
stream { #定义stream相关的服务;Context:main
upstream backend { #定义后端服务器
hash $remote_addr consistent; #定义调度算法
server backend1.example.com:12345 weight=5; #定义具体server
server 127.0.0.1:12345 max_fails=3 fail_timeout=30s;
server unix:/tmp/backend3;
}
upstream dns { #定义后端服务器
server 192.168.1.1:53535; #定义具体server
server dns.example.com:53;
}
server { #定义server
listen 12345; #监听IP:PORT
proxy_connect_timeout 1s; #连接超时时间
proxy_timeout 3s; #转发超时时间
proxy_pass backend; #转发到具体服务器组
}
server {
listen 127.0.0.1:53 udp reuseport;
proxy_timeout 20s;
proxy_pass dns;
}
server {
listen [::1]:12345;
proxy_pass unix:/tmp/stream.socket;
}
}
2、负载均衡实例 : Redis
安装两台后端Redis服务器
配置Nginx
# nginx 配置
[root@nginx01 ~]# vim /apps/nginx/conf/nginx.conf
include /apps/nginx/conf/tcp/tcp.conf; # 此处的include与http模块平级
[root@nginx01 ~]# vim /apps/nginx/conf/tcp/tcp.conf
stream {
upstream redis_server {
server 192.168.1.52:6379 max_fails=3 fail_timeout=30s;
server 192.168.1.11:6379 max_fails=3 fail_timeout=30s;
}
server {
listen 192.168.1.51:6379;
proxy_connect_timeout 3s;
proxy_timeout 3s;
proxy_pass redis_server;
}
}
# 测试
[root@client ~]# redis-cli -a 123456 -h 192.168.1.51 set name test
OK
[root@client ~]# redis-cli -a 123456 -h 192.168.1.51 get name
(nil)
[root@client ~]# redis-cli -a 123456 -h 192.168.1.51 get name
"test"
[root@client ~]# redis-cli -a 123456 -h 192.168.1.51 get name
(nil)
[root@client ~]# redis-cli -a 123456 -h 192.168.1.51 get name
"test"
[root@client ~]# redis-cli -a 123456 -h 192.168.1.51 get name
"test"
[root@client ~]# redis-cli -a 123456 -h 192.168.1.51 get name
(nil)
Mysql部署与Redis相似,可参考配置
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END