前言本文是在腾讯云CVM下,搭建云服务器keepalived+nginx主备热备+双机热备

一、【环境搭建

1、环境准备

2、nginxkeepalived安装

nginx安装自行百度,下面介绍安装keepalived

安装keepalived

yum install -y keepalived

常用命令

#启动
systemctl start keepalived
#停止
systemctl stop keepalived
重启# 
systemctl restart keepalived
#查看状态
systemctl status keepalived
#设置开机启动
systemctl enable keepalived
#关闭开机启动
systemctl disable keepalived

配置keepalived.conf:

vim /etc/keepalived/keepalived.conf

二、【keepalived相关配置

1、nginx脚本 创建 check_nginx.sh 文件判断nginx进程没有数值尝试重启nginx服务,睡眠2秒,再判断nginx进程没有数值没有停止keepalived服务,高可用虚拟ip则会自动转到备机。

cd /etc/keepalived
vim check_nginx.sh

check_nginx.sh 内容

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

2、keepalived邮件报警配置

说明 实际生产中不适用keepalived自带的邮件功能,所以使用shell脚本发邮件实现报警。

linux 配置发邮件参考Linux(centos8) 腾讯云CVM配置SMTPS发邮件

创建 notify.sh 文件

cd /etc/keepalived
vim check_nginx.sh

notify.sh 内容

#!/bin/bash
contact=lisuibi@163.com #接收报警的邮箱
notify() {
   mailsubject="$(hostname) to be $1, vip转移"
   mailbody="$(date +'%F %T'): vrrptransition, $(hostname) changed to be $1"
   echo "$mailbody" | mail -s "$mailsubject" $contact
}
case $1 in
master)
   notify master
   ;;
backup)
   notify backup
   ;;
fault)
   notify fault
   ;;
*)
   echo "Usage: $(basename$0) {master|backup|fault}"
   exit 1
   ;;
esac

以上就是keepalived邮件报警shell脚本

3、主备热备模式

keepalived 配置

此配置为主备热备模式配置
配置文件位置

/etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf

服务器配置:在 服务器172.16.0.7 上, VIP设置为172.16.0.8,配置如下

! Configuration File for keepalived
global_defs {
     router_id LVS_DEVEL1  #主机标识全局唯一
}
#检测Nginx是否存活脚本
vrrp_script check_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 2
    weight -5
}
vrrp_instance VI_1 {
    state MASTER            # 设置初始状态(MASTER 主机)
    interface eth0          # 设置绑定 VIP 的网卡 例如 eth0 (ip addr查看网卡
    virtual_router_id 51    # 配置集群 virtual_router_id
    nopreempt               # 设置非抢占模式
    # preempt_delay 10      # 仅 state MASTER 时生效
    priority 150            # 权重
    advert_int 5
    authentication {
      auth_type PASS
      auth_pass 1111
    }
    unicast_src_ip 172.16.0.7  # 设置本机内网IP地址
    unicast_peer {
      172.16.0.9             # 对端设备的 IP 地址
    }
    virtual_ipaddress {
      172.16.0.8           # 设置高可用虚拟 VIP
    }
    #配置keepalived发生故障转移时,触发执行脚本
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
    notify_stop "/etc/keepalived/notify.sh stop"
    garp_master_delay 1    # 设置当切为主状态后多久更新 ARP 缓存
    garp_master_refresh 5   # 设置主节点发送 ARP 报文时间间隔
    track_interface {
       eth0               # 使用绑定 VIP 的网卡 例如 eth0
    }
    track_script {
        check_nginx
    }
}

备用服务器备用服务器172.16.0.9 上,配置跟主服务器一样,就三不同相同
1. router_id 不同
2. state BACKUP不同
3. priority不同
4. virtual_router_id 必相同

配置如下

