实现 Nginx 四层负载均衡

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
喜欢就支持一下吧
点赞0 分享