一、Nginx
# 1. Nginx下载
wget https://repo.huaweicloud.com/nginx/nginx-1.25.0.tar.gz
# 2、安装编译工具及库文件
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel pcre-devel
# 3、 解压
tar -zxvf nginx-1.25.0.tar.gz
# 4、进入解压目录
cd nginx-1.25.0
# 5、编译安装nginx,默认安装到 /usr/local/nginx中
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
# 6、安装
make && make install
# 7、配置开机自启动
vim /usr/lib/systemd/system/nginx.service
# 8、粘贴以下脚本
[Unit]
Description=nginx service
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# 9、重新加载
systemctl daemon-reload
# 10、设置nginx服务开机自启
systemctl enable nginx
# 11、启动nginx
systemctl start nginx
# 12、查看服务状态
systemctl status nginx
二、Keepalived
一、安装
# 1、安装依赖包
yum install -y curl gcc openssl-devel libnl3-devel net-snmp-devel
# 2、安装keepalived
yum install -y keepalived
二、编写配置脚本(主节点)
vi /etc/keepalived/keepalived.conf
# 粘贴以下代码
! Configuration File for keepalived
# 全局配置,路由ID,固定不变
global_defs {
router_id LVS_DEVEL
}
# 定义Nginx状态脚本
vrrp_script chk_nginx {
script "/etc/keepalived/check_nginx.sh"
# 间隔时间,单位为秒,默认1秒
interval 2
# 权重,当脚本成功或失败对当前节点的优先级是增加还是减少
weight -5
}
#VRRP实例
vrrp_instance VI_1 {
# 主节点
state MASTER
# 绑定的网卡,使用ifconfig命令查看获取
interface enp1s0
# 虚拟路由id,保证相同
virtual_router_id 51
# 优先级,抢占模式下优先级高的称为主
priority 150
# 指定发送VRRP通告的间隔。单位是秒。
advert_int 1
# 安全认证用的密码,自定义即可
authentication {
auth_type PASS
auth_pass 1111
}
# 对外暴露的VIP地址
virtual_ipaddress {
10.101.27.241
}
# 指定Nginx执行状态脚本
track_script {
chk_nginx
}
}
四、编写心跳监听Nginx脚本
#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
systemctl restart nginx
sleep 2
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
systemctl stop keepalived
fi
fi
五、备用节点
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_script chk_nginx {
script "/etc/keepalived/check_nginx.sh"
interval 2
weight -5
}
vrrp_instance VI_1 {
# 初始角色Backup
state BACKUP
interface enp1s0
virtual_router_id 51
# 优先级比master低
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.101.27.241
}
track_script {
chk_nginx
}
}
六、开机自启
systemctl enable keepalived
systemctl start keepalived
systemctl restart keepalived
systemctl status keepalived
七、验证