栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

nginx高可用-主备模式

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

nginx高可用-主备模式

一、概念

主备模式就是指多台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。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/841294.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号