Nginx(八):nginx配置实例之高可用(主从)

1. 什么是高可用

在这里插入图片描述
(1)需要两台 nginx 服务器
(2)需要 keepalived
(3)需要虚拟ip

2. 配置高可用的准备工作

(1)需要两台服务器
(2)在两台服务器安装 nginx
(3)在两台服务器安装 keepalived

3. 在两台服务器安装 keepalived

(1)使用 yum 命令进行安装

yum install keepalived -y

#查看是否安装成功
rpm -q -a keepalived

(2)安装完成后,在/etc/keepalived目录中有文件keepalived.conf

4. 配置高可用(主从)

4.1 主服务器配置

keepalived.conf配置文件,修改为:

! Configuration File for keepalived

global_defs {
    
    
   notification_email {
    
    
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.16.130
   smtp_connect_timeout 30
   router_id LVS_DEVEL  #访问到主机
}

vrrp_script chk_http_port {
    
    
    script "/usr/local/src/nginx_check.sh"
    interval 2  #(秒)(检测脚本执行的间隔)
    weight 2   #设置当前服务器的权重
}

vrrp_instance VI_1 {
    
    
    state MASTER    # 备份服务器上将 MASTER 改为 BACKUP
    interface ens33  # 网卡
    virtual_router_id 51  # 主、备机的 virtual_router_id 必须相同
    priority 100    # 主、备机取不同的优先级,主机值较大,备份机值较小
    advert_int 1    #每1秒发送一次心跳
    authentication {
    
    
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    
    
        192.168.16.50  # VRRP H 虚拟地址
    }
}

/usr/local/src 目录中新建 /nginx_check.sh 文件,内容为:

#!/bin/bash
A=`ps -C nginx -no-header |wc -l`
if [$A -eq 0 ];then
    /usr/local/nginx/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

4.2 从服务器配置

keepalived.conf配置文件,修改为:

! Configuration File for keepalived

global_defs {
    
    
   notification_email {
    
    
     [email protected]
     [email protected]
     [email protected]
   }
   notification_email_from [email protected]
   smtp_server 192.168.16.130
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_http_port {
    
    
    script "/usr/local/src/nginx_check.sh"
    interval 2  #(检测脚本执行的间隔)
    weight 2
}

vrrp_instance VI_1 {
    
    
    state BACKUP    # 备份服务器上将 MASTER 改为 BACKUP
    interface ens33  # 网卡
    virtual_router_id 51  # 主、备机的 virtual_router_id 必须相同
    priority 90    # 主、备机取不同的优先级,主机值较大,备份机值较小
    advert_int 1
    authentication {
    
    
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
    
    
        192.168.16.50  # VRRP H 虚拟地址
    }
}

/usr/local/src 目录中新建 /nginx_check.sh 文件,内容为:

#!/bin/bash
A=`ps -C nginx -no-header |wc -l`
if [$A -eq 0 ];then
    /usr/local/nginx/nginx/sbin/nginx
    sleep 2
    if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
        killall keepalived
    fi
fi

4.3 启动两台服务器上nginx和keepalived

#启动nginx
cd /usr/local/nginx/sbin
./nginx

#启动keepalived
systemctl start keepalived.service

#查看进程
ps -ef | grep keepalived

5. 最终测试

(1)在浏览器地址栏中输入 虚拟ip地址:192.168.16.50
在这里插入图片描述
在这里插入图片描述
(2)把主服务器(192.168.16.130)nginx 和 keepalived 停止,在输入192.168.16.50

#停止keepalived
systemctl stop keepalived.service

#停止nginx
cd /usr/local/nginx/sbin
./nginx -s stop

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/houwanle/article/details/112117219