zoukankan      html  css  js  c++  java
  • nginx配置高可用的集群

    上图:

     

    (1)需要两台 nginx 服务器

    (2)需要 keepalived

    (3)需要虚拟 ip

    准备工作

    配置高可用的准备工作

    (1)需要两台服务器,两个Linux虚拟机即可,这里是 192.168.17.129 和 192.168.17.131

    (2)在两台服务器安装 nginx

    (3)在两台服务器安装 keepalived

     使用 yum 命令进行安装:yum install keepalived –y

    下载完成,查看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_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.200.16
            192.168.200.17
            192.168.200.18
        }
    }
    
    virtual_server 192.168.200.100 443 {
        delay_loop 6
        lb_algo rr
        lb_kind NAT
        persistence_timeout 50
        protocol TCP
    
        real_server 192.168.201.100 443 {
            weight 1
            SSL_GET {
                url {
                  path /
                  digest ff20ad2481f97b1754ef3e12ecd3a9cc
                }
                url {
                  path /mrtg/
                  digest 9b3a0c85a887a256d6939da88aabd8cd
                }
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    }
    
    virtual_server 10.10.10.2 1358 {
        delay_loop 6
        lb_algo rr 
        lb_kind NAT
        persistence_timeout 50
        protocol TCP
    
        sorry_server 192.168.200.200 1358
    
        real_server 192.168.200.2 1358 {
            weight 1
            HTTP_GET {
                url { 
                  path /testurl/test.jsp
                  digest 640205b7b0fc66c1ea91c463fac6334d
                }
                url { 
                  path /testurl2/test.jsp
                  digest 640205b7b0fc66c1ea91c463fac6334d
                }
                url { 
                  path /testurl3/test.jsp
                  digest 640205b7b0fc66c1ea91c463fac6334d
                }
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    
        real_server 192.168.200.3 1358 {
            weight 1
            HTTP_GET {
                url { 
                  path /testurl/test.jsp
                  digest 640205b7b0fc66c1ea91c463fac6334c
                }
                url { 
                  path /testurl2/test.jsp
                  digest 640205b7b0fc66c1ea91c463fac6334c
                }
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    }
    
    virtual_server 10.10.10.3 1358 {
        delay_loop 3
        lb_algo rr 
        lb_kind NAT
        persistence_timeout 50
        protocol TCP
    
        real_server 192.168.200.4 1358 {
            weight 1
            HTTP_GET {
                url { 
                  path /testurl/test.jsp
                  digest 640205b7b0fc66c1ea91c463fac6334d
                }
                url { 
                  path /testurl2/test.jsp
                  digest 640205b7b0fc66c1ea91c463fac6334d
                }
                url { 
                  path /testurl3/test.jsp
                  digest 640205b7b0fc66c1ea91c463fac6334d
                }
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    
        real_server 192.168.200.5 1358 {
            weight 1
            HTTP_GET {
                url { 
                  path /testurl/test.jsp
                  digest 640205b7b0fc66c1ea91c463fac6334d
                }
                url { 
                  path /testurl2/test.jsp
                  digest 640205b7b0fc66c1ea91c463fac6334d
                }
                url { 
                  path /testurl3/test.jsp
                  digest 640205b7b0fc66c1ea91c463fac6334d
                }
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
            }
        }
    }

     两台服务器的keepalived的配置究竟怎么修改,这里没有讲解...........................................以后可能会有,兄弟们可以绕道了

    配置文件修改

    1.分别修改/etc/keepalived/keepalivec.conf 配置文件,下面给出129服务器的一个示例。131服务器的自行仿照修改。

    配置文件大致分为3块儿,全局的,脚本的,主从服务器以及虚拟IP的配置

    global_defs {
    
    notification_email {
    
    acassen@firewall.loc
    
    failover@firewall.loc
    
    sysadmin@firewall.loc
    
    }
    
    notification_email_from Alexandre.Cassen@firewall.loc
    
    smtp_server 192.168.17.129
    
    smtp_connect_timeout 30
    
    router_id LVS_DEVEL #访问到的Linux服务器主机名字,在/etc/hosts文件当中添加
    
    }
    
    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 100    # 主、备机取不同的优先级,主机值较大,备份机值较小
    
    advert_int 1
    
    authentication {
    
    auth_type PASS
    
    
    auth_pass 1111
    
    }
    
    virtual_ipaddress {
    
    192.168.17.50 // VRRP H 虚拟地址
    
    }
    
    }

    2.在/usr/local/src 添加检测脚本,检测nginx是否存活。

    #!/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.把两台服务器上 nginx 和 keepalived 启动

    启动 nginx:./nginx

    启动 keepalived:systemctl start keepalived.service

    最终测试

    在浏览器地址栏输入 虚拟 ip 地址 192.168.17.50,证明虚拟IP可以正常访问

    另外,可以查看现在主nginx服务器已经绑定到了该虚拟IP。

    这个时候我们即使停止主服务器192.168.17.129.浏览器依然可以正常访问虚拟IP。

    服务停止命令

    systemctl stop keepalived.service
    
    ./nginx -s stop

    会将虚拟IP绑定到从ngnix服务器上,自动切换到从服务器正常访问nginxf服务器。

  • 相关阅读:
    GCC的gcc和g++的区别
    C++运行程序依赖的环境-vcredist_x64.exe
    linux账户管理[转自vbird]
    Linux 的账号与群组[转自vbird]
    文件的搜寻【转vbird】
    常用的文件和目录操作命令【转vbird】
    十六进制查看器【转】
    文件与目录的默认权限与隐藏权限【转vbird】
    改变文件属性与权限(转)
    Linux目录规范和含义(转)
  • 原文地址:https://www.cnblogs.com/yanl55555/p/13414803.html
Copyright © 2011-2022 走看看