ホームページ  >  記事  >  バックエンド開発  >  Keepalived+nginx はデュアルマスターの高可用性負荷分散を実現します

Keepalived+nginx はデュアルマスターの高可用性負荷分散を実現します

WBOY
WBOYオリジナル
2016-08-08 09:29:521388ブラウズ
Nginx+キープアライブ高可用性には 2 つの構成スキームがあります:
1. Nginx+キープアライブ マスター/スレーブ構成
このスキームは VIP アドレスを使用し、フロントエンドで 2 台のマシン (1 台はマスター、もう 1 台はバックアップ) を使用します。同時に 1 台のマシンのみが動作し、メイン マシンが故障しない限り、もう 1 台のバックアップ マシンは常に無駄になります。サーバーの数が少ない Web サイトの場合、このソリューションは経済的ではないため、今回は採用されません。
2. Nginx+keepalived デュアルマスター構成

このソリューションは 2 つの VIP アドレスを使用し、フロントエンドは 2 台のマシンを使用します。1 台の場合は 2 台のマシンが同時に動作します。各マシンからのリクエストは 1 台のマシンに転送され、現在のアーキテクチャ環境に非常に適しています。そのため、このソリューションは Web サイトの高可用性アーキテクチャを実装するために使用されます。

以下では、2 番目の構成を使用して、デュアルマスターの高可用性ロード バランシングを示します。


グループ1

VIP1: 192.168.36.100

マスターnginx: 192.168.36.99

nginxを準備します: 192.168.36.86

2番目のグループ

VIP2: 192.168.36.100

メインnginx: 192.168.36.86

バックアップnginx: 192.168.36.9 9

ウェブサービス:

web1: 192.168 .36.215

web2: 192.168.36.80

1.nginxの設定(インストール省略)

rreeで192.168.36.99と192.168を設定して起動します。 nginx。アクセスが正常か確認してください。

web1

http://192.168.36.86:88/

http://192.168.36.99:88/

web2

http://192.168.36.86:99/

http://192.168.36.99:99/

2. keepalived をインストールして構成します (インストール省略)

1)192.168.36.86configuration

vi /etc/keepalived/keepalived.conf

rrreええ2)192.168.36.99構成

vi /etc/keepalived/keepalived.conf

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;

    upstream web1 {
        server 192.168.36.215:80 max_fails=3 fail_timeout=3s;
    }
    upstream web2 {
        server 192.168.36.80:80 max_fails=3 fail_timeout=3s;
    }
    server {
            listen         88;
            server_name  localhost;
            location / {
                root   html;
                index  index.html index.htm;
                proxy_pass http://web1;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
   }
   server {
            listen         99;
            server_name  localhost;
            location / {
                root   html;
                index  index.html index.htm;
                proxy_pass http://web2;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            }
   }
}
3) プロセスが検出できない場合は、両方のマシンに nginx プロセスチェックスクリプトが必要です。再起動できない場合は、keepalived を閉じます。 vip はマシンの準備に切り替えることができます。

vi /etc/keepalived/chk_nginx.sh

! Configuration File for keepalived

global_defs {
   notification_email {
     monitor@3evip.cn
     #failover@firewall.loc
   }
   notification_email_from tianwei7518@163.com
   smtp_server smtp.163.com
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {
        script "/etc/keepalived/chk_nginx.sh"
        interval 2
        weight 2
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 100
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_nginx
    }
    virtual_ipaddress {
        192.168.36.100
    }
}


vrrp_instance VI_2 {
    state MASTER
    interface eth0
    virtual_router_id 200
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_nginx
    }   
    virtual_ipaddress {
        192.168.36.200
    }
}
実行権限を設定します: chmod +x /etc/keepalived/chk_nginx.sh

3. 開始、テスト

nginx と keepalived をそれぞれ開始します:

/usr/local/nginx/sbin/nginx

service keepalived start

アクセス:

web1

