【前言】本文是在腾讯云CVM下,搭建云服务器keepalived+nginx主备热备+双机热备。
一、【环境搭建】
1、环境准备
- 2台腾讯云CVM (同一地域,一台master(172.16.0.7),一台backup(172.16.0.9))
- 2个高可用虚拟IP (172.16.0.6、172.16.0.8)(搭建主备只需1个高可用虚拟ip,双主需要2个)
(具体可参考这篇文章:创建高可用虚拟 IP)
2、nginx、keepalived安装
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="