359025439 发表于 2018-12-29 08:04:39

keepalived 功能 、原理、裂脑


[*]  简介:

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

[*]  常用的功能

[*]  管理LVS负载均衡软件
[*]  对LVS集群节点健康检查功能
[*]  系统网络服务的高可用功能

[*]  原理:keepalived是通过vrrp来实现服务器之间的故障切换转移的,keepalived在正常服务时,主master节点会不断的向备backup节点发送心跳信息(多播的形式),告诉备节点自己还活着,当主节点发生故障时,就无法向备节点发送心跳信息,当备节点无法接收到主节点的心跳信息时,调用自身的接管程序,接管主节点的ip服务资源,当主节点恢复时,备节点会释放主节点故障时自身接管的ip服务资源,回复到备用角色。
[*]  vrrp:虚拟路由冗余协议;主要是解决静态路由的单点故障问题,其是通过竞选机制来确定将路由的任务交给某台vrrp路由器的。

[*]  vrrp是通过ip多播的方式实现高可用之间的通信;
[*]  vrrp通过加密协议对数据进行加密,keepalived使用的是明文方式配置认证类型和密码
[*]  vrrp在正常工作时,是主节点发包,备节点接包,当备节点没有接受到包时,通过竞选,启动接管机制,接管主节点的资源,一般而言,备节点可以有多个,在使用keepalived时,一般是一主一备。


[*]裂脑:

[*]何为裂脑:

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


[*]原因

[*]高可用服务器之间心跳线链路故障

[*]  心跳线坏了
[*]  网卡及相关驱动坏了
[*]  心跳线间连接设备故障

[*]开启iptables,阻挡了心跳信息的传输
[*]心跳网卡地址等信息不正确,导致发送心跳信息失败


[*]预防:

[*]同时使用串行电缆和以太网电缆连接,同时使用两条心跳线
[*]做好监控报警
[*]当有脑裂时,强行关闭一个心跳节点



[*]有关网络高可用的配置(单实例主备):


[*]  采用yum安装,配置文件为/etc/keepalived/keepalived.conf
[*]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                              stateBACKUP                                    
    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
    }                                       }
}                                                 }
[*]router_id LVS_DEVELrouter_id LVS_DEVEL1
[*]state MASTER            stateBACKUP
[*]priority 100            priority 90
[*] #vrrp_strict‘’
[*]systemctl start keepalived

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



页: [1]
查看完整版本: keepalived 功能 、原理、裂脑