! Configuration File for keepalived
global_defs {
    router_id LVS_DEVEL2  #主机标识全局唯一
}
#检测Nginx是否存活脚本
vrrp_script check_nginx {
  	script "/etc/keepalived/check_nginx.sh"
  	interval 2
    weight -5
}
vrrp_instance VI_1 {
    # 注意主备参数选择
    state BACKUP            # 设置初始状态(BACKUP 备用)
    interface eth0          # 设置绑定 VIP 的网卡 例如 eth0 (ip addr查看网卡)
    virtual_router_id 51    # 配置集群 virtual_router_id 值
    nopreempt               # 设置非抢占模式
    # preempt_delay 10      # 仅 state MASTER 时生效
    priority 100            # 权重
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    unicast_src_ip 172.16.0.9  # 设置本机内网 IP 地址
    unicast_peer {
        172.16.0.7          # 对端设备的 IP 地址
    }
    virtual_ipaddress {
        172.16.0.8          # 设置高可用虚拟 VIP
    }
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
    notify_stop "/etc/keepalived/notify.sh stop"
    garp_master_delay 1    # 设置当切为主状态后多久更新 ARP 缓存
    garp_master_refresh 5   # 设置主节点发送ARP报文时间间隔
    track_interface {
        eth0               # 使用绑定 VIP 的网卡 例如 eth0
    }
    track_script {
       check_nginx
    }
}
启动keepalived测试查看高可用虚拟ip

重启两台keepalived

syetemctl restart keepalived

ip addr 查看ip,可以看到VIP在主服务器上。

在这里插入图片描述
1、测试下VIP是否可用:
在这里插入图片描述
2、停止主服务器keepalived,查看vip是否漂移
在这里插入图片描述
在停止主服务器keepalived后,再请求地址查看结果,均请求的备用服务器
在这里插入图片描述
至此,keepalived+nginx 主备热备模式完成

4、双机热备模式

– keepalived 配置

此配置为双机热备模式配置

当了解主备模式配置后,双机模式就容易配置多了。只需要每台keepalived配置文件,加上一个vrrp_instance命名vrrp_instance VI_2即可更改几个参数,设置另外一个VIP:172.16.0.6

172.16.0.7服务器(keep1) keepalive配置:

! Configuration File for keepalived
global_defs {
    router_id LVS_DEVEL1  #主机标识全局唯一
}

#检测Nginx是否存活脚本
vrrp_script check_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 2
    weight -5
}

vrrp_instance VI_1 {
    state MASTER            # 设置初始状态(MASTER 主机)
    interface eth0          # 设置绑定 VIP 的网卡 例如 eth0 (ip addr查看网卡)
    virtual_router_id 51    # 配置集群 virtual_router_id 值
    nopreempt               # 设置非抢占模式,
    # preempt_delay 10      # 仅 state MASTER 时生效
    priority 150            # 权重
    advert_int 5
    authentication {
      auth_type PASS
      auth_pass 1111
    }
    unicast_src_ip 172.16.0.7  # 设置本机内网IP地址
    unicast_peer {
      172.16.0.9             # 对端设备的 IP 地址
    }
    virtual_ipaddress {
      172.16.0.8           # 设置高可用虚拟 VIP
    }
    #配置keepalived发生故障转移时,触发执行的脚本
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
    notify_stop "/etc/keepalived/notify.sh stop"
    garp_master_delay 1    # 设置当切为主状态后多久更新 ARP 缓存
    garp_master_refresh 5   # 设置主节点发送 ARP 报文时间间隔
    track_interface {
       eth0               # 使用绑定 VIP 的网卡 例如 eth0
    }
    track_script {
        check_nginx
    }
}

vrrp_instance VI_2 {
    # 注意主备参数选择
    state BACKUP            # 设置初始状态
    interface eth0          # 设置绑定 VIP 的网卡 例如 eth0
    virtual_router_id 52    # 配置集群 virtual_router_id 值
    nopreempt               # 设置非抢占模式,
    # preempt_delay 10      # 仅 state MASTER 时生效
    priority 100            # 权重
    advert_int 5
    authentication {
      auth_type PASS
      auth_pass 1111
    }
    unicast_src_ip 172.16.0.7  # 设置本机内网IP地址
    unicast_peer {
      172.16.0.9             # 对端设备的 IP 地址
    }
    virtual_ipaddress {
      172.16.0.6           # 设置高可用虚拟 VIP
    }
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
    notify_stop "/etc/keepalived/notify.sh stop"
    garp_master_delay 1    # 设置当切为主状态后多久更新 ARP 缓存
    garp_master_refresh 5   # 设置主节点发送 ARP 报文时间间隔
    track_interface {
       eth0               # 使用绑定 VIP 的网卡 例如 eth0
    }
    track_script {
        check_nginx
    }
}

