节点部署
| IP | hostname |
|---|---|
| 192.168.47.126 | master |
| 192.168.47.127 | server |
需求
任务需求:
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版权协议,转载请附上原文出处链接和本声明。