仮想プライベートクラウド (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インスタンスは、デプロイメントセットを使用してサービスの信頼性をさらに向上させることができます。 詳細については、「デプロイメントセット」をご参照ください。
シナリオ
次の図に示すように、ECS1とECS2は、Keepalivedを使用してVPCに高可用性サービスをデプロイするために使用されます。 このサービスは、VPC内のECS3からアクセス可能です。 サービスアドレスは、HAVIPのIPアドレスである。 ECS1がダウンしている場合、ECS2が自動的に引き継ぎます。 これにより、サービスの可用性が保証されます。
インターネットにアクセスする必要がある場合は、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が放送またはマルチキャストをサポートするかどうか | 任意 説明 HAVIP はユニキャストのみをサポートします。 Keepalivedなどのサードパーティ製ソフトウェアを使用して高可用性を実装する場合は、構成ファイルの通信モードをユニキャストに変更する必要があります。 | ||
各Alibaba Cloudアカウントで作成できるHAVIPの最大数 | 50 | ||
各VPCで作成できるHAVIPの最大数 | 50 | ||
vpc_quota_havip_custom_route_エントリ | 各VPC内のHAVIPを指すルートエントリの最大数 | 5 | 次の操作を実行して、クォータを増やすことができます。
|
HAVIPユースケース
Terraformオートメーションスクリプトを使用してデプロイを簡素化したり、HAVIPとKeepalivedを使用してECSインスタンスをプライマリ /セカンダリモードで手動でデプロイしたりできます。 詳細については、「シナリオ」をご参照ください。
手順
前提条件
特権: HAVIPを作成するための特権は、Quota Centerコンソールでアプリケーションを送信することによって取得されます。
権限: RAM (Resource Access Management) ユーザーには、Alibaba CloudアカウントによってVPCおよびECSインスタンスに対する最小限の権限が付与されます。
詳細については、「RAMユーザーへの権限の付与」および「RAMユーザーへのECSリソースの使用権限の付与」をご参照ください。
コンソールで手動デプロイを選択する場合は、次のリソースを準備します。
NGINXがデプロイされた3つのECSインスタンス。 NGINXがプライマリおよびセカンダリECSインスタンスで実行されていることを確認します。 詳細については、「カスタム起動タブでインスタンスを作成する」および「NGINXのインストール」をご参照ください。
課金
クイックデプロイメント: Terraformオートメーションスクリプトを実行すると、1つのvCPUと2 GiBメモリ、1つのVPC、1つのvSwitch、および1つのHAVIPを備えた3つのプリエンプティブルECSインスタンスが作成されます。 費用は、ECSインスタンスを保持する期間によって異なります。 追加コストを避けるため、未使用のリソースを削除することを推奨します。
手動デプロイ: 課金される料金は、作成するECSインスタンスの仕様によって異なります。
インターネットアクセスが必要な場合は、HAVIPにリンクされているEIPに料金がかかることに注意してください。 詳細については、「課金の概要」をご参照ください。
手順
Terraformを使用したクイックデプロイ
プロジェクトファイルiac-example-havip.zipをダウンロードします。
Alibaba Cloud Shellにログインし、ファイルをアップロードします。
次のコマンドを順番に実行してパッケージを解凍し、プロジェクトのルートディレクトリに入り、スクリプトを初期化してからリソースを作成します。
unzip iac-example-havip.zip cd iac-example-havip terraform init terraform apply -auto-approve
コマンド出力:
ネットワーク接続をテストします。
ECS3にログオンします。
curl ha_vip_private_ip
コマンドを実行し、ECS1 (プライマリ) から返される情報を表示します。次のコマンドを実行して、Cloud ShellでECS1を停止します。
aliyun ecs StopInstance --InstanceId <$instance_id_ecs1> --ForceStop false --StoppedMode KeepCharging -- Dryrun false
ECS3にログオンします。
curl ha_vip_private_ip
コマンドをもう一度実行して、ECS2によって返された情報を表示します。この例では、ECS1がダウンすると、ECS2が自動的に引き継ぎます。 サービスの提供に使用されるIPアドレスは変更されず、IPアドレスの切り替えが可能になります。
次のコマンドを実行して、課金を停止できるようにすべてのリソースを解放します。
terraform destroy -auto-approve
コンソールでの手動展開
手順1: HAVIPの作成
VPCコンソールにログインします。
左側のナビゲーションウィンドウで、HaVip アドレスをクリックします。
上部のナビゲーションバーで、HAVIPを作成するリージョンを選択します。
HaVip アドレスページで、HaVip アドレスの作成をクリックします。
HaVip アドレスの作成ダイアログボックスで、次のパラメーターを設定し、他のパラメーターをデフォルト値に保つか、必要に応じて変更し、OKをクリックします。
VPC: HAVIPが属するVPCを指定します。
VSwitch: HAVIPが属するvSwitchを指定します。
プライベート 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
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ファイルにコピーしないでください。
Escキーを押して編集モードを終了します。
:wq
と入力し、Enterキーを押して設定ファイルを保存して閉じます。
次のコマンドを実行して、ECS1でkeepalivedを開始します。
systemctl start keepalived
ECS2にログインします。
次のコマンドを実行してkeepalivedをインストールします。
yumインストールkeepalived
keepalived.confファイルを変更します。
次のコマンドを実行して、keepalived.confファイルを変更します。
vim /etc/keepalived/keepalived.conf
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ファイルにコピーしないでください。
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を見つけ、そのIDをクリックします。
クリックバインド次のECS インスタンスで、リソースセクションにアクセスします。
表示されるダイアログボックスで、ECS1を選択し、OKをクリックします。
上記の手順を繰り返して、HAVIPをECS2に関連付けます。
HAVIPがECS1およびECS2に関連付けられた後、リソース セクションでECSインスタンスを表示できます。
ステップ4: ネットワーク接続のテスト
ECS3にログインします。 curl ha_vip_private_ip
コマンドを実行して、インスタンスのNGINX delopyedにアクセスします。
テスト結果:
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アドレスになります。