すべてのプロダクト
Search
ドキュメントセンター

:HAVIP

最終更新日:Mar 18, 2024

virtual Private Cloud (VPC) の高可用性仮想IPアドレス (HAVIP) 機能を、アドレス解決プロトコル (ARP) およびKeepalivedまたはHeartbeatとともに使用して、高可用性サービスをデプロイできます。 これにより、フェイルオーバー実行時にIPアドレスが変更されないようにします。

HAVIPとは何ですか?

定義

HAVIPは、独立したリソースとして作成およびリリースできるプライベートIPアドレスです。 ECSインスタンスのプライマリIPアドレスと同様に、HAVIPはネットワーク通信をサポートします。 HAVIPは、Keepalivedなどの高可用性ソフトウェアと連携して、高可用性サービスを展開できます。

HAVIPは、elastic IPアドレス、複数のECSインスタンス、または複数のECSインスタンスのプライマリまたはセカンダリelastic network interface (ENI) に関連付けることができます。 これらのリソースと組み合わせて、HAVIPを使用して、同じゾーン内の複数の高可用性サーバー間の自動IP切り替えを実装できます。 これにより、サービスの提供に使用されるプライベートIPアドレスは変更されません。 さらに、HAVIPに関連付けられたECSインスタンスは、デプロイメントセットを使用してサービスの信頼性をさらに向上させることができます。 詳細については、「概要」をご参照ください。

Keepalivedを使用して仮想IPアドレスの高可用性を実装できる場合、HAVIPが使用されるのはなぜですか?

従来のデータセンターでは、サーバーはARPを介してIPアドレスを通知できます。 そして、サーバは、IPアドレスを介してサービスを提供することができる。 この機能は、多くのシナリオで一般的なアプリケーションに必要です。 たとえば、KeepalivedとHeartbeatを使用して、ディザスタリカバリシナリオでIPアドレスを変更しないようにすることができます。

ただし、ほとんどのクラウドサービスプロバイダーは、VPCで無料のARPアナウンスをサポートしていないソフトウェア定義ネットワーキング (SDN) テクノロジーを採用しています。 これは、クラウド環境が仮想化技術を使用して構築され、仮想IPアドレスが基盤となる仮想化プラットフォームによって割り当てられ、管理されるためです。 アプリケーションは、従来の環境のようにホストIPアドレスを変更できません。 さらに、仮想ネットワークはレイヤ3トンネリングの上に構築されます。これにより、ARPアナウンスが送信側で終了するため、ホストがIPアドレスをアナウンスすることができなくなります。 この問題に対処するために、Alibaba CloudはHAVIPを開発しました。

シナリオ

シナリオ1: インターネット経由でアクセス可能な高可用性サービスの展開

次の図に示すように、ECS1とECS2はKeepalivedを使用してプライマリ /セカンダリモードでデプロイされ、HAVIPが割り当てられます。 ECS1はARPを介してHAVIPを発表します。 HAVIPが発表された後、ECS1はプライマリインスタンスとして機能し、HAVIPに関連付けられたEIPを使用してサービスを提供します。 ECS2はセカンダリインスタンスとして機能します。

ECS1がダウンしている場合、ECS2が自動的に引き継ぎます。 これにより、サービスの可用性が保証されます。

シナリオ2: VPC経由でのみアクセス可能な高可用性サービスのデプロイ

次の図に示すように、ECS1とECS2は、Keepalivedを使用してVPCに高可用性サービスをデプロイするために使用されます。 このサービスは、VPC内のECS3からアクセス可能です。 サービスアドレスは、HAVIPのIPアドレスである。 ECS1がダウンしている場合、ECS2が自動的に引き継ぎます。 これにより、サービスの可用性が保証されます。

クォータと課金

HAVIP機能はパブリックプレビュー中です。 この機能を使用するには、Alibaba Cloud Quota Centerコンソールでアプリケーションを送信します。

重要

HAVIP機能は、パブリックプレビュー中は無料です。 Alibaba Cloudは、パブリックプレビュー中にサービスレベル契約 (SLA) の保証を提供しません。

サポートされているリージョン

次の表に、HAVIPをサポートするリージョンの一覧を示します。

エリア

リージョン

アジア太平洋

