文章目录
httpd1、httpd2 准备网站数据
httpd1
yum install httpd -y
echo 192.168.43.27 > /var/www/html/index.html
systemctl start httpd
httpd2
yum install httpd -y
echo 192.168.43.37 > /var/www/html/index.html
systemctl start httpd
keepalived的配置
keepalived1、keepalived2
yum install keepalived -y
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
root@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id keepalived1 // keepalived2
}
vrrp_script check_ngx {
script "/etc/keepalived/check_ngx.sh"
interval 1
weight -30
}
vrrp_instance VI_1 {
state MASTER // BACKUP
interface ens33
virtual_router_id 66
priority 100 // 80
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.43.100/24 dev ens33 label ens33:1
}
track_script {
check_ngx
}
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}
写一个脚本 check_ngx.sh实现监控nginx的服务,只要服务程序没有启动就返回 1,触发 keepalived的优先级由原来的值减去30,每1秒钟执行一次
vim /etc/keepalived/check_ngx.sh
#!/bin/bash
#
killall -0 nginx &> /dev/null || exit 1
通知脚本 notify.sh
只要角色改变就发邮件,角色变为了 backup,就重新启动 nignx
vim /etc/keepalived/notify.sh
#!/bin/bash
#
contact='root@localhost'
notify() {
mailsubject="$(hostname) to be $1, vip floating"
mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
echo "$mailbody" | mail -s "$mailsubject" $contact
}
case $1 in
master)
notify master
;;
backup)
notify backup
systemctl restart nginx
;;
fault)
notify fault
;;
*)
echo "Usage: $(basename $0) {master|backup|fault}"
exit 1
;;
esac
nginx proxy 反向代理的配置
keepalived1、keepalived2
// 放在 http 语句块中
upstream websrvs {
server 192.168.43.27:80;
server 192.168.43.37:80;
}
location / {
proxy_pass http://websrvs;
}
客户端测试
client
while :;do curl 192.168.43.100;sleep 1;done