1.注意
(1)nginx作为反向代理服务器时,转发到后端服务时,通过命令netstat -nao可知,Foreign Address外部地址为127.0.0.1:xx(由于始终是127.0.0.1本地ip不变,本地端口变化,但是转发目标后端的ip和端口都不变吗,所以受限于四元组,存在端口耗尽风险),所以会受到最大端口数量限制; (2)阿里云ecs默认一块主网卡(eth0),进行虚拟ip配置后,会发生无法连接其他网络服务问题,如阿里云redis得给~
2.进行配置弹性网卡,并绑定,成功后如图:
首先到创建一个弹性网卡,然后到ecs主机的弹性网卡进行绑定,分配弹性ip(手动或自动)
3.添加虚拟ip到eth1网卡:
ifconfig eth1:0 172.17.194.34 netmask 255.255.240.0
ip addr add 172.17.194.34/24 dev eth1:0
ifconfig eth1:1 172.17.194.35 netmask 255.255.240.0
ip addr add 172.17.194.35/24 dev eth1:1
ifconfig eth1:2 172.17.194.36 netmask 255.255.240.0
ip addr add 172.17.194.36/24 dev eth1:2
ifconfig eth1:3 172.17.194.37 netmask 255.255.240.0
ip addr add 172.17.194.37/24 dev eth1:3
ifconfig eth1:4 172.17.194.38 netmask 255.255.240.0
ip addr add 172.17.194.38/24 dev eth1:4
ifconfig eth1:5 172.17.194.39 netmask 255.255.240.0
ip addr add 172.17.194.39/24 dev eth1:5
ifconfig eth1:6 172.17.194.40 netmask 255.255.240.0
ip addr add 172.17.194.40/24 dev eth1:6
ifconfig eth1:7 172.17.194.41 netmask 255.255.240.0
ip addr add 172.17.194.41/24 dev eth1:7
ifconfig eth1:8 172.17.194.42 netmask 255.255.240.0
ip addr add 172.17.194.42/24 dev eth1:8
修改nginx反向代理负载均衡:
upstream talkshow {
server 127.0.0.1:8080;
server 172.17.194.33:8080;
server 172.17.194.34:8080;
server 172.17.194.35:8080;
server 172.17.194.36:8080;
server 172.17.194.37:8080;
server 172.17.194.38:8080;
server 172.17.194.39:8080;
server 172.17.194.40:8080;
server 172.17.194.41:8080;
server 172.17.194.42:8080;
}
server{
listen 8088;
server_name xxx.xxx.net;
#省略
location api{
proxy_pass http://talkshow/api;
}
}
4.看效果
用户端(公网ip + 本地端口) -> nginx (8088端口) -> 后端服务器 (几个弹性内网ip + 8080端口)
以下是演示一i次短连接请求,关闭keep-alive
(1)服务器端进行主动关闭nginx连接,产生time_wait,可见四元组突破65535端口限制
(2)nginx端进行主动关闭连接用户端连接,产生time_wait,可见四元组突破65535端口限制
其他解决办法
(1)直接通过阿里云的slb直接代理转发到后端服务,不再经过nginx,阿里云的slb会有多个ip进行转发到后端服务
(2)进行扩容后端机器,物理突破限制
本文由 GY 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为:
2023/04/26 16:22