[高可用性] Keepalived (冗長接続) を haproxy (ロード バランサー) と組み合わせて使用​​します。

のように 投稿前の 負荷分散を使用すると、Web サーバーの処理速度を向上させることができます。 ラウンド ロビン アルゴリズムは、1 つの Web サーバーが停止した場合に別の Web サーバーが使用されるバックアップ接続のように見えます。 ただし、負荷分散の主な目的は依然として Web サーバーの安定性を確保することです。 この記事では、1 つの Web サーバーが停止した場合に備えてバックアップ接続をセットアップし、別の Web サーバーを使用して実行します。

ここでは、負荷分散と組み合わせて冗長接続を設定する方法を説明します。

準備要件:

  • Web Server 1
    OS: CentOS 7 + Nginx + haproxy + keepalived
    IP web server: 192.168.1.129:8080
    IP haproxy: 192.168.1.129:80
  • Web Server 2
    OS: CentOS 6+ Nginx + haproxy + keepalived
    IP web server: 192.168.1.128:8080
    IP haproxy: 192.168.1.128:80

両方の Web サーバーにコマンドで keepalived をインストールします。: yum install keepalived

Keepalived サービスは、サーバーに使用する仮想 IP の作成に役立ちます。簡単に言えば、サーバーは、サーバーのインターフェイス上の (付与された) IP ではなく、Keepalived で独自に定義した IP を使用します。特定の DHCP によって、またはによって割り当てられました。私たち。)。 これを行うには、ファイルに移動する必要があります /etc/sysctl.conf 次の行をファイルに追加または編集します sysctl.confnet.ipv4.ip_nonlocal_bind=1

Web サーバー 1 で、ファイルを構成します。 /etc/keepalived/keepalived.conf như sau:


global_defs {
router_id test1 #khai báo route_id của keepalived
}
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 2
weight 2
}
vrrp_instance VI_1 {
virtual_router_id 51
advert_int 1
priority 100
state MASTER
interface ens33 #thông tin tên interface của server, bạn dùng lệnh `ifconfig` để xem và điền cho đúng
virtual_ipaddress {
192.168.1.69 dev ens33 #Khai báo Virtual IP cho interface tương ứng
}
authentication {
auth_type PASS
auth_pass 123456 #Password này phải khai báo giống nhau giữa các server keepalived
}
track_script {
chk_haproxy
}
}

Web サーバー 2 でファイルを構成します /etc/keepalived/keepalived.conf 次のように:


global_defs {
router_id test2 #khai báo route_id của keepalived
}
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 2
weight 2
}
vrrp_instance VI_1 {
virtual_router_id 51
advert_int 1
priority 99
state BACKUP
interface eth0 #thông tin tên interface của server, bạn dùng lệnh `ifconfig` để xem và điền cho đúng
virtual_ipaddress {
192.168.1.69 dev eth0 #Khai báo Virtual IP cho interface tương ứng
}
authentication {
auth_type PASS
auth_pass 123456 #Password này phải khai báo giống nhau giữa các server keepalived
}
track_script {
chk_haproxy
}
}

test1 と test2 の両方のマシンの上記の Keepalived 構成ファイルには、track_script があります。これは、両方のサーバーがスクリプトを実行して、スクリプト内で宣言されているサービス プロセス ID (PID) のステータスをチェックすることを意味します (ここでは check service haproxy を宣言しています)。 test1 の haproxy サービス (状態 MASTER および優先順位 100 で初期化) が何らかの理由で機能しないと仮定すると、Keepalived はマシン test1 の重み (優先順位 100-2=98) を減算します。 この時点で、 test1 の優先度は 98 になり、 test2 で最初に宣言された priority=99 よりも小さくなります。そのため、Keepalived は test2 の状態を BACKUP から MASTER に変更し、test2 は宣言された VIP を保持します。

Haproxy Web サーバー 1 を構成します。

global
daemon
maxconn 256

defaults
 mode http
 timeout connect 5000ms
 timeout client 50000ms
 timeout server 50000ms

 stats enable
 stats hide-version
 stats refresh 30s
 stats show-node
 stats auth admin:123456
 stats uri /haproxy?stats
frontend http-in
 bind *:80
 default_backend servers

backend static
 balance roundrobin
 server static 192.168.1.69:80

backend servers
 balance roundrobin
 server webserver1 192.168.1.128:8080 check
 server webserver2 192.168.1.129:8080 check

Config haproxy Web Server 2:

global
daemon
maxconn 256

defaults
 mode http
 timeout connect 5000ms
 timeout client 50000ms
 timeout server 50000ms

 stats enable
 stats hide-version
 stats refresh 30s
 stats show-node
 stats auth admin:123456
 stats uri /haproxy?stats
frontend http-in
 bind *:80
 default_backend servers

backend static
 balance roundrobin
 server static 192.168.1.69:80

backend servers
 balance roundrobin
 server webserver1 192.168.1.128:8080 check
 server webserver2 192.168.1.129:8080 check

コマンドを実行します service keepalived start のために CentOS 6, systemctl start keepalived のために CentOS 7.
Haproxy を 1 つずつオフにして、結果を確認します。

Bài viết liên quan