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

Virtual Private Cloud:HAVIP

最終更新日:Oct 21, 2024

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

HAVIPとは何ですか?

定義

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

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

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

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

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

シナリオ

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

image
説明

インターネットにアクセスする必要がある場合は、HAVIPをEIPに関連付けて、EIPを介してインターネット経由で高可用性サービスを提供できます。

クォータと請求

HAVIP機能はベータテスト中です。 この機能を使用するには、Alibaba Cloud Quota Centerコンソールでアプリケーションを送信します。

重要

HAVIP機能はベータテストで無料です。 Alibaba Cloudは、ベータ期間中はサービスレベル契約 (SLA) の保証を提供しません。

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

地域

リージョン

アジア太平洋

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

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

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

中東

UAE (ドバイ)SAU (リヤド)

重要

SAU (リヤド-パートナーリージョン) リージョンはパートナーによって運営されています。

制限とクォータ

名前 /ID

説明

デフォルト値

調整可能

非該当

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を使用してECSインスタンスをプライマリ /セカンダリモードで手動でデプロイしたりできます。 詳細については、「シナリオ」をご参照ください。

手順

image

前提条件

  • 特権: 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ユーザーへのECSリソースの使用権限の付与」をご参照ください。

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

課金

  • クイックデプロイメント: Terraformオートメーションスクリプトを実行すると、1つのvCPUと2 GiBメモリ、1つのVPC、1つのvSwitch、および1つのHAVIPを備えた3つのプリエンプティブルECSインスタンスが作成されます。 費用は、ECSインスタンスを保持する期間によって異なります。 追加コストを避けるため、未使用のリソースを削除することを推奨します。

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

説明

インターネットアクセスが必要な場合は、HAVIPにリンクされているEIPに料金がかかることに注意してください。 詳細については、「課金の概要」をご参照ください。

手順

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

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

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

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

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

    コマンド出力:

    image.png

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

    1. ECS3にログオンします。 curl ha_vip_private_ipコマンドを実行し、ECS1 (プライマリ) から返される情報を表示します。

      image.png

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

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

      image.pngこの例では、ECS1がダウンすると、ECS2が自動的に引き継ぎます。 サービスの提供に使用されるIPアドレスは変更されず、IPアドレスの切り替えが可能になります。

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

    terraform destroy -auto-approve

コンソールでの手動展開

手順1: HAVIPの作成

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

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

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

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

  5. HaVip アドレスの作成ダイアログボックスで、次のパラメーターを設定し、他のパラメーターをデフォルト値に保つか、必要に応じて変更し、OKをクリックします。

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

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

    • プライベート 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. iコマンドを実行して入力モードに入ります次の手順に基づいて、keepalived.confファイルを変更します。

      ! Configuration File for keepalived
      vrrp_instance VI_1 {
      state MASTER           #Specify ECS1 as the primary ECS instance.
          interface eth0          #Specify the name of the ENI. eth0 is used in this example.  
          virtual_router_id 51
          nopreempt              
          priority 100             #Specify a priority for the ECS instance. A larger value indicates a higher priority. A priority of 100 is specified for the ECS instance in this example.
          advert_int 1        
          authentication {
              auth_type PASS
              auth_pass 1111
          }
          unicast_src_ip 192.168.0.209   #Specify the private IP address of the ECS instance. 192.168.0.209 is used in this example.
          unicast_peer {
              192.168.0.210           #Specify the private IP address of the peer ECS instance. 192.168.0.210 is used in this example.
          }
          virtual_ipaddress {
              192.168.0.88          #Specify the IP address of the HAVIP. 192.168.0.88 is used in this example. 
          }   
          garp_master_delay 1
          garp_master_refresh 5
      
          track_interface {
              eth0                #Specify the name of the ENI of the ECS instance. eth0 is used in this example.
          }
      }
      説明

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

    3. 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. iコマンドを実行して入力モードに入ります次の手順に基づいて、keepalived.confファイルを変更します。

      ! Configuration File for keepalived
      vrrp_instance VI_1 {
      state BACKUP           #Specify ECS2 as the secondary ECS instance.
          interface eth0          #Specify the name of the ENI. eth0 is used in this example.  
          virtual_router_id 51
          nopreempt              
          priority 10             #Specify a priority for the secondary ECS instance. A larger value indicates a higher priority. A priority of 10 is specified for the ECS instance in this example.
          advert_int 1        
          authentication {
              auth_type PASS
              auth_pass 1111
          }
          unicast_src_ip 192.168.0.210   #Specify the private IP address of the ECS instance. 192.168.0.210 is used in this example.
          unicast_peer {
              192.168.0.209           #Specify the private IP address of the peer ECS instance. 192.168.0.209 is used in this example.
          }
          virtual_ipaddress {
              192.168.0.88          #Specify the IP address of the HAVIP. 192.168.0.88 is used in this example. 
          }    
          garp_master_delay 1
          garp_master_refresh 5
      
          track_interface {
              eth0                #Specify the name of the ENI of the ECS instance. eth0 is used in this example.
          }
      }
      説明

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

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

  9. 次のコマンドを実行して、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を見つけ、そのIDをクリックします。

  5. クリック関連付け次のECS インスタンスで、リソースセクションにアクセスします。

    绑定ECS

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

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

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

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

ECS3にログインします。 curl ha_vip_private_ipコマンドを実行して、インスタンスのNGINX delopyedにアクセスします。

テスト結果:

  • 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は、所与の時間に1つのタイプのリソースにのみ関連付けることができる。 別のタイプにリンクするには、既存のリソースのバインドを解除する必要があります。

  • 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アドレスになります。