keepalive由浅入深

1.  keepalived服务介绍

    通过VRRP协议实现高可用功能

2.  keepalived服务的三个重要功能

    1.  管理LVS负载均衡软件

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

    3.  作为系统网络服务的高可用功能

3.  keepalived高可用故障切换转移原理

    1.  keepalived高可用服务之间的故障转移,是通过VRRP协议来实现的。

    2.  什么是VRRP协议?

        虚拟路由冗余协议,早期是用来解决路由交换的单点问题的。

        一组路由器中有一台担当master,其他担当backup,master会组播发包给backup,当master不可用,backup中会重新选举一个master,当master恢复,新的master会自动退位。

4.  keepalived高可用服务安装

    1.  CentOS6

        1.  安装

            yum install keepalived -y

            rpm -qa keepalived

        2.  启动keepalived服务

            /etc/init.d/keepalived start

        3.  配置文件

            /etc/keepalived/keepalived.conf

    2.  CentOS7

        1.  安装

            yum install keepalived -y

            rpm -qa keepalived

        2.  启动服务

            systemctl enable keepalived

            systemctl start keepalived

        3.  配置文件

            /etc/keepalived/keepalived.conf  

    3.  keepalived配置文件详解

        1.  全局配置

global_defs {    #全局配置
    notification_email {   定义报警邮件地址
        yangjianbo@zhen.com    
    }
    notification_email_from yangjianbo@zhen.com  #定义发送邮件的地址
    smtp_server 192.168.200.1   #邮箱服务器 
    smtp_connect_timeout 30      #定义超时时间
    router_id LVS_DEVEL        #定义路由标识信息,相同局域网唯一
}      

        2.  vrrp配置

vrrp_instance VI_1 {   #定义实例
    state MASTER         #状态参数 master/backup 只是说明
    interface eth0       #虚IP地址放置的网卡位置
    virtual_router_id 51 #同一个集群id一致
    priority 100         # 优先级决定是主还是备    越大越优先
    advert_int 1        #主备通讯时间间隔,单位为秒
    authentication {     #
        auth_type PASS    #
        auth_pass 1111    #认证
    }
    virtual_ipaddress {  
        192.168.200.16    #设备之间使用的虚拟ip地址
    }
}

        3.  check配置

virtual_server (@IP PORT)|(fwmark num) {
    delay_loop num  #每隔多少秒,检查RS
    lb_algo rr|wrr|lc|wlc|sh|dh|lblc
    lb_kind NAT|DR|TUN
    (nat_mask @IP)
    persistence_timeout num
    persistence_granularity @IP
    virtualhost string
    protocol TCP|UDP

    sorry_server @IP PORT
    real_server @IP PORT {
        weight num
        TCP_CHECK {
            connect_port num
            connect_timeout num
        }
    }
    real_server @IP PORT {
        weight num
        MISC_CHECK {
            misc_path /path_to_script/script.sh
            (or misc_path “ /path_to_script/script.sh <arg_list>”)
        }
    }
}
    real_server @IP PORT {
         weight num
         HTTP_GET|SSL_GET {
            url { # You can add multiple url block
                path alphanum
                digest alphanum
            }
            connect_port num
            connect_timeout num
            retry num
            delay_before_retry num
    }
}      

5.  keepalived高可用服务单实例单IP

    1.  环境

        系统:CentOS7.2

        主:192.168.2.192

        从:192.168.2.193

        VIP:192.168.2.195

    2.  安装

        yum install keepalived -y

    3.  配置

        1.  全局配置

global_defs {
   router_id LVS_01
}

        2.  vrrp配置

            1.  master

vrrp_instance VI_1 {   #定义实例
    state MASTER         #状态参数 master/backup 只是说明
    interface eth0       #虚IP地址放置的网卡位置
    virtual_router_id 51 #同一个集群id一致
    priority 100         # 优先级决定是主还是备    越大越优先
    advert_int 1        #主备通讯时间间隔,单位为秒
    authentication {     #
        auth_type PASS    #
        auth_pass 1111    #认证
    }
    virtual_ipaddress {  
        192.168.2.196    设备之间使用的虚拟ip地址
    }
}

            2.  backup

