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/ ,应该访问失败。

  • 相关阅读:
    HDU 1863 畅通工程(Kruskal)
    HDU 1879 继续畅通工程(Kruskra)
    HDU 1102 Constructing Roads(Kruskal)
    POJ 3150 Cellular Automaton(矩阵快速幂)
    POJ 3070 Fibonacci(矩阵快速幂)
    ZOJ 1648 Circuit Board(计算几何)
    ZOJ 3498 Javabeans
    ZOJ 3490 String Successor(模拟)
    Java实现 LeetCode 749 隔离病毒(DFS嵌套)
    Java实现 LeetCode 749 隔离病毒(DFS嵌套)
  • 原文地址:https://www.cnblogs.com/csj2018/p/12682816.html
Copyright © 2011-2022 走看看