NettyTcp负载均衡(上)Nginxnettynginx负载均衡阅读约6分钟nettynginx负载均衡阅读约6分钟为什么要负载均衡随着设备连接数增多,单台服务器支撑的TCP长 Netty Tcp 负载均衡(上)----Nginx netty
Netty Tcp 负载均衡(上)----Nginx netty nginx 负载均衡 阅读约 6 分钟 为什么要负载均衡
随着设备连接数增多,单台服务器支撑的TCP长连接数有限,这个时候程序架构就需要改变,一般都会采取横向扩展,增加多台服务器程序。怎么将TCP长连接均衡的路由到不同的服务器,这个时候就需要实现负载均衡了。
两种不同的场景和方案
目前笔者想到的两种应用场景是:
方案一:Nginx实现负载均衡
1. 安装Nginx参考的资料:https://my.oschina.net/ouyush...参考的资料:http://www.jiagoumi.com/work/...(0)安装依赖的软件
(1)下载:wget http://nginx.org/download/ngi...
(2)解压:执行指令
tar -xzvf nginx-1.12.2.tar.gz -C 你的目录(3)配置: 需要添加 with-stream参数 nginx tcp负载均衡需要
./configure --prefix=/opt/nginx-1.9.3 --with-http_stub_status_module --with-http_realip_module --with-http_ssl_module --with-pcre --with-http_realip_module --with-stream(4)make
(5)make install nginx会安装到特定的文件夹 /opt,如果一开始把源码包下载到改目录,编译安装时会提示类似错误
把源码包移到其它目录就能解决。
2.修改nginx.conf添加负载均衡配置官方样例:
worker_processes auto;error_log /var/log/nginx/error.log info;events { worker_connections 1024;}stream { upstream backend { hash $remote_addr consistent; server backend1.example.com:12345 weight=5; server 127.0.0.1:12345 max_fails=3 fail_timeout=30s; server unix:/tmp/backend3; } upstream dns { server 192.168.0.1:53535; server dns.example.com:53; } server { listen 12345; proxy_connect_timeout 1s; proxy_timeout 3s; proxy_pass backend; } server { listen 127.0.0.1:53 udp; proxy_responses 1; proxy_timeout 20s; proxy_pass dns; } server { listen [::1]:12345; proxy_pass unix:/tmp/stream.socket; }}自定义测试配置为:
#tcp load balancestream{ #更多更详细的参数,查看文档或网络 upstream netty_test{ server 192.168.0.26:6666 weight=1; server 192.168.0.26:6667 weight=1; } server{ listen 6665; proxy_pass netty_test; }}http { include mime.types; default_type application/octet-stream; ...以上配置只是为了方便测试,因此配置的较为简陋,生产环境中,详细配置请看官方样例。相关端口不要忘记开放,会存在防火墙导致无法连接的情况。
3.连接测试启动两个netty服务器程序,在生产环境中会部署到不同的服务器,这里测试,在同一台PC上启动两个netty程序,端口分别为6666和6667。使用客户端连接192.168.0.26:6665,当建立4个连接时,客户端会被平均路由到 192.168.0.26:6666和6667两个server
Nginx socket负载