keepalived实现nginx反向代理的高可用

文章目录

在这里插入图片描述
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值