Linux keepalived

keepalived简介与工作原理

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

  keepalived工作在IP/TCP协议栈的IP层,TCP层,及应用层,工作原理基于VRRP协议。

  网络层(layer 3):Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包,(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除。

  传输层(layer 4):Keepalived以TCP端口的状态来决定服务器工作正常与否,如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。

  应用层(layer 5):只要针对应用上的一些探测方式,如URL的get请求,或者对nginx脚本检测等;可以根据用户自定义添加脚本针对特定的服务进行状态检测,当检测结果与用户设定不一致,则把这台服务器从服务器群中剔除。

VRRP协议与工作原理

  VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议是一种容错的主备模式的协议,当网络设备发生故障时,可以不影响主机之间通信情况下进行设备切换,并且相对用户时切换过程时透明的。

  路由器开启VRRP功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为主用路由器,优先级低的成为备用路由器。主用路由器拥有虚拟IP与虚拟MAC,实现各种网络功能,并发送VRRP通告报文,通知备用路由器组内的其他路由器自己工作正常;备用路由器则启动定时器等待通告报文。抢占模式下,当备用路由器收到VRRP通告报文后,会将自己的优先级与通告报文中的优先级进行比较。如果大于通告报文中的优先级,则成为主用路由器;否则将保持备用状态。非抢占模式下,只要主用路由器不发生故障,就算备用路由器的优先级再高,也始终保持备用状态。如果备用路由器的定时器超时后仍未收到主用路由器发送来的VRRP通告报文,则认为主用路由器已经无法正常工作,备份组内的路由器根据优先级选举出主用路由器。

  • 一个VRRP路由器有唯一的标识:VRID,范围为0—255。该路由器对外表现为唯一的虚拟MAC地址,地址的格式为00-00-5E-00-01-[VRID]。
  • 同一台路由器可以加入多个备份组,在不同备份组中有不同的优先级,使得该路由器可以在一个备份组中作为主用路由器,在其他的备份组中作为备用路由器。
  • 提供了两种安全认证措施:明文认证和IP头认证。

VRRP选举机制

  1. 虚拟IP拥有者,如果某台路由器的IP地址与虚拟路由器的VIP地址一致,那么这台就会被选为主用路由器。
  2. 优先级较高者,如果没有虚拟IP拥有者,优先级数值大的路由器会被选举出,优先级范围0~255。
  3. IP地址较大者,如果优先级一样高,IP地址数值大的路由器会被选举出。

 keepalived配置组成

  vrrp_instance是虚拟路由实例的配置段,用来定义当前keepalived节点的运行角色为主或是备,定义当前节点的优先级等等信息。

vrrp_instance VI_1 {
# 定义虚拟路由器,实例名称VI_1主备必须相同
    state MASTER
    # 定义此节点为MASTER
    interface eth0
    # 绑定为当前虚拟路由器使用的物理接口
    virtual_router_id 51
    # 设置虚拟路由id,范围0~255,主备必须相同
    priority 100
    # 设置此节点优先级
    advert_int 1
    # 设置主备节点间vrrp通告状态的时间间隔
    authentication {
    # 设置主备间验证方式
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    # 设置虚拟路由VIP
        172.30.200.1
    }
}

  

猜你喜欢

转载自www.cnblogs.com/houyongchong/p/10511584.html
今日推荐