のように 投稿前の 負荷分散を使用すると、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.conf
: net.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 つずつオフにして、結果を確認します。