通过域名访问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为空,而>
1两台业务系统启动着相同的服务,如果有一台故障,另一台自动接管,我们将中国称之为高可用。
2系统可用率算法例:
-1个9:(1-90%)365=365天 ----> 表示该系统1年时间里最多可能的业务中断时间是365天
-2个9:(1-99%)365=365天 ----> 表示该系统1年时间里最多可能的业务中断时间是365天
保证系统可实时不间断的使用。
软件:keepalive
keepalive是通过vrrp(虚拟路由冗余协议)实现高可用。
通常业务系统需要保证7X24小时不down机。比如公司内部OA系统,每天公司人员都需要使用,则不允许down机。作为业务系统来说随时随地地都要求可用。
1安装
2配置[root@lb01 ~]#
3启动
4测试:keepalive高可用地址漂移
(1)keepalive提供一个VIP(虚拟IP)和vmac(虚拟Mac地址)
(2)抓包测试
(1)默认配置为抢占式:
master挂掉,backup上台,master重新启动则讲IP抢占过去。
(2)非抢占式配置:
两台均为backup,在优先级上做区分,如master挂掉,backup上台,则backup变成master,master变为backup。
a两个节点的state均为backup(官方建议)
b两个节点都在vrrp_instance中添加nopreempt
c其中一个节点的优先级要高于另外一个节点
两台服务器角色都启用了nopreempt后,必须修改角色状态统一为backup,唯一的区别就是优先级不同。
keepalive高可用故障脑裂
由于某些原因,导致两台keepalive高可用服务器在指定时间内,无法检测到对方的心跳消息,各自取得资源及服务的所有权,而此时的两台高可用服务器又都还活着。
a服务器网线松动等网络故障
b服务器硬件故障发生损坏现象而奔溃
c主备服务器都开启了firewalld防火墙
解决方法:
配置keepalived使用
Nginx >
欢迎分享,转载请注明来源:内存溢出
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)