global_defs {
   router_id LVS_01
}
vrrp_instance VI_1 {   #定义实例
    state BACKUP         #状态参数 master/backup 只是说明
    interface eth0       #虚IP地址放置的网卡位置
    virtual_router_id 51 #同一个集群id一致
    priority 50         # 优先级决定是主还是备    越大越优先
    advert_int 1        #主备通讯时间间隔,单位为秒
    authentication {     #
        auth_type PASS    #
        auth_pass 1111    #认证
    }
    virtual_ipaddress {
        192.168.2.196    #设备之间使用的虚拟ip地址
    }
}

        3.  日志配置

            1.  修改keepalive配置,vi /etc/sysconfig/keepalived

                将KEEPALIVED_OPTIONS="-D"修改为KEEPALIVED_OPTIONS="-D -S 0" 

            2.  修改vi /etc/rsyslog.conf

                local7.* /var/log/boot.log

                local0.* /var/log/keepalived.log

            3.  重启服务 

                systemctl restart rsyslog

                systemctl restart keepalived      

6.  keepalived高可用服务器的裂脑问题

    1.  原因

        1.  心跳线坏了

        2.  网卡以及相关驱动坏了,IP配置及冲突问题

        3.  心跳间的设备坏了

        4.  高可用服务器的防火墙阻挡了心跳信息传输

        5.  keepalived配置文件virtual_route_id两端参数不一致

    2.  解决keepalived裂脑的常见方案

        1.  只要备用节点出现VIP,就报警。比较简单的方法。

        2.  备用节点出现VIP,主节点也有VIP,就报警。比较严谨的方法。

7.  Keepalive双网卡配置

    1.  环境

        系统:CentOS7.2

        主:  em1: 119.254.109.205  em2: 192.168.1.205  

        从:  eth1:119.254.109.206  eth0: 192.168.1.165 

        VIP:  119.254.109.204

        

    2.  安装

        yum install keepalived -y

        添加防火墙规则:iptables -I INPUT -p vrrp -s 0.0.0.0 -j ACCEPT        

    3.  配置

        1.  主配置           

global_defs {
   router_id LVS_01
}
vrrp_instance VI_205 {   #定义实例
    state MASTER         #状态参数 master/backup 只是说明
    interface em1       #虚IP地址放置的网卡位置
    virtual_router_id **** #同一个集群id一致
    priority 100         # 优先级决定是主还是备    越大越优先
    advert_int 1        #主备通讯时间间隔,单位为秒
    authentication {     #
        auth_type PASS    #
        auth_pass ***    #认证
    }
    virtual_ipaddress {
        119.254.109.204    #设备之间使用的虚拟ip地址
    }
}      

        2.  从配置

global_defs {
   router_id LVS_01
}
vrrp_instance VI_205 {   #定义实例
    state BACKUP         #状态参数 master/backup 只是说明
    interface eth1       #虚IP地址放置的网卡位置
    virtual_router_id *** #同一个集群id一致
    priority 50         # 优先级决定是主还是备    越大越优先
    advert_int 1        #主备通讯时间间隔,单位为秒
    authentication {     #
        auth_type PASS    #
        auth_pass ****    #认证
    }
    virtual_ipaddress {
        119.254.109.204    #设备之间使用的虚拟ip地址
    }
}

8.  Zabbix监控keepalive脑裂

    1.  在从keepalive服务器的zabbix_agent,添加脚本check_keepalive.sh,内容如下:        

#!/bin/bash
#Create by Yangjianbo at 2023-03-03 14:00
function check() {

Count=`ip add show eth1 | grep 119.254.109.204 | wc -l`
if [ $Count -ne 0 ];then
      echo "1"
   else 
      echo "0"
fi

}
check

    2.  创建zabbix参数文件check_keepalive.conf

UserParameter=check_keepalive,/usr/local/zabbix/etc/zabbix_agentd.conf.d/check_keepalive.sh

    3.  在zabbix_agent配置文件,添加一行

        Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/check_keepalive.conf

    4.  在zabbix客户端,添加对应主机的监控项与触发器,报警机制

        1.  监控项

            

        2.  触发器

              

        3.  报警机制

            添加触发器到对应的动作

posted @ 2018-12-23 21:18  奋斗史  阅读(260)  评论(0)    收藏  举报