準備:############### 192.168.16.128
192.168.16.129
2 つの仮想マシン。 Nginx をインストールする Nginx をインストールする yum ソース ファイルを更新します: rpm-ivhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo Nginx をインストールします: yum-yinstallnginx 操作コマンド: systemctlstartnginx;#Nginx の開始 systemctlstopnginx;#stopNginx 高可用性とは何ですか? 高可用性 HA (HighAvailability) は、分散システム アーキテクチャの設計において考慮する必要がある要素の 1 つであり、通常、システムがサービスを提供できない時間を設計によって削減することを指します。システムが常にサービスを提供できる場合、可用性は 100% ですが、予期しない状況が発生することがあります。したがって、サービスの障害を可能な限り減らすように努めることしかできません。 問題は解決しましたか? 実稼働環境では、Nginx は外部サービスを提供するリバース プロキシとしてよく使用されますが、Nginx はいつかサーバーのダウンタイムなどの障害に遭遇することは避けられません。 Nginx がダウンすると、外部から提供されたすべてのインターフェイスにアクセスできなくなります。 サーバーが 100% 利用可能であることを保証することはできませんが、この悲劇を回避する方法を見つける必要があります。今日、私たちは keepalived を使用して Nginx を実装します。 高可用性。 デュアルマシンホットバックアップソリューション このソリューションは、国内企業で最も一般的な高可用性ソリューションです。デュアルサーバーホットバックアップとは、実際には、1台のサーバーがサービスを提供しており、もう1台のサーバーが特定のサービスをスタンバイ状態にしていることを意味します。1台のサーバーが利用できない場合、もう1台のサーバーがバックアップを実行します。彼の場所。 キープアライブとは何ですか? Keepalived ソフトウェアは、もともと LVS クラスタシステム内の各サービスノードの状態を管理・監視するための LVS 負荷分散ソフトウェアとして設計されていましたが、その後、高可用性を実現する VRRP (Virtual Router Redundancy Protocol) 機能が追加されました。したがって、Keepalived は、LVS ソフトウェアの管理に加えて、他のサービス (Nginx、Haproxy、MySQL など) の高可用性ソリューション ソフトウェアとしても使用できます。 フェイルオーバーメカニズム Keepalived 高可用性サービス間のフェールオーバー転送は、VRRP を通じて実装されます。 Keepalived サービスが正常に動作している場合、メイン マスター ノードは継続的に (マルチキャスト) ハートビート メッセージをバックアップ ノードに送信し、バックアップ バックアップ ノードに自分がまだ生きていることを伝えます。メイン マスター ノードに障害が発生すると、ハートビート メッセージを送信できなくなり、バックアップ ノードはハートビート メッセージを送信できなくなるため、ノードはマスター ノードからのハートビートを検出できなくなり、独自の引き継ぎプログラムを呼び出してマスター ノードの IP リソースとサービスを引き継ぎます。マスター ノードが回復すると、バックアップ ノードは、マスター ノードの障害時に引き継いだ IP リソースとサービスを解放し、元のバックアップの役割に戻ります。 実装プロセス キープアライブをインストールする# yum を使用して直接インストールできます。この方法では、依存関係が自動的にインストールされます:
yum-yinstallkeepalived
ホスト (192.168.16.128) キープアライブ設定ファイルを変更します。
yum モードでインストールした場合、設定ファイルは /etc/keepalived に作成されます:
vikeepalived.conf
keepalived.conf:
#検出スクリプト
vrrp_scriptchk_http_port{
Script"/usr/local/src/check_nginx_pid.sh"#nginx が開始されているかどうかを検出するハートビート実行スクリプト
interval2# (スクリプトの実行を検出する間隔、単位は秒)
体重2#体重
}
#vrrpインスタンス定義部
vrrp_instanceVI_1{
stateMASTER#キープアライブの役割を指定します。MASTER がメイン、BACKUP がバックアップです
interfaceens33#vrrp 通信用の現在のネットワーク インターフェイス カード (現在の centos ネットワーク カード) は、ifconfig を使用して特定のネットワーク カードを確認します
virtual_router_id66#仮想ルーティング番号、マスターとスレーブは常に
である必要があります priority100#Priority。値が大きいほど、リクエストの取得と処理の優先順位が高くなります。
advert_int1#チェック間隔、デフォルトは 1 秒 (vrrp マルチキャスト サイクル秒)
#許可されたアクセス
認証{
auth_typePASS#認証タイプとパスワードを設定します。MASTER と BACKUP は通常の通信に同じパスワードを使用する必要があります
auth_pass1111
}
トラック_スクリプト{
chk_http_port# (通話検出スクリプト)
}
virtual_ipaddress{
192.168.16.130#仮想 IP (VIP) を定義します。1 行に 1 つずつ複数設定できます
}
}
Vip は virtual_ipaddress で設定でき、vip を通じてサービスにオンラインでアクセスできます。
インターフェースはサーバーのネットワークカードに応じて設定する必要があります。通常の表示方法は ipaddr
です。 認証構成 バックアップ マシンへの認可アクセスにも同じ構成が必要です
バックアップ マシン (192.168.16.129) のキープアライブ構成ファイルを変更します。
keepalived.conf:
#検出スクリプト
vrrp_scriptchk_http_port{
Script"/usr/local/src/check_nginx_pid.sh"#nginx が開始されているかどうかを検出するハートビート実行スクリプト
interval2# (検知スクリプト実行間隔)
体重2#体重
}
#vrrpインスタンス定義部
vrrp_instanceVI_1{
stateBACKUP#キープアライブの役割を指定します。MASTER がメイン、BACKUP がバックアップです
interfaceens33#vrrp 通信用の現在のネットワーク インターフェイス カード (現在の centos ネットワーク カード) は、ifconfig を使用して特定のネットワーク カードを確認します
virtual_router_id66#仮想ルーティング番号、マスターとスレーブは常に
である必要があります priority99#Priority。値が大きいほど、リクエストの取得と処理の優先順位が高くなります。
advert_int1#チェック間隔、デフォルトは 1 秒 (vrrp マルチキャスト サイクル秒)
#許可されたアクセス
認証{
auth_typePASS#認証タイプとパスワードを設定します。MASTER と BACKUP は通常の通信に同じパスワードを使用する必要があります
auth_pass1111
}
トラックスクリプト{
chk_http_port# (通話検出スクリプト)
}
virtual_ipaddress{
192.168.16.130#仮想 IP (VIP) を定義します。1 行に 1 つずつ複数設定できます
}
}
検出スクリプト:
#!/bin/bash
#nginx が起動しているかどうかを検出する
# A=`ps-Cnginx--no-header|wc-l` if[$A-eq0];then#nginx が起動していない場合は、nginx を起動してください systemctlstartnginx#restart nginx if[`ps-Cnginx--no-header|wc-l`-eq0];then#nginx が再起動に失敗し、keepalived サービスを停止して VIP 転送を実行します キルオールキープアライブ fi fi スクリプト認可: chmod775check_nginx_pid.sh 注: スクリプトは承認されている必要があります。承認されていない場合は、アクセス許可がありません。ここでは、VIP (virtual_ipaddress:192.168.16.130) を実行している 2 つのサーバーがあり、運用環境の VIP を介してサービスに直接アクセスします。 nginx の失敗をシミュレートする: 違いとして、2 つのサーバーがデフォルトでアクセスする Nginx html ページを変更します。 まず、VIP 経由で 192.168.16.130 にアクセスすると、ページには 192.168.16.128 が表示され、現在メイン サーバーによって提供されているサービスであることがわかります。 この時点で、192.168.16.128 メイン サーバーはコマンド を実行します。 systemctlstopnginx;#stop nginx 再び VIP (192.168.16.130) にアクセスすると、192.168.16.128 というページが表示されたままであることがわかりました。これはスクリプト内の自動再起動でした。 次に、192.168.16.128 サーバーを直接閉じ、ここで VIP (192.168.16.130) にアクセスすると、ページに 192.168.16.129 が表示されていることがわかります。この時点で、キープアライブは自動的にフェイルオーバーし、エンタープライズ レベルの運用環境向けの高可用性ソリューションになります。環境が確立されました。 keepalived にはメールによるリマインダーなどの機能がたくさんありますが、それらは利用できないため、公式 Web サイトにアクセスしてドキュメントを読むことができます。以上がNginx の高可用性手法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。