一、概念

主备模式就是指多台nginx,其中一台为主节点,其余为从节点,正常情况下,由主节点做代理,假如主节点出了问题(例如宕机),那么系统会自动切换从节点作为主节点,接替主节点的工作。这样可以提高系统的抗风险能力。这里对外暴露的地址并不是真实的服务器ip地址,而是虚拟ip,所以即使有一台nginx服务器宕机,用户也感知不到的。
在这里插入图片描述

二、搭建准备工作

假设有两台服务器,分别是192.168.0.48(主)和192.168.0.49(从)

1、为两台服务器安装nginx。安装教程:https://www.runoob.com/linux/nginx-install-setup.html
2、在两台服务器安装keepalived。
#安装命令
yum install keepalived -y
#校验安装是否成功
rpm -q -a keepalived

安装后配置文件位置:/etc/keepalived/keepalived.conf

3、完成高可用配置
修改keepalived的配置文件
global_defs {
   notification_email {    #该参数指定故障发生时发送邮件的对象。
     acassen@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc #该参数指定故障发生时邮件由哪个地址发出。
   smtp_server 192.168.200.1   #该参数指定邮件的smtp服务器地址。
   smtp_connect_timeout 30    #该参数指定连接smtp服务器的超时时间。
   router_id LVS_DEVEL    #该参数是vrrp协议中用于标识本节点的ip地址形式的字符串。
   script_user root             #添加运行健康检查脚本的用户
   enable_script_security       #添加运行健康检查脚本的组
}

vrrp_script chk_http_port {
 script "/usr/local/src/nginx_check.sh"         #表示将一个脚本信息赋值给变量check_web
 interval 2      #检测脚本执行的间隔
 weight -20      #监测失败,则相应的vrrp_instance的优先级会减少20个点
}

vrrp_instance VI_1 {
 state MASTER           #keepalived角色描述信息,备份服务器上将 MASTER 改为 BACKUP
 interface ens33        #将虚拟ip用于那块网卡(改为自己的网卡,可用ip -a查看网卡名称)
 virtual_router_id 51   #主、备机的 virtual_router_id 必须相同
 priority 100            #主、备机取不同的优先级,主机值较大,备份机值较小
 advert_int 1           #主服务器组播包发送间隔时间

authentication {        # 主备主机之间的认证表示信息
   auth_type PASS       #采用明文认证机制
   auth_pass 1111       #编写明文密码
 }
 virtual_ipaddress {
   192.168.200.199      #设置虚拟ip地址信息,此参数备节点设置和主节点相同
 }
 track_script {
    chk_http_port       #调用执行脚本
  }
}
添加检查nginx状态的脚本
vim /usr/local/src/nginx_check.sh

拷贝如下内容:

#!/bin/bash
counter=$(ps -C nginx |grep -v PID |wc -l)
if [ $counter == 0 ];then     
        /usr/local/webserver/nginx/sbin/nginx
        sleep 30  
        counter=$(ps -C nginx |grep -v PID |wc -l)
        if [ $counter == 0 ];then  
                systemctl stop keepalived
        fi
fi

启动nginx和keepalived

#启动nginx
cd /usr/local/webserver/nginx/sbib
./nginx

#启动keeplived
systemctl start keepalived.service

访问nginx
192.168.0.48
通过虚拟IP访问
192.168.200.199

假如主节点挂了,依旧可以通过192.168.200.199访问从节点nginx。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