Nginx配置实例(六)高可用集群

目录

一、高可用集群简介

二、配置实例(主从)

2.1 准备工作

2.2 配置


一、高可用集群简介

到这里,我们目前的实验都是让Nginx扮演一个核心角色,同时我们不得不思考一个现实的问题,Nginx作为一个软件,不可能一直处于启动状态,万一Nginx出现故障或者Nginx服务器出现宕机,那么对于其承载的服务是毁灭性的,客户端的请求自然就无法处理。所以我们在使用Nginx时,一般最少需要配置两个,防止一个Nginx宕机无法响应。这就是Nginx的高可用集群。

现在我们可以了解到,Nginx服务器一般都需要两台,如图所示一台我们称为master,一台我们称为backup,正常情况下,master负责主要的实现主要的功能,如果master出现故障,就要迅速切换到backup中去,这就实现了高可用性。这里面的keepalived就相当于一个路由,用来检测master是否还能不能正常运行;由于master和backup是两台服务器,牵扯到两个IP地址,所以要对外使用一个虚拟的IP地址,对外使用虚拟IP地址进行访问。

二、配置实例(主从)

2.1 准备工作

配置高可用的准备工作:
  • 需要两台服务器 192.168.73.128 和 192.168.73.129
  • 在两台服务器安装 nginx
  • 在两台服务器安装 keepalived

(1)安装Nginx就不做过多解释,这里有具体介绍。

https://blog.csdn.net/weixin_43997530/article/details/115376031

(2)使用yum命令安装keepalived。这里需要虚拟机联网,将虚拟机的网络模式设置为NAT模式

[root@localhost ~]# yum install keepalived -y
[root@localhost etc]# ls | grep keep
keepalived
[root@localhost etc]# cd keepalived/      
[root@localhost keepalived]# ls       //安装完成后我们可以在/etc找到keepalived目录
keepalived.conf

2.2 配置

(1)修改/etc/keepalived/keepalivec.conf 配置文件(注:两台虚拟机上都需要配置):

! Configuration File for keepalived

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.73.128
   smtp_connect_timeout 30
   router_id LVS_DEVEL                   //配置router_id
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_script check_nginx {    
    script "/usr/local/src/nginx_check.sh"
    interval 2                           //检测脚本执行的间隔
    weight 2                             //如果失败,本地priority优先级会降低2
}


vrrp_instance VI_1 {
    state MASTER                 //备份服务器上将 MASTER 改为 BACKUP
    interface ens160             //绑定的网卡
    virtual_router_id 51         //主、备机的 virtual_router_id 必须相同
    priority 100                 //主、备机取不同的优先级,主机值较大,备份机值较小      
    advert_int 1
    authentication {             //Keepalived高可用对之间需要做认证,认证参数必须一致
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.73.10            //虚拟地址
    }
}
 track_script {
       check_nginx               //调用上面的监控脚本
}

(2)接下来我们需要编写脚本文件,将keepalived与Nginx做一个联系;在/usr/local/src 添加检测脚本。

[root@localhost sbin]# vim /usr/local/src/nginx_check.sh
#!/bin/bash
        A=`ps -C nginx –no-header | wc -l`
        if [ $A -eq 0 ];then
                systemctl stop keepalived
        fi

注:查看是否有 nginx进程 把值赋给变量A,如果没有进程,值得为零,则结束 keepalived 进程。

(3) 启动两台服务器上的Nginx和keepalived

启动 nginx:./nginx

启动 keepalived:systemctl start keepalived.service

(4)测试 :在浏览器上输入虚拟ip地址,当我们查看网卡时,可以看到网卡上绑定有虚拟IP地址,结果如下图所示:

注:这里如果浏览器上不能访问到Nginx主页面的话,可以尝试将防火墙关闭和selinux关闭。

[root@localhost sbin]# setenforce 0
[root@localhost sbin]# systemctl stop firewalld.service

把主服务器上的Nginx和keepalived停止掉,在输入虚拟IP地址,可以看到虚拟IP已经绑定到了129的网卡上了。

[root@localhost sbin]# ./nginx -s stop                     //在这里如果停掉Nginx,就会执行脚本文件,keepalived也会被停掉,就不需要我们手动关闭。
[root@localhost sbin]# systemctl stop keepalived.service
[root@localhost sbin]# ps -ef | grep keepalived
root      42131   3228  0 09:07 pts/1    00:00:00 grep --color=auto keepalived
[root@localhost sbin]# ps -ef | grep nginx
root      42135   3228  0 09:07 pts/1    00:00:00 grep --color=auto nginx

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值