ホームページ  >  記事  >  運用・保守  >  Nginx の高可用性を実現する方法

Nginx の高可用性を実現する方法

PHPz
PHPz転載
2023-05-25 23:31:041166ブラウズ

準備:###### 192.168.16.128

192.168.16.129

2 つの仮想マシン。 Nginx

をインストールする Nginx

をインストールする yum ソース ファイルを更新します:

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

Nginx をインストールします:

yum -y nginx

をインストールします 操作コマンド:

systemctl start nginx; #Start Nginx

systemctl stop nginx; #Stop Nginx

高可用性とは何ですか?

高可用性 HA (High Availability) は、分散システム アーキテクチャの設計において考慮する必要がある要素の 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 -y インストール keepalived

ホスト (192.168.16.128) キープアライブ設定ファイルを変更します。

yum を使用してインストールすると、/etc/keepalived に構成ファイルが生成されます:

vi keepalived.conf

keepalived.conf:

#検出スクリプト

vrrp_script chk_http_port {

スクリプト "/usr/local/src/check_nginx_pid.sh" #nginx が開始されているかどうかを検出するハートビート実行スクリプト

インターバル 2 インターバル 2 体重 2 #weight

}

#vrrp インスタンス定義セクション

vrrp_instance VI_1 {

state MASTER # keepalived の役割を指定します。MASTER がメイン、BACKUP がバックアップです

Interface ens33 # VRRP 通信用の現在のネットワーク インターフェイス カード (現在の centos ネットワーク カード) ifconfig を使用して特定のネットワーク カードを確認します

Virtual_router_id 66 # 仮想ルート番号、マスターおよびスレーブは常に

である必要があります 優先度 100 # 優先度。値が大きいほど、リクエストの処理の優先度が高くなります。

advert_int 1 # チェック間隔、デフォルトは 1 秒 (vrrp マルチキャスト サイクル秒)

#許可されたアクセス

認証 {

auth_type PASS #検証タイプとパスワードを設定します。MASTER と BACKUP は通常の通信に同じパスワードを使用する必要があります

認証パス 1111

}

トラックスクリプト {

chk_http_port #(通話検出スクリプト)

}

virtual_ipaddress {

192.168.16.130 192.168.16.130 # 仮想 IP (VIP) を定義します。1 行に 1 つずつ複数設定できます

}

}

VIP は virtual_ipaddress で構成でき、VIP を通じてサービスにオンラインでアクセスできます。

インターフェースはサーバーのネットワークカードに応じて設定する必要があります。通常の表示方法は ip addr

です。 認証構成 バックアップ マシンへの認可アクセスにも同じ構成が必要です

バックアップ マシン (192.168.16.129) のキープアライブ構成ファイルを変更します。

keepalived.conf:

#検出スクリプト

vrrp_script chk_http_port {

スクリプト "/usr/local/src/check_nginx_pid.sh" #nginx が開始されているかどうかを検出するハートビート実行スクリプト

インターバル2 体重 2 #weight

}

#vrrp インスタンス定義セクション

vrrp_instance VI_1 {

State Backup#Keepalived、主にマスター、予備としてのバックアップの役割を指定します

interface ens33 # vrrp 通信用の現在のネットワーク インターフェイス カード (現在の centos ネットワーク カード) ifconfig を使用して特定のネットワーク カードを確認します

virtual_router_id 66 # 仮想ルート番号、マスターとスレーブは常に

である必要があります 優先99 Advert_int 1#間隔を確認します。デフォルトは 1 秒 (VRRP ブロードキャスト サイクル秒)

#許可されたアクセス

認証 {

auth_type PASS #検証タイプとパスワードを設定します。MASTER と BACKUP は通常の通信に同じパスワードを使用する必要があります

認証パス 1111

}

トラックスクリプト {

chk_http_port #(通話検出スクリプト)

}

virtual_ipaddress {

192.168.16.130 192.168.16.130 # 仮想 IP (VIP) を定義します。1 行に 1 つずつ複数設定できます

}

}

検出スクリプト:

#!/bin/bash

#nginxが起動しているかどうかを検出

A=`ps -C nginx --no-header |wc -l`

if [ $A -eq 0 ];then #nginx が起動していない場合は、nginx を起動します systemctl start nginx #Restart nginx

If [ `ps -C nginx --no-header |wc -l` -eq 0 ];then # nginx の再起動に失敗した場合は、keepalived サービスを停止し、VIP 転送を実行します

Killall キープアライブ

fi

fi

スクリプト認可: chmod 775 check_nginx_pid.sh

注: スクリプトは承認されている必要があります。承認されていない場合は、アクセス権限がありません。ここでは、VIP (virtual_ipaddress:192.168.16.130) という 2 つのサーバーを実行します。運用環境では、VIP を介してサービスに直接アクセスします。

nginx の失敗をシミュレートする:

違いとして、2 つのサーバーがデフォルトでアクセスする Nginx html ページを変更します。

まず 192.168.16.130 にアクセスし、VIP 経由でアクセスすると、ページには 192.168.16.128 が表示され、サービスが現在メイン サーバーによって提供されていることを示します。

この時点で、192.168.16.128 メイン サーバーはコマンド

を実行します。 systemctl stop nginx; #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 は自動的にフェイルオーバーし、エンタープライズ レベルの実稼働環境向けの高可用性ソリューションになります。設立された。

以上がNginx の高可用性を実現する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。