• Keepalived高可用集群应用实践


    一,Keepalived高可用软件

      1,Keepalived介绍

      1.1 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。

      1.2 Keepalived软件主要是通过VRRP协议实现高可用功能的。

      2,Keepalived服务三个重要功能

        2.1 管理LVS负载均衡软件

        2.2 实现对LVS集群节点健康检查功能(healthcheck)

        2.3 作为系统网络服务的高可用功能(failover)

      3,Keepalived高可用故障切换原理

        3.1 Keepalived高可用服务之间的故障切换转移,是通过VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)来实现的。

        3.2 在Keepalived服务正常工作时,主Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活着,当主Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的IP资源及服务。而当主Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。

        bond0是网卡绑定高可用 

    二,Keepalived高可用服务搭建准备

      2.1 环境准备

      

    HOSTNAME

    IP

    说明

    lb01

    192.168.200.138

    Keepalived主服务器(Nginx主负载均衡器)

    lb02

    192.168.200.130

    Keepalived备服务器(Nginx备负载均衡器)

    web01

    192.168.200.136

    web01服务器

    web02

    192.168.200.137

    web02服务器

      2.2 安装Keepalived软件

        [root@lb01 ~]# yum -y install keepalived

        [root@lb01 ~]# rpm -qa keepalived

          keepalived-1.2.7-3.el6.x86_64

        注:上述安装过程需要在lb01和lb02两台服务器上同时安装。

      2.3 启动Keepalived服务并检查

        [root@lb01 ~]# /etc/init.d/keepalived start

        Starting keepalived:                                       [  OK  ]

        [root@lb01 ~]# ps -ef | grep keep | grep -v grep

        root       7111      1  0 11:18 ?        00:00:00 /usr/sbin/keepalived -D

        root       7114   7111  0 11:18 ?        00:00:00 /usr/sbin/keepalived -D

        root       7117   7111  0 11:18 ?        00:00:00 /usr/sbin/keepalived -D

     

        注:启动后有3个Keepalived进程表示安装正确

     

        [root@lb01 ~]# ip add | grep 192.168

            inet 192.168.0.221/24 brd 192.168.0.255 scope global eth0

            inet 192.168.200.16/32 scope global eth0

            inet 192.168.200.17/32 scope global eth0

            inet 192.168.200.18/32 scope global eth0

          注:默认情况会启动三个VIP地址

        

          [root@lb01 ~]# /etc/init.d/keepalived stop

          Stopping keepalived:                                       [  OK  ]

          注:测试完毕后关闭服务,上述测试需要同时在lb01和lb02两台服务器上进行

      2.4 Keepalived配置文件说明

      2.4.1 全局定义(Global Definitions)部分

        [root@lb02 ~]# head -13 /etc/keepalived/keepalived.conf | cat -n

            1  ! Configuration File for keepalived

            2  

         3  global_defs {

            4     notification_email {

                   5       acassen@firewall.loc

                   6       failover@firewall.loc

                   7       sysadmin@firewall.loc

                   8     }

                   9     notification_email_from Alexandre.Cassen@firewall.loc

                  10     smtp_server 192.168.200.1

                  11     smtp_connect_timeout 30

                  12     router_id LVS_DEVEL

                  13  }

          基础参数说明:

          第1行是注释,!开头和#号开发一样,都是注释。
          第2行是空行。
          第3~8行是定义服务故障报警的Email地址。作用是当服务发生切换或RS节点等有故障时,发报警邮件。这几行是可选配置,notification_email指定在Keepalived发生事件时,需要发送的Email地址,可以有多个,每行一个。
          第9行是指定发送邮件的发送人,即发件人地址,也是可选的配置。
          第10行smtp_server指定发送邮件的smtp服务器,如果本机开启了sendmail或postfix,就可以使用上面默认配置实现邮件发送,也是可选配置。
          第11行smtp_connect_timeout是连接smtp的超时时间,也是可选配置。

          注意:
          第4~11行所有和邮件报警相关的参数均可以不配,在实际工作中会将监控的任务交给更加擅长监控报警的Nagios或Zabbix软件。

          第12行是Keepalived服务器的路由标识(router_id).在一个局域网内,这个标识(router_id)应该是唯一的。

       2.4.2 VRRP实例定义区块(VRRP instance(s))部分

        [root@lb02 ~]# sed -n '15,30{=;p}' /etc/keepalived/keepalived.conf | xargs -L2

        15 vrrp_instance VI_1 {

        16 state MASTER

        17 interface eth0

        18 virtual_router_id 51

        19 priority 100

        20 advert_int 1

        21 authentication {

        22 auth_type PASS

        23 auth_pass 1111

        24 }

        25 virtual_ipaddress {

        26 192.168.200.16

        27 192.168.200.17

        28 192.168.200.18

        29 }

        30 }

        

    参数说明:

    第15行表示定义一个vrrp_instance实例,名字是VI_1,每个vrrp_instance实例可以认为是Keepalived服务的一个实例或者作为一个业务服务,在Keepalived服务配置中,这样的vrrp_instance实例可以有多个。注意,存在于主节点中的vrrp_instance实例在备节点中也要存在,这样才能实现故障切换接管。

    第16行state MASTER表示当前实例VI_1的角色状态,当前角色为MASTER,这个状态只能有MASTER和BACKUP两种状态,并且需要大写这些字符。其中MASTER为正式工作的状态,BACKUP为备用的状态。当MASTER所在的服务器故障或失效时,BACKUP所在的服务器会接管故障的MASTER继续提供服务。

    第17行interface为网络通信接口。为对外提供服务的网络接口,如eth0,eth1。当前主流的服务器都有2~4个网络接口,在选择服务接口时,要搞清楚了。

    第18行virtual_router_id为虚拟路由ID标识,这个标识最好是一个数字,并且要在一个keepalived.conf配置中是唯一的。但是MASTER和BACKUP配置中相同实例的virtual_router_id又必须是一致的,否则将出现脑裂问题。

    第19行priority为优先级,其后面的数值也是一个数字,数字越大,表示实例优先级越高。在同一个vrrp_instance实例里,MASTER的优先级配置要高于BACKUP的。若MASTER的priority值为150,那么BACKUP的priority必须小于150,一般建议间隔50以上为佳,例如:设置BACKUP的priority为100或更小的数值。

    第20行advert_int为同步通知间隔。MASTER与BACKUP之间通信检查的时间间隔,单位为秒,默认为1.

    第21~24行authentication为权限认证配置。包含认证类型(auth_type)和认证密码(auth_pass)。认证类型有PASS(Simple Passwd(suggested)),AH(IPSEC(not recommended))两种,官方推荐使用的类型为PASS。验证密码为明文方式,最好长度不要超过8个字符,建议用4位数字,同一vrrp实例的MASTER与BACKUP使用相同的密码才能正常通信。

    第25 ~ 29 行virtual_ipaddress为虚拟IP地址。可以配置多个IP地址,每个地址占一行,配置时最好明确指定子网掩码以及虚拟IP绑定的网络接口。否则,子网掩码默认是32位,绑定的接口和前面的interface参数配置的一致。注意,这里的虚拟IP就是在工作中需要和域名绑定的IP,即和配置的高可用服务监听的IP要保持一致!

  • 相关阅读:
    初探深度学习
    第二次作业:卷积神经网络 part 1
    随笔小记
    Typora实用小工具(AHK)
    第一次作业:深度学习基础
    Nginx HTTPS 部署实战
    win10系统中如何解决cmd中的路径和现在电脑的用户名不一致
    Centos7.5.1804永久生效修改主机名
    centos6.9NAT网络模式
    linux 系统中用root切换到普通用户时显示的异常如bash4.1$
  • 原文地址:https://www.cnblogs.com/gaowei123/p/9966752.html
Copyright © 2020-2023  润新知