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

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

May 25, 2023 pm 11:31 PM
nginx

準備:###### 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 サイトの他の関連記事を参照してください。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Nginxバージョンを確認する方法 Nginxバージョンを確認する方法 Apr 14, 2025 am 11:57 AM

nginxバージョンを照会できるメソッドは次のとおりです。nginx-vコマンドを使用します。 nginx.confファイルでバージョンディレクティブを表示します。 nginxエラーページを開き、ページタイトルを表示します。

nginxでクラウドサーバードメイン名を構成する方法 nginxでクラウドサーバードメイン名を構成する方法 Apr 14, 2025 pm 12:18 PM

クラウドサーバーでnginxドメイン名を構成する方法:クラウドサーバーのパブリックIPアドレスを指すレコードを作成します。 NGINX構成ファイルに仮想ホストブロックを追加し、リスニングポート、ドメイン名、およびWebサイトルートディレクトリを指定します。 nginxを再起動して変更を適用します。ドメイン名のテスト構成にアクセスします。その他のメモ:SSL証明書をインストールしてHTTPSを有効にし、ファイアウォールがポート80トラフィックを許可し、DNS解像度が有効になることを確認します。

Nginxが開始されるかどうかを確認する方法 Nginxが開始されるかどうかを確認する方法 Apr 14, 2025 pm 01:03 PM

nginxが開始されるかどうかを確認する方法:1。コマンドラインを使用します:SystemCTLステータスnginx(Linux/unix)、netstat -ano | FindStr 80(Windows); 2。ポート80が開いているかどうかを確認します。 3.システムログのnginx起動メッセージを確認します。 4. Nagios、Zabbix、Icingaなどのサードパーティツールを使用します。

Windowsでnginxを構成する方法 Windowsでnginxを構成する方法 Apr 14, 2025 pm 12:57 PM

Windowsでnginxを構成する方法は? nginxをインストールし、仮想ホスト構成を作成します。メイン構成ファイルを変更し、仮想ホスト構成を含めます。 nginxを起動またはリロードします。構成をテストし、Webサイトを表示します。 SSLを選択的に有効にし、SSL証明書を構成します。ファイアウォールを選択的に設定して、ポート80および443のトラフィックを許可します。

nginxサーバーを開始する方法 nginxサーバーを開始する方法 Apr 14, 2025 pm 12:27 PM

NGINXサーバーを起動するには、異なるオペレーティングシステムに従って異なる手順が必要です。Linux/UNIXシステム:NGINXパッケージをインストールします(たとえば、APT-GetまたはYumを使用)。 SystemCtlを使用して、NGINXサービスを開始します(たとえば、Sudo SystemCtl Start NGinx)。 Windowsシステム:Windowsバイナリファイルをダウンロードしてインストールします。 nginx.exe実行可能ファイルを使用してnginxを開始します(たとえば、nginx.exe -c conf \ nginx.conf)。どのオペレーティングシステムを使用しても、サーバーIPにアクセスできます

Dockerコンテナの名前を確認する方法 Dockerコンテナの名前を確認する方法 Apr 15, 2025 pm 12:21 PM

すべてのコンテナ(Docker PS)をリストする手順に従って、Dockerコンテナ名を照会できます。コンテナリストをフィルタリングします(GREPコマンドを使用)。コンテナ名(「名前」列にあります)を取得します。

Docker用のコンテナを作成する方法 Docker用のコンテナを作成する方法 Apr 15, 2025 pm 12:18 PM

Dockerでコンテナを作成します。1。画像を引く:Docker Pull [ミラー名]2。コンテナを作成:Docker Run [Options] [Mirror Name] [コマンド]3。コンテナを起動:Docker Start [Container Name]

nginx apacheを実行する方法 nginx apacheを実行する方法 Apr 14, 2025 pm 12:33 PM

nginxをApacheを実行するには、次のことが必要です。1。nginxとapacheをインストールします。 2。nginxエージェントを構成します。 3。nginxとapacheを起動します。 4.構成をテストして、ドメイン名にアクセスした後にApacheコンテンツを確認できることを確認します。さらに、ポート番号マッチング、仮想ホスト構成、SSL/TLS設定など、他の問題に注意を払う必要があります。

See all articles