ご存知のとおり、NGINXは、リバースプロキシ、ロードバランサー、HTTPキャッシュとしても使用できる高評価のWebサーバーです。この記事では、Linuxでキープアライブを使用して高可用性(HA)NGINXWebサーバーをセットアップする方法を示します。キープアライブはVRRP(仮想ルーター冗長プロトコル)で動作し、1つの静的IPを2つのLinuxシステム間でフェイルオーバーできます。
NGINXHAのラボの詳細は次のとおりです。
- ノード1– 192.168.1.130 – nginx1.example.com –最小限のCentOS 8 / RHEL 8
- ノード2– 192.168.1.140 – nginx2.example.com –最小限のCentOS 8 / RHEL 8
- 仮想IP(VIP)– 192.168.1.150
- sudoユーザーpkumar
- Firewalld enbled
- SELinuxの実行
インストールと構成の手順に進みましょう
ステップ1)コマンドラインからNGINXWebサーバーをインストールする
NGINXパッケージはデフォルトのCentOS8/ RHEL 8リポジトリで利用できるため、両方のノードでdnfコマンドの下で実行して、nginxWebサーバーをインストールします
$ sudo dnf install -y nginx
CentOS 7 /RHEL7の場合
NGINXパッケージはデフォルトのCentOS7/ RHEL 7リポジトリでは利用できないため、最初にインストールするには、epelリポジトリを有効にする必要があります。両方のノードで次のコマンドを実行します
$ sudo yum install epel-release -y $ sudo yum install -y nginx
Ubuntu/Debianの場合
DebianベースのLinuxディストリビューションの場合、nginx Webサーバーパッケージはデフォルトのパッケージリポジトリで利用できるため、nginxをインストールするには、
を実行します。$ sudo apt update $ sudo apt install -y nginx
ステップ2)両方のノードのカスタムindex.htmlファイルを構成します
仮想IPを介してアクセスしているときに、どのサーバーがWebサイトにサービスを提供しているかを簡単に識別できるように、両方のノードのカスタムindex.htmlファイルを作成しましょう。
ノード1の場合、次のechoコマンドを実行します
[[email protected] ~]$ echo "<h1>This is NGINX Web Server from Node 1</h1>" | sudo tee /usr/share/nginx/html/index.html
ノード2の場合、実行
[[email protected] ~]$ echo "<h1>This is NGINX Web Server from Node 2</h1>" | sudo tee /usr/share/nginx/html/index.html
ステップ3)ファイアウォールでNGINXポートを許可し、そのサービスを開始します
ファイアウォールが有効で両方のノードで実行されている場合は、次のコマンドを実行してポート80を許可します。
CentOS/RHELシステムの場合
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd –reload
Ubuntu/Debianシステムの場合
$ sudo ufw allow 'Nginx HTTP'
両方のノードでコマンドコマンドの下を実行して、nginxサービスを開始して有効にします。
$ sudo systemctl start nginx $ sudo systemctl enable nginx
外部から次のcurlコマンドを実行して、両方のノードのNGINXWebサーバーをテストします。
$ curl http://192.168.1.130 <h1>This is NGINX Web Server from Node 1</h1> $ curl http://192.168.1.140 <h1>This is NGINX Web Server from Node 2</h1>
上記のコマンドの出力は完璧で、nginxが実行されており、システムのIPアドレスを使用して外部からアクセスできることを確認しています。
ステップ4)キープアライブのインストールと構成
CentOS / RHELシステムの場合、keepalivedパッケージとその依存関係はデフォルトのパッケージリポジトリで利用できるため、インストールは簡単で、両方のノードで以下のコマンドを実行するだけです。
$ sudo dnf install -y keepalived // CentOS 8/ RHEL 8 $ sudo yum install -y keepalived // CentOS 7 / RHEL 7
Ubuntu / Debianシステムの場合、
$ apt install -y keepalived
キープアライブをインストールしたら、構成ファイル「/etc/keepalived/keepalived.conf」を編集して構成します。ノード1をマスターノードとして、ノード2をバックアップノードとして保持します。
構成ファイルのバックアップを取る
[[email protected] ~]$ sudo cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf-org
keepalived.confのコンテンツを以下に置き換えます:
[[email protected] ~]$ echo -n | sudo tee /etc/keepalived/keepalived.conf [[email protected] ~]$ sudo vi /etc/keepalived/keepalived.conf
次の内容を貼り付けます
global_defs { # Keepalived process identifier router_id nginx } # Script to check whether Nginx is running or not vrrp_script check_nginx { script "/bin/check_nginx.sh" interval 2 weight 50 } # Virtual interface - The priority specifies the order in which the assigned interface to take over in a failover vrrp_instance VI_01 { state MASTER interface enp0s3 virtual_router_id 151 priority 110 # The virtual ip address shared between the two NGINX Web Server which will float virtual_ipaddress { 192.168.1.150/24 } track_script { check_nginx } authentication { auth_type AH auth_pass secret } }
次に、nginxサービスが実行されているかどうかを確認する次の内容のスクリプトを作成します。 Keepalivedは常にcheck_nginx.shスクリプトの出力をチェックし、nginxサービスが停止しているか応答していないことを検出すると、バックアップノードの仮想IPアドレスを移動します。
[[email protected] ~]$ sudo vi /bin/check_nginx.sh #!/bin/sh if [ -z "`pidof nginx`" ]; then exit 1 fi
ファイルを保存して閉じ、chmodコマンドで必要な権限を設定します
[[email protected] ~]$ sudo chmod 755 /bin/check_nginx.sh
次に、次のscpコマンドを使用して、keepalived.confファイルとcheck_nginx.shファイルをノード1からノード2にコピーします。
[[email protected] ~]$ scp /etc/keepalived/keepalived.conf [email protected]:/etc/keepalived/ [[email protected] ~]$ scp /bin/check_nginx.sh [email protected]0:/bin/
ファイルがコピーされたら、ノード2にログインし、keepalived.confファイルにいくつかの変更を加えます。状態をMASTERからBACKUPに変更し、100に設定して優先度を下げます。変更を加えた後、ノード2のkeepalived.confは次のようになります。
OSファイアウォールが実行されている場合は、次のコマンドを実行してVRRPを許可します。
注 –両方のノードでこれらのコマンドを実行します
CentOS/RHELシステムの場合
$ sudo firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent $ sudo firewall-cmd --reload
Ubuntu/Debianシステムの場合
マスターノード(ノード1)から以下を実行してVRRPを許可します
$ sudo ufw allow to 224.0.0.18 comment 'VRRP Broadcast' $ sudo ufw allow from 192.168.1.140 comment 'VRRP Router'
バックアップ/スレーブノード(ノード2)から
$ sudo ufw allow to 224.0.0.18 comment 'VRRP Broadcast' $ sudo ufw allow from 192.168.1.130 comment 'VRRP Router'
最後に、両方のノードからsystemctlコマンドの下で実行して、keepalivedサービスを開始します。
$ sudo systemctl start keepalived $ sudo systemctl enable keepalived
以下を実行して、keepalivedサービスを確認します。
$ sudo systemctl status keepalived
完璧です。マスターノードのVIP(仮想IPアドレス)ステータスを確認します。この場合、VIPは192.168.1.130です
$ ip add show
上記の出力は、VIPがenp0s3インターフェイスのマスターノードで構成されていることを確認します。それでは、次のステップでキープアライブとnginxのテストを行いましょう。
ステップ5)キープアライブとNGINXテスト
テストを実行するには、仮想IP(192.168.1.150)を使用してnginx Webサーバーにアクセスしてみてください。現在、ノード1のnginxページが表示されます。
wenブラウザを開き、「http://192.168.1.150」と入力してEnterキーを押します
次に、ノード1でNGINXサービスを停止し、仮想IPがノード1からノード2に切り替わっているかどうかを確認してから、VIP(192.168.1.150)を使用してnginx Webページにアクセスしようとすると、ノード2からnginxページが表示されます。 。
[[email protected] ~]$ sudo systemctl stop nginx [[email protected] ~]$ ip add show
ノード2にログインし、ipコマンドを実行して、仮想IPアドレスを確認します。
[[email protected] ~]$ ip add show
それでは、仮想IPを使用してWebページにアクセスしてみましょう。
上記は、keepalivedを使用して可用性の高いNGINXWebサーバーを正常にセットアップしたことを示しています。この記事の内容は以上です。フィードバック、コメント、提案を共有してください。