keepalived+nginx 搭建

0x00 环境说明

1.系统环境:centos7.9 

 

 

 2.主机规划

主节点:site1,IP地址:10.20.140.9

备节点:site2,IP地址:10.20.140.10

VIP地址:10.20.140.188

3.带安装软件清单

nginx:主备节点都需安装

keepalived:主备节点都需安装

web站点:主备节点nginx的index.html需要更改为不同的显示内容,用以区分,并验证切换是否成功。site1------>site2 ,或者site2------->site1

0x01 软件安装

1.nginx安装

(主备节点都需要安装):本次安装仅仅为了试验目的,使用root用户安装,且采用yum安装,生产环境中,建议增加专用账户和组,并采用二进制安装,可以选择性的安装多个nginx默认不安装的功能模块,比如nginx的监视模块等

tar -zxvf nginx-1.22.1.tar.gz
cd nginx-1.22.1
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --add-module=/home/data/nginx-module-vts
make && make install
# 如果是安装过nginx的,再次添加模块的时候不要使用make install,否则配置会被初始化

本次安装采用yum安装

yum install -y nginx

2.keepalived安装

(主备节点都需要安装)

yum install -y keepalived

0x02 启动nginx和keepalived并设置开机启动

systemctl start nginx
systemctl enable nginx
systemctl start keepalived
systemctl enable keepalived

0x03 更改web站点显示内容,用以区分站点

# 主节点nginx01
echo "<h1> web site1<h1> <h1>this is a test about keepalived at site1 <h1>" >/usr/share/nginx/index.html
# 备节点nginx02
echo "<h1> web site2<h1> <h1>this is a test about keepalived at site2 <h1>" >/usr/share/nginx/index.html

0x04 配置keepalived

1.配置规划

router_id 主节点:nginx01,备节点:nginx02

优先级:主节点100,备节点90,优先级比大,谁大谁优先

认证auth_pass:主备一致,需要验证

认证类型auth_type:PASS 采用密码验证

virtual_router_id :默认51 主备均不变

nginx检查脚本:check_nginx

#!/bin/bash
set -x

A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
   echo `date`':  nginx is not healthy, try to killall keepalived' >> /etc/keepalived/keepalived.log
   killall keepalived
fi

2.配置文件:

! Configuration File for keepalived

global_defs {
   notification_email {
   xxxx@xxxx.com  #告警邮件的接收邮箱地址
}
   notification_email_from xxx@xxxxx.com  发送告警邮件的发送邮箱地址
   smtp_server x.x.x.x # 邮件服务器地址
   smtp_connect_timeout 30 #连接邮件地址的超时时间
   router_id NGINX01  # 节点的router_id
}
#定义vrrp脚本,监测nginx,如果nginx进程不存在,则kill掉keepalived,切换至备节点 vrrp_script check_nginx{ script
"/etc/keepalived/check_nginx.sh" #定义脚本绝对路径 interval 2 # 定义监测间隔时间,单位秒 } # 设置vrrp实例 vrrp_instance VI_1 { state MASTER # state用来指定该节点是主节点还是备节点,MASTER主,BACKUP备 interface eth0 # 指定vrrp使用的物理网卡 virtual_router_id 51 # 主备相同即可,相同的id即为一组 priority 100 # 指定优先级,比大,大的优先级高 advert_int 1 # 主备心跳通讯时间间隔,主备节点必须一致,这里是1s authentication { #认证类型和认证密码设置 auth_type PASS auth_pass 1111 }
# 指定VIP,可以设置多个,之间使用回车换行隔开即可 virtual_ipaddress {
10.20.140.188 }
# 指定检测vrrp使用的脚本名称 track_script{ check_nginx } }

将主备配置更改,注意其中需要更改的地方,包含state,优先级等。

3.重载keepalived配置

systemctl restart keepalived

此时查看VIP是挂载nginx01节点,即主节点,如下图:

 

 0x05 访问web站点,验证keepalive

 

 此时断掉主节点nginx01,再次访问VIP:

 

 此时在主节点nginx01上启动nginx和keepalived服务后,web站点重新切回site1

如何自动切回呢?

 

posted @ 2023-03-22 09:28  BlackData  阅读(108)  评论(0编辑  收藏  举报