中国 (青島) 、中国 (北京) 、中国 (張家口) 、中国 (フフホト) 、中国 (ウランカブ) 、中国 (杭州) 、中国 (上海) 、中国 (南京-地方) 、中国 (福州-地方) 、中国 (深セン) 、中国 (河原) 、中国 (広州) 、中国 (成都) 、中国 (武漢-地方) 、中国 (香港) 、日本 (東京) 、韓国 (ソウル) 、シンガポール、オーストラリア (シドニー) 、マレーシア (クアラルンプール) 、インドネシア (ジャカルタ) 、フィリピン (マニラ) 、タイ (バンコク) 、インド (ムンバイ)

ヨーロッパおよびアメリカ

ドイツ (フランクフルト) 、英国 (ロンドン) 、米国 (シリコンバレー) 、米国 (バージニア)

中東

UAE (ドバイ)サウジアラビア (リヤド)

制限とクォータ

名前

説明

デフォルト値

調整可能

N/A

HAVIPをサポートするネットワークタイプ

VPC

任意

各 ECS インスタンスに関連付け可能な HAVIP の数

5

各HAVIPに関連付けることができるEIPの最大数

1

各HAVIPに関連付けることができるECSインスタンスまたはENIの最大数

10

説明
  • 各HAVIPを最大10個のECSインスタンスまたは10個のENIに関連付けることができます。 ただし、HAVIPをECSインスタンスとENIに同時に関連付けることはできません。

  • HAVIPは、同じvSwitchに属するECSインスタンスまたはENIに関連付けることができます。

HAVIPが放送またはマルチキャストをサポートするかどうか

非対応

説明

HAVIP はユニキャストのみをサポートします。 Keepalivedなどのサードパーティ製ソフトウェアを使用して高可用性を実装する場合は、構成ファイルの通信モードをユニキャストに変更する必要があります。

各Alibaba Cloudアカウントで作成できるHAVIPの最大数

50

各 VPC で作成可能な HAVIP の数

50

vpc_quota_havip_custom_route_エントリ

各VPC内のHAVIPを指すルートエントリの数

5

次のいずれかの方法を使用して、クォータの増加をリクエストできます。

HAVIPユースケース

Terraformオートメーションスクリプトを使用してデプロイを簡素化するか、HAVIPとKeepalivedを使用してプライマリ /セカンダリモードで2つのECSインスタンスを手動でデプロイできます。 詳細については、「シナリオ1: インターネット経由でアクセス可能な高可用性サービスの展開」をご参照ください。

手順

前提条件

  • 特権: HAVIPを作成するための特権は、Quota Centerコンソールでアプリケーションを送信することによって取得されます。

  • 権限: RAM (Resource Access Management) ユーザーには、Alibaba CloudアカウントによってVPCおよびECSインスタンスに対する最小限の権限が付与されます。

    RAMポリシーアクション

    vpc:CreateVpc
    vpc:DeleteVpc
    vpc:DescribeVpcs
    vpc:AllocateEipAddress
    vpc:AssociateEipAddress
    vpc:DescribeEipAddresses
    vpc:UnassociateEipAddress
    vpc:ReleaseEipAddress
    vpc:CreateVSwitch
    vpc:DeleteVSwitch
    vpc:DescribeVSwitches
    vpc:CreateHaVip
    vpc:DeleteHaVip
    vpc:AssociateHaVip
    vpc:UnassociateHaVip
    vpc:DescribeHaVips
    ecs:RunInstances
    ecs:StartInstances
    ecs:StopInstances
    ecs:DescribeInstances
    ecs:DeleteInstances 

    詳細については、「RAMユーザーへの権限の付与」および「RAMユーザーを使用したリソースへのアクセスの制御」をご参照ください。

  • コンソールで手動デプロイを選択する場合は、次のリソースを準備します。

課金

  • クイックデプロイメント: Terraformオートメーションスクリプトを実行すると、1つのvCPUと2 GiBメモリ、1つのVPC、1つのvSwitch、1つのEIP、および1つのHAVIPを備えた2つのプリエンプティブルECSインスタンスが作成されます。 10分以内にすべてのリソースをリリースすると、約 USD 0.5 課金の詳細については、「プリエンプティブルインスタンス」および「課金の概要」をご参照ください。

  • 手動デプロイ: 課金される料金は、作成するECSインスタンスとEIPの仕様によって異なります。

手順

