nginx利用ngx_stream_core_module实现四层的负载均衡服务。作为四层负载均衡nginx和lvs的区别在于:
lvs工作于内核层,相对来说效率更高,性能更强;
nginx工作于用户空间;
lvs不会受到套接字数量的限制;
nginx作为四层负载均衡也需要监听套接字来和客户端,后台服务器进行连接,会受到套接字数量限制,不过这个问题可以通过keepalive长连接来避免;
一、实验环境
此次实验基于三台服务器实现,分别负载httpd服务、ssh服务和mysql服务:
-
nginx四层负载均衡器:192.168.11.100
-
内网真实服务器RS-1:192.168.11.201;
-
内网真实服务器RS-2:192.168.11.202;
二、实验配置步骤:
内网服务器配置:
-
内网两台服务器分别安装nginx、和mysql服务,并开启相关服务
yum install -y nginx mariadb-server
nginx负载均衡器配置:
-
修改/etc/nginx/nginx.conf配置文件:
#定义http、mysql和ssh的负载均衡集群并调用,默认算法为rr(轮询)# stream { upstream websrvs { server 192.168.11.201:80; server 192.168.11.202:80; } upstream mysqlsrvs { server 192.168.11.201:3306; server 192.168.11.202:3306; } upstream sshsrvs { server 192.168.11.201:22; server 192.168.11.202:22; } server { listen 80; proxy_pass websrvs; } server { listen 10022; proxy_pass sshsrvs; } }
-
测试是否可行:
-
测试http:
-
测试ssh:
可以看到两次登录的主机名完全不一样
-
测试mysql:
在一个数据库建立新库,名字为testdb,另一个不建立,然后用for循环查询库即可看到结果:
可以看到每次呈现的数据库都不一样,所以说明是通过轮询方法连接到两台不同的数据库了。
-
原创文章,作者:王子豪,如若转载,请注明出处:http://www.178linux.com/79335