1、概述
Nginx 作为反向代理服务器,来提供负载均衡的能力,当反向代理服务器挂了,应用 服务器就不能被外界访问到,所以我们必须要保证反向代理服务器的高可用,此处以Keepalived 来进行部署,通过配合 Nginx 可以实现 应用服务的高可用。
2、部署规划
服务器规划
虚拟IP | 服务器IP | 默认主从 |
192.168.5.5 | 192.168.5.1 | MASTER |
192.168.5.5 | 192.168.5.2 | BACKUP |
3、Keepalived安装
3.1在线安装Keepalived
两台Nginx服务器中执行在线安装Keepalived:
yum -y install keepalived #在线安装keepalived
chkconfig keepalived on # 设计开机自启动
3.2配置文件
修改keepalived配置文件:vi /etc/keepalived/keepalived.conf
MASTER节点配置内容:
! Configuration File for keepalived
global_defs {
router_id nginx1 #本机名,使用hostname即可查询
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state MASTER
interface ens192 #使用ip a即可得出
virtual_router_id 30
mcast_src_ip 192.168.5.1
priority 100 # 节点优先级, 值范围 0-254, MASTER 要比 BACKUP 高
advert_int 1
authentication {
auth_type PASS
auth_pass 12345
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.5.5
}
}
BACKUP节点配置内容:
! Configuration File for keepalived
global_defs {
router_id nginx2 #本机名,使用hostname即可查询
}
vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh"
interval 2
weight -20
}
vrrp_instance VI_1 {
state BACKUP
interface ens192 #使用ip a即可得出
virtual_router_id 30
mcast_src_ip 192.168.5.2
priority 90 # 节点优先级, 值范围 0-254, BACKUP 要比 MASTER 低
advert_int 1
authentication {
auth_type PASS
auth_pass 12345
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.5.5
}
}
3.3编写Nginx自启脚本
修改文件/etc/keepalived/nginx_check.sh ,添加语句如下:
#!/bin/bash
A=`ps -C nginx --no-header | wc -l`
if [ $A -eq 0 ];then
/home/fanruan/sbin/nginx
sleep 2
if [ `ps -C nginx --no-header | wc -l` -eq 0 ];then
killall keepalived
fi
fi
赋予文件权限:chmod +x /etc/keepalived/nginx_check.sh
4、问题释义:
4.1启动主机和备份机的keepalived服务后,主机和备份机器都会绑定虚拟IP。
解释:
1、因为主机和备份机之间的通信异常,条件允许的话可以关闭防火墙;
2、防火墙开启状态时,需要添加VRRP协议。
firewall-cmd --permanent --add-protocol=vrrp
firewall-cmd --reload #立即生效
4.2nginx服务断掉后,编写的nginx状态启动脚本没有自动拉起nginx服务。
解释:
因为selinux原因,自启脚本没有执行;
临时关闭selinux命令:setenforce 0;
永久关闭selinux命令:sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config