このトピックでは、高可用性仮想IPアドレス (HAVIP) とkeepalivedを使用して高可用性を実装する方法について説明します。

始める前に

このタスクについて

このトピックでは、次のシナリオを例として使用します。 企業が2つのECSインスタンスを作成し、NGINXは両方のECSインスタンスにデプロイされています。 ビジネスの成長により、高可用性が必要です。

ECSインスタンスは、HAVIPおよびkeepalivedを使用してプライマリおよびセカンダリECSインスタンスとして機能できます。 デフォルトでは、プライマリECSインスタンス (ECS 1) はクライアントからアクセスされます。 ECS 1が期待どおりに動作していない場合、セカンダリECSインスタンス (ECS 2) がECS 1のサービスと仮想IPアドレスを引き継ぎます。 これは高可用性を実装します。

シナリオ

手順

手順

ステップ1: HAVIPの作成

HAVIPは、独立したリソースとして作成およびリリースできるプライベートIPアドレスです。 HAVIPをECSインスタンスに関連付けると、ECSインスタンスはARP (Address Resolution Protocol) メッセージを送信してHAVIPをアドバタイズできます。

  1. VPC コンソールにログインします。
  2. 左側のナビゲーションペインで HaVip アドレス をクリックします。
  3. 上部のナビゲーションバーで、HAVIPを作成するリージョンを選択します。
  4. HaVip アドレス ページで、[HaVip アドレスの作成] をクリックします。
  5. [HaVip アドレスの作成] ダイアログボックスで、次のパラメーターを設定し、[OK] をクリックします。
    • リージョン: HAVIPを作成するリージョンを表示します。
    • VPC: HAVIPが属するVPCを指定します。
    • VSwitch: HAVIPが属するvSwitchを指定します。
    • VSwitch CIDR ブロック: vSwitchのCIDRブロックを表示します。
    • プライベート IP アドレスの自動割り当て: プライベートIPアドレスを自動的に割り当てるかどうかを指定します。
      • はい: vSwitch CIDRブロックからアイドル状態のプライベートIPアドレスが自動的に割り当てられます。
      • いいえ: vSwitch CIDRブロックからアイドル状態のプライベートIPアドレスを手動で入力する必要があります。
HAVIPを作成したら、HaVip アドレスページでHAVIPを表示できます。 HAVIPの作成

ステップ2: プライマリおよびセカンダリECSインスタンスにkeepalivedをインストールする

keepalivedを使用して、ECSインスタンスのステータスを確認できます。 ECS 1がダウンしている場合、ECS 2はECS 1のワークロードと仮想IPアドレスを引き継ぎます。 これにより、高い可用性が保証されます。

次の手順では、CentOSを実行するECSインスタンスにkeepalivedをインストールする方法について説明します。

  1. ECS 1にログインします。 詳細については、「接続方法」をご参照ください。
  2. 次のコマンドを実行してkeepalivedをインストールします。
    yumインストールkeepalived
  3. keepalivedの設定ファイルを変更します。
    1. 次のコマンドを実行して、keepalived.confを変更します。
      vim /etc/keepalived/keepalived.conf
    2. 以下のコマンドを実行し、入力モードに入ります:
    3. 次の情報に基づいて構成ファイルを変更します。
      ! Configuration File for keepalived
      global_defs {
         notification_email {
           acassen@firewall.loc
           failover@firewall.loc
           sysadmin@firewall.loc
         }
         notification_email_from Alexandre.Cassen@firewall.loc
         smtp_server 192.168.200.1
         smtp_connect_timeout 30
         router_id LVS_DEVEL
         vrrp_skip_check_adv_addr
         vrrp_garp_interval 0
         vrrp_gna_interval 0
      }
      # vrrp_script chechaproxy
      # {
      # スクリプト "/etc/keepalived/do_sth.sh"
      # インターバル5
      #}
      vrrp_instance VI_1 {
      状態MASTER# アクティブなECSインスタンスとしてECS 1を指定します。
          interface eth0# elastic network interface (ENI) の名前を指定します。 eth0 is used in this example.  
          virtual_router_id 51
          nopreempt
      # preempt_delay 10
          優先度100# ECSインスタンスの優先度を指定します。 値が大きいほど優先度が高いことを示す。 この例では100が使用されています。
          advert_int 1        
          authentication {
              auth_typeパス
              auth_pass 1111
          }
          unicast_src_ip 192.168.0.209# ECSインスタンスのプライベートIPアドレスを指定します。 この例では192.168.0.209を使用します。
          unicast_peer {
              192.168.0.210# ピアECSインスタンスのプライベートIPアドレスを指定します。 この例では192.168.0.210を使用します。
          }
          virtual_ipaddress {
              192.168.0.88# HAVIPのIPアドレスを指定します。 この例では192.168.0.88を使用します。 
          }
          notify_master "/etc/keepalived/notify_action.sh MASTER"
          notify_backup "/etc/keepalived/notify_action.sh BACKUP"
          notify_fault "/etc/keepalived/notify_action.sh FAULT"
          notify_stop "/etc/keepalived/notify_action.sh STOP"
          garp_master_delay 1
          garp_master_refresh 5
      
              track_interface {
                      eth0# ECSインスタンスのENIの名前を指定します。 この例では、eth0が使用される。
              }
      # track_script {
      # checkhaproxy
      #}
      }
    4. Escキーを押して、編集モードを終了します。 :wqと入力し、Enterキーを押して設定ファイルを保存して閉じます。
  4. 次のコマンドを実行して、ECS 1でkeepalivedを起動します。
    systemctl start keepalived
  5. ECS 2 にログインします。
  6. 次のコマンドを実行してkeepalivedをインストールします。
    yumインストールkeepalived
  7. keepalivedの設定ファイルを変更します。
    1. 次のコマンドを実行して、keepalived.confを変更します。
      vim /etc/keepalived/keepalived.conf
    2. 次のコマンドを実行して、入力モードに入ります。
    3. 次の情報に基づいて構成ファイルを変更します。
      ! keepalivedの設定ファイル
      global_defs {
         notification_email {
           acassen@firewall.loc
           failover@firewall.loc
           sysadmin@firewall.loc
         }
         notification_email_from Alexandre.Cassen@firewall.loc
         smtp_server 192.168.200.1
         smtp_connect_timeout 30
         router_id LVS_DEVEL
         vrrp_skip_check_adv_addr
         vrrp_garp_interval 0
         vrrp_gna_interval 0
      }
      # vrrp_script chechaproxy
      # {
      # スクリプト "/etc/keepalived/do_sth.sh"
      # インターバル5
      #}
      vrrp_instance VI_1 {
      状態BACKUP# セカンダリECSインスタンスとしてECS 2を指定します。
          interface eth0# ENIの名前を指定します。 この例では、eth0が使用される。  
          virtual_router_id 51
          nopreempt
      # preempt_delay 10
          priority 10# セカンダリECSインスタンスの優先度を指定します。 値が大きいほど優先度が高いことを示す。 この例では、10が使用される。
          advert_int 1        
          authentication {
              auth_typeパス
              auth_pass 1111
          }
          unicast_src_ip 192.168.0.210# ECSインスタンスのプライベートIPアドレスを指定します。 この例では192.168.0.210を使用します。
          unicast_peer {
              192.168.0.209# ピアECSインスタンスのプライベートIPアドレスを指定します。 この例では192.168.0.209を使用します。
          }
          virtual_ipaddress {
              192.168.0.88# HAVIPのIPアドレスを指定します。 この例では192.168.0.88を使用します。 
          }
          notify_master "/etc/keepalived/notify_action.sh MASTER"
          notify_backup "/etc/keepalived/notify_action.sh BACKUP"
          notify_fault "/etc/keepalived/notify_action.sh FAULT"
          notify_stop "/etc/keepalived/notify_action.sh STOP"
          garp_master_delay 1
          garp_master_refresh 5
      
              track_interface {
                      eth0# ECSインスタンスのENIの名前を指定します。 この例では、eth0が使用される。
              }
      # track_script {
      # checkhaproxy
      #}
      }
    4. Escキーを押して編集モードを終了します。 :wqと入力し、Enterキーを押して設定ファイルを保存して閉じます。
  8. 次のコマンドを実行して、ECS 2でkeepalivedを起動します。
    systemctl start keepalived

