前面我们都学了nginx作为反向代理服务器,提供浏览器与业务服务器之间的请求代理,也就是说nginx服务器是唯一一个可以让前端访问的服务器,那么问题来了,如果nginx服务器宕机,会导致后端所有业务服务器都不能正常访问,公司所有业务就此中断。就算公司有zabbix等监控服务器能及时通知报警,又能怎样,难道我们每次收到告警后去排查问题,重启nginx?如果排查的时间太久,或者此时运维人员正在憨憨大睡呢?谁还没个吃喝拉撒,所以光靠人工去维护是来不及的。如果我们部署两台nginx,一台A启用,另一台B所为备用,当正在使用的nginx服务器A宕机,另一台备用B顶上去,是不是就能很完美的解决上述我们担忧的问题。接下来让我们一起看看keepalived是如何做到这一功能的。


简介
Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。

工作原理
Keepalived软件主要是通过VRRP协议实现高可用功能的,VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它能够保证当个别节点宕机时,整个网络可以不间断地运行。

  • VRRP协议,全称Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP的出现是为了解决静态路由的单点故障。
  • VRRP是用过IP多播的方式(默认多播地址(224.0.0.18))实现高可用对之间通信的。
  • 工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的资源。备节点可以有多个,通过优先级竞选,但一般Keepalived系统运维工作中都是一对。

Keepalived工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:

Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。

Layer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。

Layer5:Layer5对指定的URL执行HTTP GET。然后使用MD5算法对HTTP GET结果进行求和。如果这个总数与预期值不符,那么测试是错误的,服务器将从服务器池中移除。该模块对同一服务实施多URL获取检查。如果您使用承载多个应用程序服务器的服务器,则此功能很有用。此功能使您能够检查应用程序服务器是否正常工作。MD5摘要是使用genhash实用程序(包含在keepalived软件包中)生成的。

SSL_GET与HTTP_GET相同,但使用SSL连接到远程Web服务器。

MISC_CHECK:此检查允许用户定义的脚本作为运行状况检查程序运行。结果必须是0或1.该脚本在导演盒上运行,这是测试内部应用程序的理想方式。可以使用完整路径(即/path_to_script/script.sh)调用可以不带参数运行的脚本。那些需要参数的需要用双引号括起来(即“/path_to_script/script.sh arg 1 ... arg n”)

 

主要功能

  • 管理LVS负载均衡软件
  • 实现对LVS集群节点健康检查功能 
  • 作为系统网络服务的高可用功能
最后修改于 2020-01-06 09:31:18
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付
上一篇