Nginx高可用Keeplived

主备模式:主Nginx和备Nignx,加上Keepalived来监控主节点运行状态。
在这里插入图片描述

1. 主节点安装keepalived
// 或下载源码编译
# yum install -y keepalived    // centos redhat
# apt-get keepalived         // ubuntu

在主节点机器/etc/keepalived目录下修改keepalived.conf配置文件:

global_defs {
    notification_email {
        25278885@qq.com // 接收通知邮件列表
    }
	## 发送邮件地址
    notification_email_from 25278885@qq.com

    smtp_server smtp.qq.com
    smtp_connect_timeout 30
	## 标识节点的字符串,通常为hostname
    router_id master_node
}

## keepalived会定时执行脚本并且对脚本的执行结果进行分析,动态调整vrrp_instance的优先级。这里的权重weight 是与下面的优先级priority有关,如果执行了一次检查脚本成功,则权重会-20,也就是由100 - 20 
变成了80,Master 的优先级为80 就低于了Backup的优先级90,那么会进行自动的主备切换。
如果脚本执行结果为0并且weight配置的值大于0,则优先级会相应增加。
如果脚本执行结果不为0 并且weight配置的值小于0,则优先级会相应减少。

vrrp_script chk_nginx {
    script    "/etc/keepalived/chk_nginx.sh"   ## 执行脚本的位置
    interval  2                                ## 检测时间间隔
    weight    -5                               ## 如果条件成立则优先级-5
    fall      2
    rise      1
}
## 定义虚拟路由 VI_1为自定义标识
vrrp_instance VI_1 {
    state MASTER                     ## 主节点为MASTER,备份节点为BACKUP
    interface enp0s8                 ## 绑定虚拟IP的网络接口(网卡)
    mcast_src_ip 192.168.2.137      ## 本机ip地址
    virtual_router_id 137             ## 虚拟路由ID号
    priority 100                     ##优先级配置(0-254的值)
    advert_int 1                     ## 组播信息发送间隔,俩个节点必须配置一致,默认1s
    authentication {                 ## 真实生产环境下对密码进行匹配
        auth_type PASS
        auth_pass 1111
    }
    
    virtual_ipaddress {              ## 虚拟ip(vip),可以指定多个
        192.168.2.20
    }

    track_script {
        chk_nginx
    }
}
2. 从节点安装keepalived

安装过程同上,修改/etc/keepalived/keepalived.conf配置文件:

! Configuration File for keepalived

global_defs {
    notification_email {
        25278885@qq.com // 接收通知邮件列表
    }
	## 发送邮件地址
    notification_email_from 25278885@qq.com

    smtp_server smtp.qq.com
    smtp_connect_timeout 30
	## 标识节点的字符串,通常为hostname
    router_id backup_node
}

## keepalived会定时执行脚本并且对脚本的执行结果进行分析,动态调整vrrp_instance的优先级。这里的权重weight 是与下面的优先级priority有关,如果执行了一次检查脚本成功,则权重会-20,也就是由100 - 20 
变成了80,Master 的优先级为80 就低于了Backup的优先级90,那么会进行自动的主备切换。
如果脚本执行结果为0并且weight配置的值大于0,则优先级会相应增加。
如果脚本执行结果不为0 并且weight配置的值小于0,则优先级会相应减少。

vrrp_script chk_nginx {
    script    "/etc/keepalived/chk_nginx.sh"   ## 执行脚本的位置
    interval  2                                ## 检测时间间隔
    weight    -5                               ## 如果条件成立则优先级-5
    fall      2
    rise      1
}
## 定义虚拟路由 VI_1为自定义标识
vrrp_instance VI_1 {
    state BACKUP                     ## 主节点为MASTER,备份节点为BACKUP
    interface ens33                  ## 绑定虚拟IP的网络接口(网卡),对应本机网卡
    mcast_src_ip 192.168.56.101      ## 本机ip地址
    virtual_router_id 51             ## 虚拟路由ID号
    priority 100                     ##优先级配置(0-254的值)
    advert_int 1                     ## 组播信息发送间隔,俩个节点必须配置一致,默认1s
    authentication {                 ## 真实生产环境下对密码进行匹配
        auth_type PASS
        auth_pass 1111
    }

    virtual_ipaddress {              ## 虚拟ip(vip),可以指定多个
        192.168.2.20
    }

    track_script {
        chk_nginx
    }
}
3. 检查Nginx状态脚本

chk_nginx.sh

#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
    /usr/local/c10k/nginx-1.15.0/sbin/nginx
    sleep 2
    counter=$(ps -C nginx --no-heading|wc -l)
    if [ "${counter}" = "0" ]; then
        /usr/sbin/keepalived stop
    fi
fi

4. 启动

先启动两台机器的Nginx后,再启动Keepalived。
检查:

  • 查看两台机器的IP地址:ip addr, 会出现配置的虚拟IP地址;
  • 在不关闭Keepalived的情况下,Kill掉Nginx,看是否会重启Nginx;
  • 关闭Keepalived的情况下,Kill掉Nginx,看是否会重启Nginx;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值