172.16.0.9服务器(keep2) keepalive配置:

! Configuration File for keepalived
global_defs {
    router_id LVS_DEVEL2  #主机标识全局唯一
}
#检测Nginx是否存活脚本
vrrp_script check_nginx {
  	script "/etc/keepalived/check_nginx.sh"
  	interval 2
    weight -5
}
vrrp_instance VI_1 {
    # 注意主备参数选择
    state BACKUP            # 设置初始状态(BACKUP 备用)
    interface eth0          # 设置绑定 VIP 的网卡 例如 eth0 (ip addr查看网卡)
    virtual_router_id 51    # 配置集群 virtual_router_id 值
    nopreempt               # 设置非抢占模式
    # preempt_delay 10      # 仅 state MASTER 时生效
    priority 100            # 权重
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    unicast_src_ip 172.16.0.9  # 设置本机内网 IP 地址
    unicast_peer {
        172.16.0.7          # 对端设备的 IP 地址
    }
    virtual_ipaddress {
        172.16.0.8          # 设置高可用虚拟 VIP
    }
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
    notify_stop "/etc/keepalived/notify.sh stop"
    garp_master_delay 1    # 设置当切为主状态后多久更新 ARP 缓存
    garp_master_refresh 5   # 设置主节点发送ARP报文的时间间隔
    track_interface {
        eth0               # 使用绑定 VIP 的网卡 例如 eth0
    }
    track_script {
       check_nginx
    }
}

vrrp_instance VI_2 {
    # 注意主备参数选择
    state MASTER            # 设置初始状态均为“备“
    interface eth0          # 设置绑定 VIP 的网卡 例如 eth0
    virtual_router_id 52    # 配置集群 virtual_router_id 值
    nopreempt               # 设置非抢占模式
    # preempt_delay 10      # 仅 state MASTER 时生效
    priority 150            # 两设备相同值的等权重节点
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    unicast_src_ip 172.16.0.9  # 设置本机内网 IP 地址
    unicast_peer {
        172.16.0.7          # 对端设备的 IP 地址
    }
    virtual_ipaddress {
        172.16.0.6          # 设置高可用虚拟 VIP
    }
    #配置keepalived发生故障转移时,触发执行的脚本
    notify_master "/etc/keepalived/notify.sh master"
    notify_backup "/etc/keepalived/notify.sh backup"
    notify_fault "/etc/keepalived/notify.sh fault"
    notify_stop "/etc/keepalived/notify.sh stop"
    garp_master_delay 1    # 设置当切为主状态后多久更新 ARP 缓存
    garp_master_refresh 5   # 设置主节点发送ARP报文的时间间隔
    track_interface {
        eth0               # 使用绑定 VIP 的网卡 例如 eth0
    }
    track_script {
       check_nginx
    }
}

配置好后分别启动 keep1和keep2,查看绑定VIP情况

启动keepalived测试,查看高可用虚拟ip

看到以下结果即为配置成功
在这里插入图片描述
1、测试下VIP是否可用:
在这里插入图片描述
2、停止一台服务器keepalived,查看vip是否漂移
停止172.16.0.7 keepalived 服务,查看172.16.0.9 服务器 IP:

systemctl stop keepalived
ip addr

在这里插入图片描述
在172.16.0.7 服务器keepalived停止的情况下,再次请求服务地址,查看结果,均请求的172.16.0.9服务器
在这里插入图片描述
重新启动172.16.0.7 服务器的keepalived服务,可以看到又重新绑回。
在这里插入图片描述
至此,keepalived+nginx 双机热备模式完成

项目部署

项目部署我是采用nginx反向代理到VIP,也可以腾讯申请EIP,在高可用虚拟IP页面绑定EIP即可通过域名解析到EIP进行访问
在这里插入图片描述

总结

访问keepalived配置的2个VIP都可以正常调度,当停止其中一台keepalived节点,同样也可以正常访问。至此,腾讯云CVM搭建keepalived+nginx高可用(主备热备+双机热备模式)就完成了。

原文地址:https://blog.csdn.net/lisuibi/article/details/129217564

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_43960.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注