Keepalived 软件实现高可用群集的介绍及环境部署

  • keepalived软件介绍:
    • keepalived起初是专门针对LVS负载均衡设计的一款强大的辅助工具,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。
    • keepalived的作用是检测服务器的状态,如果在高可用的集群中keepalived检测到主服务器宕机的话,会将主服务器在群集中剔除,同时将备份服务器来替代主服务器的工作,当主服务器工作恢复正常时,keepalived会自动将主服务器加入到集群中,恢复主服务器的工作。
  • keepalived的工作原理:
    • keepalived高可用服务器之间的故障切换转移,是通过VRRP(虚拟路由器冗余协议)来实现,在keepalived服务正常工作时,主服务器会不断的向备服务器发送心跳信息,用以告诉备服务器自己还活着,当主服务器发生故障时,就无法发送心跳信息,备服务器就因此无法继续检测来自主服务器的心跳了,于是便开始接管程序,代替主服务的工作,当主服务器节点恢复正常时,备服务器又会停止接管工作,主服务器继续工作。
  • keepalived体系主要模块及其作用:
    • keepalived体系架构中主要有三个模块,分别是core、check、和vrrp。
      • core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
      • vrrp模块:是来实现VRRP协议
      • check模块:负责健康检查,常见方式有端口检查及URL检查
  • VRRP协议:
    • 公有协议,与它类似的协议还有HSRP(热备份路由协议),HSRP属于思科的私有协议。
    • 中文名称虚拟路由冗余协议
    • vrrp是通过一种竞选协议机制来将路由任务交给某台vrrp路由器的。(优先级的比较)
    • vrrp用ip多播的方式(默认地址为:224.0.0.18)实现高可用之间通信
    • 工作时主节点发包,备节点接包,当备节点接收不到主节点发的数据包的时候(时间间隔超过同步通知间隔时间的三倍时),就启动接管程序接管主节点的资源。备节点可以有多个,通过优先级竞选,但一般 Keepalived系统运维工作中都是一对。
    • VRRP使用了加密协议加密数据,但Keepalived官方目前还是推荐用明文的方式配置认证类型和密码
  • 介绍完keepalived之后接下来请看本章实验需要部署的环境:
    • Keepalived 软件实现高可用群集的介绍及环境部署_第1张图片

    • 环境准备(本章实验是在两台LB服务器上实现高可用群集):
      • MASTER/LB1 IP:192.168.8.5
      • BACKUP/LB2 IP: 192.168.8.8
      • WEB1 IP:192.168.8.6
      • WEB2 IP:192.168.8.7
    • 实验目标:对两台负载均衡调度器之间部署高可用群集,一台MASTER,一台BACKUP,实现故障切换,保证了高可用性。
    • 实验步骤:
      • 1.对LB1服务器部署keepalived成为MASTER(主服务器配置):
        • yum -y install keepalived
        • vim /etc/keepalived/keepalived.conf (修改配置文件)
          • 删除默认所有,仅保留一下配置:
          • Keepalived 软件实现高可用群集的介绍及环境部署_第2张图片

          • systemctl start keepalived
      • 2.对LB2进行keepalived备服务器的部署(备服务器):
        • yum -y install keepalived
        • vim /etc/keepalived/keepalived.conf
          • Keepalived 软件实现高可用群集的介绍及环境部署_第3张图片

          • systemctl start keepalived
      • 3.对主服务和备服务器部署完之后进行验证:
        • 正常状态下虚拟ip地址(漂移地址)会出现在主服务器上,而备服务器不会出现,只有当主服务器宕机或keepalived服务不运行时,漂移地址会自动切换到备服务器上,这就是故障切换。
        • 在主服务器上查看是否存在虚拟ip:
          • Keepalived 软件实现高可用群集的介绍及环境部署_第4张图片

        • 查看备服务器是否存在虚拟ip:
        • 测试故障切换:
          • 关闭主服务器上的keepalived服务,再次查看备服务器上是否出现了虚拟ip地址:
            • 主服务器: systemctl stop keepalived
            • ip a show dev ens33
              • Keepalived 软件实现高可用群集的介绍及环境部署_第5张图片

            • 备服务器:
              • ip a show dev ens33
                • 1

                  Keepalived 软件实现高可用群集的介绍及环境部署_第6张图片

        • 至此keepalived高可用部署完毕,接下来说一说一种特殊情况:
        • 高可用脑裂:
          • 高可用节点之间互相失去联系,自认为自己是主服务器,就会出现多主现象,即脑裂现象,主备服务器同时都出现了虚拟地址。
          • 裂脑出现的原因:
            • 心跳线松动或网卡故障
            • 服务器硬件故障,崩溃
            • 节点服务器开启防火墙,却没有做防火墙策略,vrrp例外
            • nginx服务死掉,不会出现裂脑现象,但整个集群都无法正常运作
          • 解决脑裂方案:
            • 检测脑裂脚本(在备服务器上运行)
            • Keepalived 软件实现高可用群集的介绍及环境部署_第7张图片

            • 对主服务器进行无限循环的ping测试,当备服务器可以ping通主服务器,并且备服务器上出现的虚拟ip时,则提示脑裂出现,进行实时的检测。
            • 可以进行检测的测试,当备服务器开启防火墙时,则会发生脑裂,当关闭防火墙时,脑裂则会消失,这是因为当防火墙开启式,并没有做允许VRRP协议通过的流量,也就是说仅仅可以ping通但无法发送vrrp的包,当备服务器收不到主服务发来的包时,则会默认为主服务器死掉,则会接管主服务器的工作,所以会出现两台主设备。
            • 解决因为防火墙引发脑裂的方案:
              • 我们也要开启防火墙做策略,允许vrrp的流量通过:
                • firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
                • firewall-cmd --reload
            • 解决nginx故障造成群集无法工作的方法:
              • 因为keepalived只会检测主机或服务是否运行来决定是否进行故障切换,如果主服务器的nginx服务down掉,同样是不会进行故障切换,因为它不会因为检测应用程序来进行故障切换,但是在我们这个环境中,主服务器的nginx服务如果down掉,整个环境是无法继续运作的,因为我们的高可用群集是建立在LB负载均衡调度器上的,所以我们要确保,故障切换会因为nginx服务来进行切换,不仅仅是因为主服务器宕机,或是keepalived服务关闭。
              • 编辑nginx监控脚本(主服务器):
                • mkdir /sh
                • vim /sh/check_nginx_proxy.sh
                  • Keepalived 软件实现高可用群集的介绍及环境部署_第8张图片

                  • chmod +x /sh/check_nginx_proxy.sh
                • 添加脚本追踪模块到keepalived配置文件:
                  • Keepalived 软件实现高可用群集的介绍及环境部署_第9张图片

                  • Keepalived 软件实现高可用群集的介绍及环境部署_第10张图片

                  • systemctl restart keepalived
                  • 主服务器可以添加计划任务,实时的对nginx应用程序进行检测:
                  • crontab -e
                  • * * * * * /bin/bash /sh/check_nginx_proxy.sh
                  • 主服务器关闭nginx,测试keepalived地址是否漂移。
            • 至此,keepalived高可用群集的部署讲解完结,感谢大家的观看!!!

你可能感兴趣的:(keepalived,网络,linux,云计算,服务器)