Terraformを使用したクイックデプロイ

  1. プロジェクトファイルiac-example-havip.zipをダウンロードします。

  2. Alibaba Cloud Shellにログインし、ファイルをアップロードします。image

  3. 次のコマンドを順番に実行してパッケージを解凍し、プロジェクトのルートディレクトリに入り、スクリプトを初期化してからリソースを作成します。

    解凍iac-example-havip.zip
    cd iac-example-havip
    terraform init
    terraform apply -auto-approve 

    結果:

    image.png

  4. ネットワーク接続をテストします。

    1. curl web_urlコマンドを実行して、ECS1 (プライマリ) から返された情報を表示します。

      image.png

    2. 次のコマンドを実行してECS1を停止します。

      aliyun ecs StopInstance -- InstanceId <$instance_id_ecs1> -- ForceStop false -- StoppedMode KeepCharging -- Dryrun false
    3. curl web_urlコマンドをもう一度実行して、ECS2によって返された情報を表示します。

      image.png

この例では、ECS1がダウンすると、ECS2が自動的に引き継ぎます。 EIPはHAVIPに関連付けられているため、サービスの提供に使用されるIPアドレスは変更されません。

  1. 次のコマンドを実行して、課金を停止できるようにすべてのリソースを解放します。

    terraform destroy -auto-approve

コンソールを使用した手動展開

手順1: HAVIPの作成

  1. VPCコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、HaVip アドレス をクリックします。

  3. 上部のナビゲーションバーで、HAVIPを作成するリージョンを選択します。

  4. HaVip アドレスページで、HaVip アドレスの作成をクリックします。

  5. HaVip アドレスの作成 ダイアログボックスで、次のパラメーターを設定し、OK をクリックします。

    • リソースグループ: HAVIPが属するリソースグループを選択します。

    • タグキー: HAVIPのタグキーを入力または選択します。 長さは最大128文字で、aliyunまたはacs: で始めることはできません。 http:// またはhttps:// は使用できません。 一度に最大20個のタグキーを指定できます。

    • タグ値: HAVIPのタグ値を入力または選択します。 長さは最大128文字で、aliyunまたはacs: で始めることはできません。 http:// またはhttps:// は使用できません。 一度に最大20個のタグ値を指定できます。

    • リージョン: 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のインストール

この例では、ECSインスタンスはCentOSを使用します。

  1. ECS1にログインします。 詳細については、「接続方法」をご参照ください。

  2. 次のコマンドを実行してkeepalivedをインストールします。

    yumインストールkeepalived

  3. keepalived.confファイルを変更します。

    1. 次のコマンドを実行して、keepalived.confファイルを変更します。

      vim /etc/keepalived/keepalived.conf

    2. 次のコマンドを実行して入力モードにします。

    3. 次の手順に基づいて、keepalived.confファイルを変更します。

      ! keepalivedの設定ファイル
      vrrp_instance VI_1 {
      状態MASTER# プライマリECSインスタンスとしてECS1を指定します。
          interface eth0# ENIの名前を指定します。 この例では、eth0が使用される。  
          virtual_router_id 51
          nopreempt              
          優先度100# ECSインスタンスの優先度を指定します。 値が大きいほど優先度が高いことを示す。 この例では、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を使用します。 
          }   
          garp_master_delay 1
          garp_master_refresh 5
      
          track_interface {
              eth0# ECSインスタンスのENIの名前を指定します。 この例では、eth0が使用される。
          }
      }
      説明

      この例は、変更が必要な部分のみを示しています。 例に基づいてkeepalived.confファイルを変更します。 この例の内容をkeepalived.confファイルに直接コピーしないでください。

    4. Escキーを押して編集モードを終了します。 :wqと入力し、Enterキーを押して設定ファイルを保存して閉じます。

  4. 次のコマンドを実行して、ECS1でkeepalivedを開始します。

    systemctl start keepalived

  5. ECS2にログインします。

  6. 次のコマンドを実行してkeepalivedをインストールします。

    yumインストールkeepalived

  7. keepalived.confファイルを変更します。

    1. 次のコマンドを実行して、keepalived.confファイルを変更します。

      vim /etc/keepalived/keepalived.conf

    2. 次のコマンドを実行して入力モードにします。

    3. 次の手順に基づいて、keepalived.confファイルを変更します。

      ! keepalivedの設定ファイル
      vrrp_instance VI_1 {
      状態BACKUP# セカンダリECSインスタンスとしてECS2を指定します。
          interface eth0# ENIの名前を指定します。 この例では、eth0が使用される。  
          virtual_router_id 51
          nopreempt              
          priority 10# セカンダリECSインスタンスの優先度を指定します。 値が大きいほど優先度が高いことを示す。 この例では、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を使用します。 
          }    
          garp_master_delay 1
          garp_master_refresh 5
      
          track_interface {
              eth0# ECSインスタンスのENIの名前を指定します。 この例では、eth0が使用される。
          }
      }
      説明

      この例は、変更が必要な部分のみを示しています。 例に基づいてkeepalived.confファイルを変更します。 この例の内容をkeepalived.confファイルに直接コピーしないでください。

    4. Escキーを押して編集モードを終了します。 :wqと入力し、Enterキーを押して設定ファイルを保存して閉じます。

  8. 次のコマンドを実行して、ECS2でkeepalivedを起動します。

    systemctl start keepalived