ステップ3: HAVIPを両方のECSインスタンスに関連付ける

HAVIPは、プライマリECSインスタンスとセカンダリECSインスタンスの両方に関連付けることができます。 その後、ECSインスタンスはARPメッセージを送信することでHAVIPをアドバタイズできます。
説明 HAVIPは、同じvSwitchに属するECSインスタンスに関連付けられている必要があります。 各HAVIPは、最大2つのECSインスタンスに関連付けることができます。

次の手順を実行して、HAVIPをプライマリECSインスタンスとセカンダリECSインスタンスの両方に関連付けます。

  1. VPC コンソールにログインします。
  2. 左側のナビゲーションペインで HaVip アドレス をクリックします。
  3. 上部のナビゲーションバーで、HAVIPが作成されているリージョンを選択します。
  4. ステップ1: HAVIPの作成 で作成したHAVIPを見つけ、HAVIPのIDをクリックします。
  5. [リソース] セクションで [ECSインスタンス] を見つけ、[バインド] をクリックします。
    HAVIPをECSインスタンスに関連付ける
  6. 表示されるダイアログボックスで、ECS 1を選択し、[OK] をクリックします。
  7. 上記の手順を繰り返して、HAVIPをECS 2に関連付けます。
HAVIPをECSインスタンスに関連付けた後、リソースセクションで関連付けられたECSインスタンスを表示できます。 高可用性1

ステップ4: HAVIPをEIPに関連付ける

HAVIPをEIPに関連付けることができます。 次いで、HAVIPは、EIPを使用して、インターネットを介してサービスを提供することができる。

  1. VPC コンソールにログインします。
  2. 左側のナビゲーションペインで HaVip アドレス をクリックします。
  3. 上部のナビゲーションバーで、HAVIPが作成されているリージョンを選択します。
  4. ステップ1: HAVIPの作成 で作成したHAVIPを見つけ、HAVIPのIDをクリックします。
  5. [リソース] セクションで、[EIP] の横にある [バインド] をクリックします。
    HAVIPをEIPに関連付ける
  6. 表示されるダイアログボックスで、EIPを選択し、[OK] をクリックします。
次に、HAVIPに関連付けられているEIPを表示できます。 HAVIPをEIPに関連付ける

ステップ5: 高可用性のテスト

高可用性をテストするには、次の手順を実行します。

  1. オンプレミスのコンピューターでブラウザーを開きます。
  2. EIPのIPアドレスを入力して、ECSインスタンスにデプロイされたNGINXにアクセスします。
    テスト結果:
    • ECS 1が期待どおりに動作すると、ECS 1がアクセスされます。 テスト結果1
    • ECS 1がダウンすると、ECS 2はECS 1の仮想IPアドレスとワークロードを引き継ぎます。 これにより、高い可用性が保証されます。 テスト結果2