• nginx学习(4)Nginx 配置高可用集群(主从配置)


    Nginx 配置高可用集群

    Nginx的高可用集群是指由两台或多台Nginx服务器组成的集群系统,通过负载均衡和故障转移等技术,实现高可用性和可伸缩性的目标。
    
    在这种集群系统中,每个Nginx服务器都配置为主节点(master)或从节点(slave)。主节点负责处理业务逻辑,而从节点则通过心跳检查等方式与主节点保持通信,并随时准备接管业务逻辑。
    
    当主节点出现故障时,从节点会通过心跳检查机制检测到,并立即接管主节点的业务逻辑,从而保证服务的连续性和可用性。这种集群系统可以有效解决单点故障的问题,提高系统的可用性和稳定性。
    
    在配置Nginx的高可用集群时,需要考虑到负载均衡、故障转移、状态监控等多个方面,以保证系统的正常运行和可靠性。同时,也需要对每个服务器的硬件配置、网络环境、负载情况等进行合理的规划和调整,以保证整个集群的性能和效率。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    1、准备

    需要两台服务器

        server 172.31.0.99;
        server 172.31.0.100;
    
    • 1
    • 2

    1.1在两台服务器安装 nginx

    安装详情见 nginx学习(1): 链接: link
    1.2第一台用默认的配置80端口,第二台用81端口

    
        server {
            listen       80;        
            #server_name  localhost;
           server_name  172.31.0.99 ;
            
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
               #proxy_pass http://myserver;
                index  index.html index.htm;
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

    
        server {
            listen       81;        
            #server_name  localhost;
           server_name  172.31.0.100 ;
            
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
               #proxy_pass http://myserver;
                index  index.html index.htm;
            }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

    测试:

    http://172.31.0.99/
    在这里插入图片描述

    http://172.31.0.100:81/

    在这里插入图片描述

    2、安装keepalived

    在两台服务器安装keepalived

    yum install keepalived -y
    # 查看版本:
    rpm -q -a keepalived
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    在这里插入图片描述
    主服务器配置:

    ! 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
    }
    
    
    vrrp_instance VI_1 {
    	 state MASTER # 备份服务器上将 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.19.50 # VRRP H 虚拟地址(非真实物理地址)
    	 } 
    
    #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
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179

    从服务器配置:

    ! 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
    
    }
    
    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.19.50 # VRRP H 虚拟地址(非真实物理地址)
    	 } 
    }
    
    #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
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
    • 159
    • 160
    • 161
    • 162
    • 163
    • 164
    • 165
    • 166
    • 167
    • 168
    • 169
    • 170
    • 171
    • 172
    • 173
    • 174
    • 175
    • 176
    • 177
    • 178
    • 179
    • 180
    • 181

    接着重启nginx,启动keepalived
    (主服务器:)
    在这里插入图片描述
    接着重启nginx,启动keepalived
    (从服务器:)

    在这里插入图片描述

    3、访问测试:

    1、使用 ip a 查看主服务器的虚拟IP,进行访问
    在这里插入图片描述
    http://172.31.0.152/,成功访问!
    在这里插入图片描述
    成功访问!

    1、使用 ip a 查看从服务器的虚拟IP,进行访问
    在这里插入图片描述
    http://172.31.0.151:81/

    在这里插入图片描述
    成功访问!

  • 相关阅读:
    JAVA计算机毕业设计晨光文具店进销存系统设计与开发Mybatis+源码+数据库+lw文档+系统+调试部署
    实现STL(SGI)的string(深拷贝)
    真人陪聊解忧,暖心的虚拟恋人尽在烟雨树洞
    Vue之Vue的介绍&安装&开发实例&生命周期钩子
    6年测试开发经验面试28K公司后,整理出这套高频面试题和答案
    计算机视觉图像处理面试笔试题整理——图像配准和图像拼接
    攻防世界pwn题:forgot
    【taichi】关于SPH_Taichi的探索与尝试
    【1014T2】半假结论通过打表验证
    java计算机毕业设计教务管理系统源码+数据库+lw文档+系统
  • 原文地址:https://blog.csdn.net/weixin_47139678/article/details/134511109