手順3: HAVIPをプライマリおよびセカンダリECSインスタンスに関連付ける

HAVIPは、プライマリECSインスタンスとセカンダリECSインスタンスの両方に関連付けることができます。 その後、ECSインスタンスはARPメッセージを送信してHAVIPをアナウンスできます。

説明

HAVIPは、同じvSwitch内のECSインスタンスにのみ関連付けることができます。 各HAVIPは、最大10個のECSインスタンスに関連付けることができます。

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

  1. VPCコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、HaVip アドレス をクリックします。

  3. 上部のナビゲーションバーで、HAVIPが作成されているリージョンを選択します。

  4. 手順1: HAVIPの作成で作成したHAVIPを見つけ、IDをクリックします。

  5. リソース セクションの ECS インスタンス の横にある バインド をクリックします。

    绑定ECS

  6. 表示されるダイアログボックスで、ECS1を選択し、OK をクリックします。

  7. 上記の手順を繰り返して、HAVIPをECS2に関連付けます。

HAVIPがECS1およびECS2に関連付けられた後、リソース セクションでECSインスタンスを表示できます。

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

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

  1. VPCコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、HaVip アドレス をクリックします。

  3. 上部のナビゲーションバーで、HAVIPが作成されているリージョンを選択します。

  4. 手順1: HAVIPの作成で作成したHAVIPを見つけ、IDをクリックします。

  5. リソース セクションの Elastic IP アドレス の横にある バインド をクリックします。

    绑定EIP

  6. 表示されるダイアログボックスで、EIPを選択し、OK をクリックします。

次に、HAVIPに関連付けられているEIPを表示できます。

ステップ5: ネットワーク接続のテスト

ネットワーク接続をテストするには、次の手順を実行します。

  1. オンプレミスのコンピューターでブラウザーを開きます。

  2. EIPのIPアドレスを入力して、ECSインスタンスにデプロイされているNGINXにアクセスします。

    テスト結果:

    • ECS1が期待どおりに機能する場合、ECS1にアクセスできます。

      image.png

    • ECS1がダウンしている場合、ECS2はECS1の仮想IPアドレスとワークロードを引き継ぎます。 これにより、サービスの高可用性が保証されます。

      image.png

HAVIPの管理

コンソールでのHAVIPの管理

操作プラットフォーム

  1. VPCコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、HaVip アドレス をクリックします。

  3. 上部のナビゲーションバーで、HAVIPを作成するリージョンを選択します。

必要に応じて次の操作を実行します。

HAVIPの作成

  1. HaVip アドレスページで、HaVip アドレスの作成をクリックします。

  2. HaVip アドレスの作成 ダイアログボックスで、次のパラメーターを設定し、OK をクリックします。

    • リソースグループ: HAVIPが属するリソースグループを選択します。

    • タグキー: HAVIPのタグキーを入力または選択します。 長さは最大128文字で、aliyunまたはacs: で始めることはできません。 http:// またはhttps:// は使用できません。 一度に最大20個のタグキーを指定できます。

    • タグ値: HAVIPのタグ値を入力または選択します。 長さは最大128文字で、aliyunまたはacs: で始めることはできません。 http:// またはhttps:// は使用できません。 一度に最大20個のタグ値を指定できます。

    • リージョン: HAVIPを作成するリージョンを表示します。

    • VPC: HAVIPが属するVPCを指定します。

    • VSwitch: HAVIPが属するvSwitchを指定します。

    • VSwitch CIDR ブロック: vSwitchのCIDRブロックを表示します。

    • プライベート IP アドレスの自動割り当て: プライベートIPアドレスを自動的に割り当てるかどうかを選択します。

      • はい: vSwitch CIDRブロックからアイドル状態のプライベートIPアドレスが自動的に割り当てられます。

      • いいえ: vSwitch CIDRブロックからアイドル状態のプライベートIPアドレスを手動で入力する必要があります。

