keepalived+nginx 双机热备搭建 |
您所在的位置:网站首页 › nginx双机 › keepalived+nginx 双机热备搭建 |
keepalived+nginx 双机热备搭建
一、准备工作1.1 准备两台centos7.91.2 nginx 与 keepalived软件 双机安装1.3 ip分配1.4 修改主机名1.5 关闭selinux(双机执行)1.6 修改hosts(双机执行)
二、安装keepalived2.1 执行一下命令安装keepalived(双机执行)2.1.1 yum安装2.1.2 编译安装2.1.2.1 安装依赖2.1.2.2 解压
2.2 编辑keepalived配置文件2.2.1 清空原有的配置文件(双机执行)2.2.2 执行以下命令,编辑keepalived.conf文件。(双机分别执行)2.2.3 内容粘在配置文件中,设置不抢占(第一台主节点执行)2.2.4 内容粘在配置文件中(第二台从节点执行)2.2.5 编写check_nginx.sh脚本(双机执行)
2.3 设置开机自启动
三、安装nginx(双机安装)四、配置下systemctl管理自安装nginx4.1 创建nginx.service文件4.2 重载systemctl4.3 设置开机自启动
五、开启keepalived,并测试下5.1 首先区分下 nginx 的index.html页面5.2 开启keepalived5.3 检验 keepalived的可用性
一、准备工作
1.1 准备两台centos7.9
1.2 nginx 与 keepalived软件 双机安装
1.3 ip分配
机器1机器2vip192.168.19.200192.168.19.201192.168.19.203
1.4 修改主机名
# 第一台
hostnamectl set-hostname nginx01
# 第二台
hostnamectl set-hostname nginx02
1.5 关闭selinux(双机执行)
#关闭selinux
#永久关闭
sed -i 's/enforcing/disabled/' /etc/selinux/config
#临时关闭
setenforce 0
#查看
getenforce
1.6 修改hosts(双机执行)
cat >> /etc/hosts
# 执行的检测脚本
script "/etc/keepalived/check_nginx.sh"
# 间隔检测的时间2s
interval 2
# 检测失败降低权重,需要与主实例权重相减后小于备份实例
weight -20
}
vrrp_instance VI_1 {
# 指定 keepalived 的角色,必须大写 可选值:MASTER|BACKUP
state BACKUP
# 设置不抢占
nopreempt
# 网卡设置 此处记得修改,ip a s显示需要绑定vip的网卡
interface ens33
# 虚拟路由标识,是一个数字,不用更改
virtual_router_id 51
# 定义优先级,数字越大,优先级越高
priority 100
# 设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔
advert_int 1
# 设置验证类型和密码,两个节点必须一致
authentication {
auth_type PASS
auth_pass 1111
}
# 脚本监控状态
track_script {
check_nginx
}
virtual_ipaddress {
192.168.19.133
}
}
2.2.4 内容粘在配置文件中(第二台从节点执行)
! Configuration File for keepalived
global_defs {
# 唯一表示id 规格为keep_ip最优一段
router_id keep_201
}
vrrp_script check_nginx {
# 执行的检测脚本
script "/etc/keepalived/check_nginx.sh"
# 间隔检测的时间2s
interval 2
# 检测失败降低权重,需要与主实例权重相减后小于备份实例
weight -20
}
vrrp_instance VI_1 {
# 指定 keepalived 的角色,必须大写 可选值:MASTER|BACKUP
state BACKUP
# 设置不抢占
nopreempt
# 网卡设置 此处记得修改,ip a s显示需要绑定vip的网卡
interface ens33
# 虚拟路由标识,是一个数字,不用更改
virtual_router_id 51
# 定义优先级,数字越大,优先级越高
priority 99
# 设定 MASTER 与 BACKUP 负载均衡之间同步检查的时间间隔
advert_int 1
# 设置验证类型和密码,两个节点必须一致
authentication {
auth_type PASS
auth_pass 1111
}
# 脚本监控状态
track_script {
check_nginx
}
virtual_ipaddress {
192.168.19.133
}
}
2.2.5 编写check_nginx.sh脚本(双机执行)
vim /etc/keepalived/check_nginx.sh
#!/bin/bash
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
systemctl start nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
systemctl stop keepalived
else
exit 0
fi
else
exit 0
fi
别忘记加执行权限,刚开始忘记写了 chmod +x /etc/keepalived/check_nginx.sh 2.3 设置开机自启动 systemctl enable keepalived 三、安装nginx(双机安装) # 下载依赖 yum -y install gcc pcre-devel zlib-devel openssl openssl-devel # 创建相关目录src为下载nginx安装包目录,soft为nginx安装目录 mkdir -p /data/{src,soft} # 进入下载目录 cd /data/src/ # 下载nginx安装包 yum -y install wget wget http://nginx.org/download/nginx-1.21.0.tar.gz # 解压 tar fx nginx-1.21.0.tar.gz cd nginx-1.21.0/ # 配置nginx编译环境 ./configure --prefix=/data/soft/nginx --with-http_stub_status_module # 编译安装 make && make install # 检查安装是否有问题 echo $? 四、配置下systemctl管理自安装nginx 4.1 创建nginx.service文件 vim /lib/systemd/system/nginx.service将下面文字直接粘贴进去修改 [Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/data/soft/nginx/sbin/nginx -c /data/soft/nginx/conf/nginx.conf ExecReload=/data/soft/nginx/sbin/nginx -s reload ExecStop=/data/soft/nginx/sbin/nginx -s stop PrivateTmp=true [Install] WantedBy=multi-user.targetExecStart:nginx的启动命令 ExecReload:nginx的重载命令 ExecStop:nginx的停止命令 4.2 重载systemctl systemctl daemon-reload 4.3 设置开机自启动 systemctl enable nginx 五、开启keepalived,并测试下 5.1 首先区分下 nginx 的index.html页面第一台 "hello world 1" > /data/soft/nginx/html/index.html第二台 "hello world 2" > /data/soft/nginx/html/index.html 5.2 开启keepalived # 开启keepalived systemctl start keepalived # 检查keepalived状态 systemctl status keepalived
首先查看vip在那台机器上,应该在第一台上,因为给的权重高 ip a s
nginx 停止了 还是再第二台上,说明没问题 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |