Nginx它作为反向代理服务器,可能出现宕机的情况,而由于其反向代理的特性,就会导致其他服务器无法被访问,这样项目就停止工作了。为了避免这种情况,我们可以借助keepalived工具来实现高可用。
什么是高可用:Nginx的高可用简单来说就是配置了两台(或更多)的nginx服务器,当主服务器宕机时,就会自动切换到备用服务器,从而保证项目的持续运行。
1. 准备两台nginx服务器.必须安装了nginx
2. 需要在每一个nginx服务器上安装keepalived
yum install keepalived #安装keepalived
rpm -q -a keepalived # 检查是否安装keepalived
默认安装路径: /etc/keepalived
3. 修改keepalived的配置文件内容。
vim /etc/keepalived/keepalived.conf
修改内容如下:
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.0.11
smtp_connect_timeout 30
router_id 192.168.0.11
#vrrp_skip_check_adv_addr
#vrrp_strict
#vrrp_garp_interval 0
#vrrp_gna_interval 0
}
vrrp_script chk_http_port{
script "/usr/local/src/nginx_check.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state backup
interface ens33
virtual_router_id 51
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.0.2
}
}
4. nginx_check.sh脚本文件
vim /usr/local/src/nginx_check.sh
#!/bin/bash
# 检查是否开启nginx
A=`ps -C nginx --no-header |wc -l`
if [ $A -eq 0 ];then
systemctl stop keepalived
fi
5. 测试
5.1 开启两台nginx服务并启动keepalived
systemctl stop keepalived
systemctl start keepalived
systemctl restart keepalived
分别关闭keepalived,进行测试,通过