説明

HAVIPを使用しなくなった場合は、HaVip アドレスページでHaVipを見つけ、アクション 列の 削除 をクリックします。 HAVIPを削除する前に、すべてのECSインスタンス、ENI、およびEIPとの関連付けが解除されていることを確認してください。

ECSインスタンスまたはENIとの関連付けと関連付けの解除

  1. HaVipページで、管理するHAVIPのIDをクリックします。

  2. リソース セクションの [ECSインスタンス] の横にある [バインド] をクリックします。

  3. 表示されるダイアログボックスで、HAVIPに関連付けたECSインスタンスまたはENIを選択し、[OK] をクリックします。

    パラメーター

    説明

    リソースタイプ

    HAVIPを関連付けるリソースのタイプを選択します。 サポートされるリソースタイプ:

    • ECSインスタンス

    • ENI

    バインドリソース

    HAVIPに関連付けるECSインスタンスまたはENIを選択します。

    ECSインスタンスまたはENIは、次の要件を満たす必要があります。

    • ECSインスタンスがVPCにデプロイされていること。

    • ECSインスタンスまたはENIは、HAVIPと同じvSwitchにあります。

HAVIPとECSインスタンスまたはENIの関連付けを解除するには、リソース セクションで [ECSインスタンス] の下にあるECSインスタンスまたはENIを見つけます。 表示されるメッセージで、[関連付け解除] をクリックします。

説明
  • HAVIPに関連付けられているECSインスタンスを削除すると、システムは自動的にHAVIPとECSインスタンスの関連付けを解除します。

  • HAVIPに関連付けられているセカンダリENIの関連付けをECSインスタンスから解除した場合、セカンダリENIは引き続きHAVIPに関連付けられています。

  • HAVIPに関連付けられているENIを削除すると、システムは自動的にENIからHAVIPの関連付けを解除します。

EIPとの関連付けと関連付けの解除

HAVIPをEIPに関連付けることができます。 HAVIPがEIPに関連付けられた後、HAVIPは、インターネットを介してサービスを提供するためにEIPを使用することができる。 開始する前に、EIPを申請してください。 EIPは次の要件を満たす必要があります。

  • EIPとHAVIPは同じリージョンにあります。

  • EIPは使用可能状態です。

  1. HaVipページで、管理するHAVIPを見つけ、アクション 列の [EIPアドレスのバインド] をクリックします。

  2. [Elastic IPアドレスのバインド] ダイアログボックスで、HAVIPに関連付けるEIPを選択し、[OK] をクリックします。

API参照

HAVIPは、SDK操作の呼び出し、Terraformスクリプトの実行、または次のAPI操作の呼び出しによって管理できます。

よくある質問

Keepalivedのどのバージョンが推奨されますか?

バージョン1.2.15以降を使用することを推奨します。

Keepalivedを使用するときに問題が発生した場合はどうすればよいですか?

Keepalived GitHubでソリューションを探すことを推奨します。

Keepalivedなどのサードパーティ製ソフトウェアを使用して高可用性を実装する場合、ハートビート検出用にソースIPアドレスを設定するにはどうすればよいですか?

Keepalivedなどのサードパーティソフトウェアを使用して高可用性を実装する場合、ハートビート検出の送信元IPアドレスを、HAVIPのプライベートIPアドレスではなく、ECSインスタンスのプライベートIPアドレスに変更する必要があります。

HAVIPを使用して、ユーザー作成Linux仮想サーバー (LVS) の高可用性を実装できますか?

いいえ、HAVIPを使用してユーザー作成LVSの高可用性を実装することはできません。

HAVIPに関連付けられているECSインスタンスがインターネットにアクセスする場合、データパケットの送信元IPアドレスは何ですか。

この場合、HAVIPはECSインスタンスとEIPに関連付けられています。 EIPは、ECSインスタンスのプライベートIPアドレスではなく、HAVIPのプライベートIPアドレスにマッピングされます。 したがって、データパケットの送信元IPアドレスは、ECSインスタンスのプライベートIPアドレスではなく、HAVIPのプライベートIPアドレスになります。