http://192.168. 36.100:88/

http://192.168.36.200:88/

web2

http://192.168.36.100:99/

http://192 .168.36.200:99 /

には正常にアクセスできます。

キープアライブを閉じてみることができます。閉じる keepalived on 192.168.36.86

サービス keepalived stop

ログを表示:

テール - f /var/log/messages

192.168 .36.86 ログ:

! Configuration File for keepalived

global_defs {
   notification_email {
     monitor@3evip.cn
     #failover@firewall.loc
   }
   notification_email_from tianwei7518@163.com
   smtp_server smtp.163.com
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_script chk_nginx {
        script "/etc/keepalived/chk_nginx.sh"
        interval 2
        weight 2
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 100
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_nginx
    }
    virtual_ipaddress {
        192.168.36.100
    }
}


vrrp_instance VI_2 {
    state BACKUP
    interface eth0
    virtual_router_id 200
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    track_script {
        chk_nginx
    }   
    virtual_ipaddress {
        192.168.36.200
    }
}
192.168.36.99 ログ:
#!/bin/sh
#description: # 如果启动失败,则停止keepalived
status=$( ps -C nginx --no-heading| wc -l)
if [ "${status}" = "0" ]; then
        /usr/local/nginx/sbin/nginx
        status2=$( ps -C nginx --no-heading| wc -l)
        if [ "${status2}" = "0" ]; then
                service keepalived stop
        fi
fi
再起動192.168.36.86:

192.168.36。ログ:

Feb  7 00:39:05 slave-d Keepalived[5738]: Stopping Keepalived v1.2.15 (02/07,2015)
Feb  7 00:39:05 slave-d Keepalived_vrrp[5741]: VRRP_Instance(VI_2) sending 0 priority
Feb  7 00:39:05 slave-d Keepalived_vrrp[5741]: VRRP_Instance(VI_2) removing protocol VIPs.
Feb  7 00:39:05 slave-d Keepalived_healthcheckers[5740]: Netlink reflector reports IP 192.168.36.200 removed
Feb  7 00:39:05 slave-d avahi-daemon[1823]: Withdrawing address record for 192.168.36.200 on eth0.
192.168.36.99 ログ:

Feb  7 00:39:11 slave-c Keepalived_vrrp[25103]: VRRP_Instance(VI_2) Transition to MASTER STATE
Feb  7 00:39:12 slave-c Keepalived_vrrp[25103]: VRRP_Instance(VI_2) Entering MASTER STATE
Feb  7 00:39:12 slave-c Keepalived_vrrp[25103]: VRRP_Instance(VI_2) setting protocol VIPs.
Feb  7 00:39:12 slave-c Keepalived_healthcheckers[25102]: Netlink reflector reports IP 192.168.36.200 added
Feb  7 00:39:12 slave-c avahi-daemon[1832]: Registering new address record for 192.168.36.200 on eth0.IPv4.
Feb  7 00:39:12 slave-c Keepalived_vrrp[25103]: VRRP_Instance(VI_2) Sending gratuitous ARPs on eth0 for 192.168.36.200
Feb  7 00:39:17 slave-c Keepalived_vrrp[25103]: VRRP_Instance(VI_2) Sending gratuitous ARPs on eth0 for 192.168.36.200
閉じても通常通りアクセスできます。

nginxを閉じると、すぐにnginxが起動することがわかります。

参考記事:tCentos6.5 Keepalivedの詳細説明とNginxサービスの高可用性

Nginx+Keepalivedを使用して高可用性ロードバランシングを実現

KEEPALIVED+nginxを使用して高可用性と高可用性を実現デュアルマスターノード負荷分散

nginx+keepalived は、nginx デュアルマスター高可用性負荷分散を実現します

上記では、デュアルマスターの高可用性ロード バランシングを実現する Keepalived+nginx について、その側面も含めて紹介しています。PHP チュートリアルに興味のある友人にとって役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。