zoukankan      html  css  js  c++  java
  • 尚硅谷nginx教程-7nginx配置示例-配置高可用的集群

    1.什么是nginx的高可用?

    1.1普通模式的问题

    发送一个请求,先到nginx,再由nginx转发到不同的服务器中去。

    问题:

    • 1.tomcat宕机,会自动从列表中剔除。
    • 2.nginx宕机,请求就无法实现

    1.2高可用

    高可用就是nginx宕机了,依然可以正常请求。

    2台Nginx服务器,1台主服务器,1台从服务器。主nginx挂掉,就自动切换到从nginx上,让它作为主nginx进行网络访问。
    主从服务器需要用keepalived,其类似一个路由,通过一组脚本来检测当前的nginx服务器是否还活着。如果还活着,就进行访问;如果宕机了,就切换到另一台备用的nginx。
    虚拟IP:这个IP不存在,但我们是通过这个IP访问。假如虚拟IP是192.168.17.50,现在对外是用192.168.17.50进行访问,而把这个IP绑定到服务器中,类似绑定一个网卡。当keepalived检测到主nginx挂掉之后,把虚拟Ip绑定到备份服务器中。
    按照这个过程,就可以实现nginx的高可用效果,这是主-从模式。

    2.准备工作

    在操作中,需要一个nginx主服务器和nginx备份服务器。另外在主和备里面,都需要keepalived,同时需要一个虚拟IP进行绑定。虚拟IP不是实际存在的,但用它可以进行nginx的访问。

    2.1 准备2台nginx服务器

    2.2 安装配置keepalived

    # 安装keepalived
    yum install -y keepalived
    # 确认安装成功
    rpm -q -a keepalived
    

    keepalived配置文件:/etc/keepalived/

    ! 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.200.1
       smtp_connect_timeout 30
       router_id LVS_DEVEL  #通过这个名字能访问到主机,其余用处不大
       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  #权重。当脚本的条件成立,把当前的权重加2;如果值为负数(-20),就减少20。通过修改weight来改变主从服务器
    }
    # 虚拟IP的配置
    vrrp_instance VI_1 {
        state MASTER  #主MATER 从BACKUP
        interface enp0s3  #网卡 通过ifconfig查看
        virtual_router_id 51  #主从机的virtual_router_id必须相同
        priority 100  #主从机取不同的优先级,主机值较大,备份机值较小
        advert_int 1  #心跳时间间隔,用于检测主机或服务器是否还活着,默认1秒。表示每隔多长时间发生一个心跳
        authentication {  #权限校验方式
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress { #通过它就可以完成keepalived的配置
            172.16.1.50
        }
    }
    

    从服务器只需要修改虚拟IP的state和priority即可。

    需要的脚本/usr/local/src/nginx_check.sh

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

    3. 验证

    3.1 启动nginx和keepalived

    在两台服务器中分别启动nginx和keepalived

    ./nginx -s stop
    ./nginx
    systemctl start keepalived.service
    

    3.2 查看虚拟IP

    启动成功后,进入服务器,可以查看到虚拟IP已经绑定到网卡

    ip a
    

    3.3 浏览器验证

    1.浏览器输入地址 http://172.16.1.50/ ,能访问到nginx,证明主服务器可用。
    2.主服务器停止nginx和keepalived,再次访问 http://172.16.1.50/ ,依然能访问到nginx,证明从服务器可用

    # 先停止keepalived
    systemctl stop keepalived.service
    # 再停止nginx
    ./nginx -s stop
    

    3.从服务器停止nginx和keepalived,再次访问 http://172.16.1.50/ ,应该访问失败。

  • 相关阅读:
    根据EsLint配置WebStorm格式化代码风格
    Vue中使用vant-UI实现移动端自定义省市区三级联动
    Vue中使用Element-UI实现表格跨页多选
    Vue中使用iview-UI实现切换Tab页网络请求优化
    Vue中使用iview-UI按需引入Select组件下拉框无法生效问题
    Vue中使用iview-UI表格样式修改和使用自定义模板数据渲染相关
    Vue中使用Element-UI表单验证相关问题及解决
    Vue 3.0 多页面项目之商家平台练习
    五 创建道路模型(2 道路的挖填方量计算及条件部件)
    五 创建道路模型(1 道路三要素)
  • 原文地址:https://www.cnblogs.com/csj2018/p/12682816.html
Copyright © 2011-2022 走看看