keepalived的部署

节点部署

IPhostname
192.168.47.126master
192.168.47.127server

需求
任务需求:
1.部署keepalived
2.配置keepalived日志
3.配置自定义监测http服务脚本
4.实现主从跳转邮件告警

操作
1.安装keepalived和httpd服务
主节点

[root@master ~]# yum -y install keepalived httpd
[root@master ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
        acassen@firewall.loc      #收件人
   }
   notification_email_from root@admin.com      #发件人  
   smtp_server 127.0.0.1      #发件人地址            
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_httpd {
        script "/usr/local/sbin/check_httpd.sh"      #自定义监控脚本路径
        interval 3
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100      #权重值
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.47.128      #定义VIP
    }
   track_script {
        chk_httpd
}
}

备节点

[root@server ~]# yum -y install keepalived httpd
[root@server ~]# vim /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
   notification_email {
        acassen@firewall.loc
   }
   notification_email_from root@admin.com
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_httpd {
        script "/usr/local/sbin/check_httpd.sh"
        interval 3
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.47.128
    }
   track_script {
        chk_httpd
}
}

2.配置keepalived日志

主节点
[root@master ~]# vim /etc/sysconfig/keepalived 
KEEPALIVED_OPTIONS="-D -d -S 0"
[root@master ~]# vim /etc/rsyslog.conf
local0.*		/var/log/keepa
lived.log
[root@master ~]# service rsyslog restart 
Redirecting to /bin/systemctl restart rsyslog.service
备机点同上

3.配置自定义监控脚本

主节点
[root@master ~]# vim /usr/local/sbin/check_httpd.sh            
#!/bin/bash
d=`date --date today +%Y%m%d_%H:%M:%S`
n=`ps -C httpd --no-heading | wc -l`

if [ $n -eq "0" ];then
systemctl start httpd
n2=`ps -C httpd --no-heading | wc -l`
if [ $n2 -eq "0" ];then
echo "$d httpd down,keepalived will stop" >> /var/log/check_httpd.log
systemctl stop keepalived
fi
fi
[root@master ~]# chmod a+x /usr/local/sbin/check_httpd.sh
备节点同上

4.启动服务,查看ip

主节点
[root@master ~]# systemctl restart keepalived 
[root@master ~]# systemctl restart httpd
[root@master ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:a7:15:fd brd ff:ff:ff:ff:ff:ff
    inet 192.168.47.152/24 brd 192.168.47.255 scope global noprefixroute dynamic ens33
       valid_lft 1129sec preferred_lft 1129sec
    inet 192.168.47.128/32 scope global ens33
       valid_lft forever preferred_lft forever      #VIP生成
    inet 192.168.47.126/24 brd 192.168.47.255 scope global secondary noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::a061:5356:4989:d092/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
备节点同上

5.节点跳转测试

主节点关闭服务,查看ip
[root@master ~]# systemctl stop keepalived
[root@master ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:a7:15:fd brd ff:ff:ff:ff:ff:ff
    inet 192.168.47.152/24 brd 192.168.47.255 scope global noprefixroute dynamic ens33
       valid_lft 1797sec preferred_lft 1797sec
    inet 192.168.47.126/24 brd 192.168.47.255 scope global secondary noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::a061:5356:4989:d092/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
再查看备节点ip
[root@server ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:42:9e:c9 brd ff:ff:ff:ff:ff:ff
    inet 192.168.47.128/24 brd 192.168.47.255 scope global noprefixroute dynamic ens33      #跳转成功
       valid_lft 1689sec preferred_lft 1689sec
    inet 192.168.47.127/24 brd 192.168.47.255 scope global secondary noprefixroute ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::6cf8:4b7c:ce0e:5c1/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

6.安装senmail,配置邮件

主节点
[root@master ~]# yum install -y sendmail* mailx
[root@master ~]# vim /etc/mail.rc 
添加
set from=xxx@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=xxxxxx@qq.com
set smtp-auth-password=******      #smtp码
set smtp-auth=login
[root@master ~]# systemctl restart sendmail
备节点同上

7.编写自定义邮件发出脚本,检测主从跳转变化

主节点
[root@master ~]# vim /etc/keepalived/notify.sh
#! /bin/bash
notify(){
        mailsubject="$(hostname) to be $1:vip floating"
        mailbody="$(date +'%Y%m%d%H'): vrrp transition, $(hostname):changed to be $1"
        echo $mailbody | mail -s "$mailsubject" 2945294692@qq.com
}
case $1 in
master)
        notify master
        exit 0
;;
backup)
        notify backup
        exit 0
;;
fault)
        notify fault
        exit 0
;;
*)
        echo "Usage:$(basename $0) {master|backup|fault}"
        exit 1
;;
esac
[root@master ~]# chmod 755 /etc/keepalived/notify.sh      #脚本授权
[root@master ~]# vim /etc/keepalived/keepalived.conf
在vrrp_instance VI_1下添加
notify_master "/bin/bash/etc/keepalived/notify.sh master"
notify_backup "/bin/bash/etc/keepalived/notify.sh backup"
notify_fault "/bin/bash/etc/keepalived/notify.sh fault"
[root@master ~]# systemctl restart keepalived
测试
[root@master keepalived]# ./notify.sh master
邮箱查看
备节点同上

8.邮件告警测试

[root@master ~]# pkill keepalived
[root@master ~]# systemctl restart keepalived

停掉主节点服务后,
当master节点停止服务后,backup节点而发送邮件通知

在这里插入图片描述


版权声明:本文为qq_46464118原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。