GNU/Linux >> Linux の 問題 >  >> Linux

LinuxでKeepAlivedを使用して高可用性NGINXをセットアップする方法

ご存知のとおり、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サーバーを正常にセットアップしたことを示しています。この記事の内容は以上です。フィードバック、コメント、提案を共有してください。


Linux
  1. LinuxにNginxWebサーバーをインストールする方法

  2. ubuntuサーバーでnginxとpm2を使用して単純なnodejsアプリをセットアップする方法

  3. Ubuntu 20.04 で Nginx を使用して MERN スタックをインストールおよびセットアップする方法

  1. キーを使用してLinuxでパスワードなしのSSHログインを設定する方法

  2. LinuxでユーザーのSudo権限を設定する方法

  3. RockyLinux8にNginxを使用してModSecurityをインストールする方法

  1. CentOS8でKeepAlivedを使用して高可用性NGINXをセットアップする方法

  2. RockyLinux8でNginxWebサーバーを使用してVarnishSSLターミネーションを設定する方法

  3. Linux Mint 19 / LinuxMint18にNginxを使用してphpMyAdminをインストールする方法