角色 IP地址 主机名
负载01 10002 LB01
负载02 10003 LB02
虚拟服务 10004
两台nginx负载均衡+keepalive实现负载高可用两台LB的IP地址分别为:10002、10003 keepalive的vip为:10004,当10002正常在vip工作在10002,10003服务出现宕机则vip自动跳转到10003的LB
我们可以看见两台LB中的负载配置相同,server name为vip,当请求到达vip所在的LB服务器则会代理到对应的node池进行负载均衡,通过keepalive的vip漂移为我们的服务提供高可用,保障网站724提供服务
通过演示视频我们模拟LB01宕机,发现vip漂移至第二台LB并且这个切换对于用户是无感知的,今天nginx+keepalive的测试就到这里谢谢!
主备服务器因为硬件或者软件问题(网线松动或者nginx进程)造成keepalived服务无法检测到心跳信息,nginx服务down掉keepalive还在正常运行没有进行主备切换等等都会造成高可用没有达到理想的效果我们可以通过主备机脚本来规避这些因素造成keepalive无法正常主备切换
主机能不通,VIP在备机则认为非正常主备切换可能主机状态正常vip在主备机都存在
判断主机nginx服务是否正常,如果nginx服务down掉尝试启动,如果nginx尝试启动未成功则停掉主机keepalive服务切换至备机保证业务正常运行
通过以上两个脚本检测,我们能够做到规避主备之间心跳检测不正常,但是主备机服务正常会存在主备之间都会有VIP导致负载脑裂的问题以及负载服务down掉,keepalive服务正常导致业务中断问题。使用wrk压测,待测服务多节点
通过域名访问nginx对比直连,压测时性能损耗很大的问题
1) 原因:经查询TCP状态,通过nginx压测时,目标服务器会出现大量TIME_WAIT
ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}'
2) 为什么:TCP释放连接,服务端发送FIN至进入CLOSED状态的时间间隔
在 高并发短连接 的TCP服务器上,当服务器处理完请求后立刻主动正常关闭连接。这个场景下会出现大量socket处于TIME_WAIT状态
所以问题定位到应该是nginx的connection可能不是keepalive
3) tcpdump流量,由nginx转发的数据header → Connection: close;由直连方式请求的数据header为空,而>
TCP keepalive 和 >傻傻分不清的TCP keepalive和>
欢迎分享,转载请注明来源:内存溢出
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)