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インスタンスは、デプロイメントセットを使用してサービスの信頼性をさらに向上させることができます。 詳細については、「概要」をご参照ください。
シナリオ
シナリオ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が放送またはマルチキャストをサポートするかどうか | 非対応 説明 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ユーザーへの権限の付与」および「RAMユーザーを使用したリソースへのアクセスの制御」をご参照ください。
コンソールで手動デプロイを選択する場合は、次のリソースを準備します。
EIP。
NGINXがインストールされた2つのECSインスタンス。 詳細については、「カスタム起動タブでインスタンスを作成する」および「NGINXのインストール」をご参照ください。
課金
クイックデプロイメント: Terraformオートメーションスクリプトを実行すると、1つのvCPUと2 GiBメモリ、1つのVPC、1つのvSwitch、1つのEIP、および1つのHAVIPを備えた2つのプリエンプティブルECSインスタンスが作成されます。 10分以内にすべてのリソースをリリースすると、約 USD 0.5 課金の詳細については、「プリエンプティブルインスタンス」および「課金の概要」をご参照ください。
手動デプロイ: 課金される料金は、作成するECSインスタンスとEIPの仕様によって異なります。
手順
Terraformを使用したクイックデプロイ
プロジェクトファイルiac-example-havip.zipをダウンロードします。
Alibaba Cloud Shellにログインし、ファイルをアップロードします。
次のコマンドを順番に実行してパッケージを解凍し、プロジェクトのルートディレクトリに入り、スクリプトを初期化してからリソースを作成します。
解凍iac-example-havip.zip cd iac-example-havip terraform init terraform apply -auto-approve
結果:
ネットワーク接続をテストします。
curl web_url
コマンドを実行して、ECS1 (プライマリ) から返された情報を表示します。次のコマンドを実行してECS1を停止します。
aliyun ecs StopInstance -- InstanceId <$instance_id_ecs1> -- ForceStop false -- StoppedMode KeepCharging -- Dryrun false
curl web_url
コマンドをもう一度実行して、ECS2によって返された情報を表示します。
この例では、ECS1がダウンすると、ECS2が自動的に引き継ぎます。 EIPはHAVIPに関連付けられているため、サービスの提供に使用されるIPアドレスは変更されません。
次のコマンドを実行して、課金を停止できるようにすべてのリソースを解放します。
terraform destroy -auto-approve
コンソールを使用した手動展開
手順1: HAVIPの作成
VPCコンソールにログインします。
左側のナビゲーションウィンドウで、HaVip アドレス をクリックします。
上部のナビゲーションバーで、HAVIPを作成するリージョンを選択します。
HaVip アドレスページで、HaVip アドレスの作成をクリックします。
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を表示できます。
手順2: プライマリおよびセカンダリECSインスタンスへのKeepalivedのインストール
この例では、ECSインスタンスはCentOSを使用します。
ECS1にログインします。 詳細については、「接続方法」をご参照ください。
次のコマンドを実行してkeepalivedをインストールします。
yumインストールkeepalived
keepalived.confファイルを変更します。
次のコマンドを実行して、keepalived.confファイルを変更します。
vim /etc/keepalived/keepalived.conf
次のコマンドを実行して入力モードにします。
私
次の手順に基づいて、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ファイルに直接コピーしないでください。
Escキーを押して編集モードを終了します。
:wq
と入力し、Enterキーを押して設定ファイルを保存して閉じます。
次のコマンドを実行して、ECS1でkeepalivedを開始します。
systemctl start keepalived
ECS2にログインします。
次のコマンドを実行してkeepalivedをインストールします。
yumインストールkeepalived
keepalived.confファイルを変更します。
次のコマンドを実行して、keepalived.confファイルを変更します。
vim /etc/keepalived/keepalived.conf
次のコマンドを実行して入力モードにします。
私
次の手順に基づいて、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ファイルに直接コピーしないでください。
Escキーを押して編集モードを終了します。
:wq
と入力し、Enterキーを押して設定ファイルを保存して閉じます。
次のコマンドを実行して、ECS2でkeepalivedを起動します。
systemctl start keepalived
手順3: HAVIPをプライマリおよびセカンダリECSインスタンスに関連付ける
HAVIPは、プライマリECSインスタンスとセカンダリECSインスタンスの両方に関連付けることができます。 その後、ECSインスタンスはARPメッセージを送信してHAVIPをアナウンスできます。
HAVIPは、同じvSwitch内のECSインスタンスにのみ関連付けることができます。 各HAVIPは、最大10個のECSインスタンスに関連付けることができます。
次の手順を実行して、HAVIPをプライマリECSインスタンスとセカンダリECSインスタンスの両方に関連付けます。
VPCコンソールにログインします。
左側のナビゲーションウィンドウで、HaVip アドレス をクリックします。
上部のナビゲーションバーで、HAVIPが作成されているリージョンを選択します。
手順1: HAVIPの作成で作成したHAVIPを見つけ、IDをクリックします。
リソース セクションの ECS インスタンス の横にある バインド をクリックします。
表示されるダイアログボックスで、ECS1を選択し、OK をクリックします。
上記の手順を繰り返して、HAVIPをECS2に関連付けます。
HAVIPがECS1およびECS2に関連付けられた後、リソース セクションでECSインスタンスを表示できます。
ステップ4: HAVIPをEIPに関連付ける
HAVIPをEIPに関連付けることができます。 次いで、HAVIPは、EIPを使用して、インターネットを介してサービスを提供することができる。
VPCコンソールにログインします。
左側のナビゲーションウィンドウで、HaVip アドレス をクリックします。
上部のナビゲーションバーで、HAVIPが作成されているリージョンを選択します。
手順1: HAVIPの作成で作成したHAVIPを見つけ、IDをクリックします。
リソース セクションの Elastic IP アドレス の横にある バインド をクリックします。
表示されるダイアログボックスで、EIPを選択し、OK をクリックします。
次に、HAVIPに関連付けられているEIPを表示できます。
ステップ5: ネットワーク接続のテスト
ネットワーク接続をテストするには、次の手順を実行します。
オンプレミスのコンピューターでブラウザーを開きます。
EIPのIPアドレスを入力して、ECSインスタンスにデプロイされているNGINXにアクセスします。
テスト結果:
ECS1が期待どおりに機能する場合、ECS1にアクセスできます。
ECS1がダウンしている場合、ECS2はECS1の仮想IPアドレスとワークロードを引き継ぎます。 これにより、サービスの高可用性が保証されます。
HAVIPの管理
コンソールでのHAVIPの管理
操作プラットフォーム
VPCコンソールにログインします。
左側のナビゲーションウィンドウで、HaVip アドレス をクリックします。
上部のナビゲーションバーで、HAVIPを作成するリージョンを選択します。
必要に応じて次の操作を実行します。
HAVIPの作成
ECSインスタンスまたはENIとの関連付けと関連付けの解除
EIPとの関連付けと関連付けの解除
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アドレスになります。