keepalived 功能 、原理、裂脑


  1. 简介:c#

    1. keepalived设计之初是专为LVS负载均衡软件设计的,用来管理和监控LVS集群系统中的各个服务节点状态,,后来加入实现高可用的VRRP功能。经过vrrp协议实现高可用功能的服务器

  2. 经常使用的功能网络

    1. 管理LVS负载均衡软件负载均衡

    2. 对LVS集群节点健康检查功能ide

    3. 系统网络服务的高可用功能加密

  3. 原理:keepalived是经过vrrp来实现服务器之间的故障切换转移的,keepalived在正常服务时,主master节点会不断的向备backup节点发送心跳信息(多播的形式),告诉备节点本身还活着,当主节点发生故障时,就没法向备节点发送心跳信息,当备节点没法接收到主节点的心跳信息时,调用自身的接管程序,接管主节点的ip服务资源,当主节点恢复时,备节点会释放主节点故障时自身接管的ip服务资源,回复到备用角色。spa

  4. vrrp:虚拟路由冗余协议;主要是解决静态路由的单点故障问题,其是经过竞选机制来肯定将路由的任务交给某台vrrp路由器的。设计

    1. vrrp是经过ip多播的方式实现高可用之间的通讯;router

    2. vrrp经过加密协议对数据进行加密,keepalived使用的是明文方式配置认证类型和密码server

    3. vrrp在正常工做时,是主节点发包,备节点接包,当备节点没有接受到包时,经过竞选,启动接管机制,接管主节点的资源,通常而言,备节点能够有多个,在使用keepalived时,通常是一主一备。

  5. 裂脑:

    1. 何为裂脑:

      1. 因为某种缘由,致使两台高可用服务器在指定是时间内,没法检测到对方的心跳信息,各自取得资源及服务特权,此时两台高可用服务器都还正常运行,致使ip或者服务在两端同时存在而发生冲突。

    2. 缘由

      1. 高可用服务器之间心跳线链路故障

        1. 心跳线坏了

        2. 网卡及相关驱动坏了

        3. 心跳线间链接设备故障

      2. 开启iptables,阻挡了心跳信息的传输

      3. 心跳网卡地址等信息不正确,致使发送心跳信息失败

    3. 预防:

      1. 同时使用串行电缆和以太网电缆链接,同时使用两条心跳线

      2. 作好监控报警

      3. 当有脑裂时,强行关闭一个心跳节点

  6. 有关网络高可用的配置(单实例主备):

    1. 采用yum安装,配置文件为/etc/keepalived/keepalived.conf

    2. global_defs {              							global_defs {                                                      
         notification_email { 									    notification_email {
           acassen@firewall.loc 								    acassen@firewall.loc
           failover@firewall.loc   								    failover@firewall.loc
           sysadmin@firewall.loc   								    sysadmin@firewall.loc
         }                                      		}
         notification_email_from Alexandre.Cassen@firewall.loc 			notification_email_from Alexandre.Cassen@firewall.loc
         smtp_server 192.168.200.1    							    smtp_server 192.168.200.1
         smtp_connect_timeout 30   								    smtp_connect_timeout 30 
         router_id LVS_DEVEL  									    router_id LVS_DEVEL1
         vrrp_skip_check_adv_addr 								    vrrp_skip_check_adv_addr
         #vrrp_strict   									    #vrrp_strict
         vrrp_garp_interval 0  									    vrrp_garp_interval 0
         vrrp_gna_interval 0  									    vrrp_gna_interval 0
      }												}											                                                                 													   
      
      vrrp_instance VI_1 {                            			vrrp_instance VI_1 {    
          state MASTER                                			state  BACKUP                                     
          interface ens33                               			interface ens33                          
          virtual_router_id 51                            			virtual_router_id 51
          priority 100                               			priority 90
          advert_int 1                                			advert_int 1
          authentication {                              			authentication {
              auth_type PASS                             		    auth_type PASS
              auth_pass 1111                             		    auth_pass 1111
          }                                      			}
          virtual_ipaddress {                             			virtual_ipaddress {
              10.0.0.3/24 dev ens33 label ens33:0                    		    10.0.0.3/24 dev ens33 label ens33:0
          }                                       			}
      }                                                 }
    3. router_id LVS_DEVEL  router_id LVS_DEVEL1
    4. state MASTER            state  BACKUP
    5. priority 100            priority 90
    6.  #vrrp_strict‘’
    7. systemctl start keepalived

注意: c  d  e注意区别,f改行要注释掉,原配置文件中没有注释,不注释可能存在问题。这样就能够实现高可用了。

相关文章
相关标签/搜索