我们都知道keepalived是一个高可用的工具,可以检测我们服务器的健康状态,当主机恢复的时候又可以将服务器添加到我们的集群中,作为一种这样高效的高可用软件,一般作为lvs的冗余软件,那么它的原理又是什么呢:
都知道keepalived依赖于vrrp协议实现,vrrp的名字叫路由冗余协议,顾名思义,路由冗余协议就是路由器的高可用协议,在没有这个协议之前,为了不让单个路由器成为本地与外部通信的瓶颈,我们需要配置多个路由器,在这个条件下,内部的主机就必须将自己的网关指向不同的路由器,就相当于单线路的访问,如果这条线路断了,我就不得不手动配置指向其他路由器,这样很麻烦,在协议出现之后,我们照样还是很多台路由器,不同的是,我们的路由有了主备之分,主的路由器负责发送包,而且它的上面有vrrp分配的vip,如果我的备份路由器没有接收到主发来的包,那么默认主机挂了,通过优先级选举出新的主路由,vip也会到我的新的路由器上
而keepalived主从切换的工作原理类似于此:
也有主备之分,一般是在备份机的优先级大于主的优先级之后进行主从的切换一般遵循(主机优先级—备机优先级<备机的权重)设想如果主机的优先级减去备机的优先级依旧大于备机的权重,那么当主机宕机后,也比备机的权重加优先级大,那么就没办法进行选举了,所以我们在最开始设置权重和优先级的时候必须要遵循以上的公式
keepalived的健康检查如何实现
tcp的检查方式:
keepalived向后端服务器发送一个tcp的连接请求,如果后端服务器没响应或者响应超时,那么服务器移除
ping方式:
用ping命令进行连接,如果不行则移除,或者端口检测
脚本检测方法:
用脚本来检测,脚本的返回值为零,检测成功,不是零则检测失败