linux keepalive tcp keepalive机制

各位老铁们好,相信很多人对linux keepalive都不是特别的了解,因此呢,今天就来为大家分享下关于linux keepalive以及tcp keepalive机制的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

TCP漫谈之keepalive和time_wait

本文主要探讨TCP协议中的两个关键概念:keepalive和time_wait状态。TCP作为有状态协议,通过三次握手建立连接,四次挥手关闭连接,但这种机制可能导致连接资源占用过久。为解决这个问题,TCP引入了keepalive机制,通过定期发送探测包检查连接状态,避免连接长时间占用端口。默认情况下,Linux系统中的keepalive时间为2小时,并在期间发送9次探测。在Go语言的旧版本中,如果不正确处理,可能导致连接泄露。

另外,TCP的time_wait状态是在连接关闭后的一个阶段,它延迟进入closed状态,以防止“迷路的数据包”导致数据接收混乱和因最后一个ack丢失导致的连接拒绝。time_wait状态在高并发环境中,通过net.ipv4.tcp_tw_reuse参数可复用,但需注意,Linux默认开启的时间戳策略能解决部分问题,而tcp_tw_recycle参数可能导致NAT环境下的问题,因此不推荐使用。

总的来说,TCP keepalive和time_wait状态是协议设计中的重要考虑,以确保网络连接的可靠性和资源的有效管理。理解这些机制对于优化网络应用和解决常见问题至关重要。

TCP的KeepAlive

本文主要探讨TCP协议中的KeepAlive功能,尽管QUIC协议也有类似机制,但这里主要聚焦于TCP。KeepAlive并非TCP规范的一部分,但在众多操作系统中普遍存在,它通过定时发送探测包检测连接状态,作用重大。

首先,KeepAlive的应用主要体现在:

检测挂断连接:如服务中断、网络波动等情况下,KeepAlive能及时识别并避免复用已挂断的连接,减少失败率。

防止连接断连:类似于心跳机制,保持数据交互的活跃性。

开启KeepAlive的步骤包括在socket创建后使用setsockopt函数设置SO_KEEPALIVE选项,以及在Linux系统中通过修改全局配置文件设定参数。举例来说,面试中可能会遇到的问题是区分主机断电与进程崩溃对TCP连接的影响:前者会导致连接保持,后者则会触发正常关闭流程。

总之,KeepAlive在维护TCP连接稳定性方面至关重要。更多网络知识,欢迎关注公众号“网络小菜鸟”。

keepalive集群工作原理及应用

1、系统的扩展方式

2、集群类型

1、集群的实现

2、HA集群的实现

HA Nginx Proxy Service需要的关键资源

AIS可用性委员组,规定高可用集群线

1、集群的分裂(partion)

被称之为集群的分区(partion)也被称之为脑裂(brain-split))为了避免出现分裂,事先做好决策,在每个主机上都有一票,票数多的将获取主节点。如果一个服务器性能好,可以有2票。

2、多节点使用同一个共享存储

在集群发生分裂的情况下,可能会引发多节点同时对一个块级别的共享存储写一个文件,这样会导致文件系统损坏

VRRP协议

VRRP全称 Virtual Router Redundancy Protocol,即虚拟路由冗余协议。可以认为它是实现路由器高可用的容错协议,即将N台提供相同功能的路由器组成一个路由器组(Router Group),这个组里面有一个master和多个backup,但在外界看来就像一台一样,构成虚拟路由器,拥有一个虚拟IP(vip,也就是路由器所在局域网内其他机器的默认路由),占有这个IP的master实际负责ARP相应和转发IP数据包,组中的其它路由器作为备份的角色处于待命状态。master会发组播消息,当backup在超时时间内收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master,保证路由器的高可用。

虚拟路由冗余协议(virtual router redundancy protocol,简称VRRP),是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,1998年已推出正式的RFC2338协议标准,VRRP广泛应用在边缘网络中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器,以及及时在实际第一跳路由器使用失败的情形下仍能够维护路由器间的连通性。

VRRP术语

VRRP工作过程

路由通告的工作原理

VRRP实现的工作

VRRP认证方式

VRRP高可用工作模型

keepalived程序是vrrp协议在linux主机上以守护进程方式的实现,能够根据配置文件生成IPVS规则,并对各real server的健康做检测,以及Loadbalance主机和backup主机之间failover的实现,keepalived在Centos6.4+收录到了发行版光盘中。

Keepalived高可用集群配置前提

Keepalived的程序环境

/etc/keepalived/keepalived.conf

Global指令

VRRP_instance指令

阅读剩余
THE END