Network Load Balancer (NLB) は、業務継続性を確保するために多層的な高可用性アーキテクチャを提供します。クラスターデプロイメント、マルチゾーンアクティブ/アクティブアーキテクチャ、および自動とプロアクティブの両方のディザスタリカバリメカニズムを通じて、NLB はシングルノード、クラスター、さらにはゾーンレベルの障害が発生した場合でも、継続的で安定したサービス運用を維持し、サービスの中断を効果的に防ぎます。デフォルトでは、NLB インスタンスはゾーン間でトラフィックを分散し、自動ヘルスチェックと DNS 統合を活用して自動フェールオーバーを提供し、最大 99.995% のサービス可用性 SLA を実現します。
高可用性設計
ゾーン内の高可用性アーキテクチャ
単一ゾーン内では、各仮想 IP アドレス (VIP) は冗長性のために複数のクラスターによってバックアップされます。各クラスター内では、セッション状態がすべてのノード間で同期されます。これにより、単一ノードに障害が発生した場合でも、他のノードがシームレスにトラフィックを引き継ぎ、中断のないサービスを保証します。
マルチゾーンアクティブ/アクティブアーキテクチャ
NLB は、マルチゾーンアクティブ/アクティブアーキテクチャで設計されており、単一のインスタンスが複数のゾーンにまたがることができます。各ゾーン内のリソースは分離され、独立して動作するため、ゾーンレベルの障害がインスタンスの完全なサービス停止につながらないことが保証されます。このアーキテクチャは、単一障害点 (SPOF) を排除するだけでなく、システム全体の拡張性と柔軟性も向上させます。
ゾーンのヘルスチェックメカニズム
NLB は、設定された各ゾーンの VIP をアクティブにプローブして、ゾーンの健全性を判断します。特定のゾーンで VIP のヘルスチェックが失敗した場合、システムはそのゾーンの VIP (EIP) を DNS レコードから自動的に削除します。その結果、新しい接続リクエストは異常なゾーンの NLB ノードにルーティングされなくなります。以前に確立された接続は、この DNS レコードの変更による影響を受けません。
ゾーン間ロードバランシング
デフォルトでは、NLB インスタンスはゾーン間ロードバランシングが有効になっています。この機能がアクティブな場合、NLB インスタンスは、同じリージョン内のすべての有効なゾーンにあるバックエンドサーバーに受信トラフィックを均等に分散します。これにより、システム全体の高可用性とディザスタリカバリ能力が向上します。
ディザスタリカバリメカニズム
自動ディザスタリカバリメカニズム
通常運用時
すべてのゾーンが正常な場合、クライアントが NLB インスタンスにアクセスする際のリクエストフローは次のようになります。
クライアントは、ローカル DNS リゾルバにカスタムドメイン名 (例:
www.example.com) を問い合わせます。これは通常、CNAME レコードを介して NLB インスタンスの DNS 名にマッピングされます。ローカル DNS リゾルバは、NLB インスタンスの DNS 名のクエリをクラウドプロバイダーの DNS サービスに転送します。
Alibaba Cloud DNS サービスは、クライアントに解決結果を応答します。これには以下が含まれます。
NLB インスタンスがアクティブなすべての正常なゾーンの Elastic IP アドレス (EIP) を含む A レコード。
レコードの Time-to-Live (TTL) 値 (デフォルト:60 秒)。
クライアントは、返された IP アドレスのいずれかを使用して NLB インスタンスにリクエストを送信します。その後、NLB インスタンスは、設定されたロードバランシングアルゴリズムに基づいて、バックエンドサーバーにトラフィックを分散します。
ゾーン障害発生時
データセンターの停止や NLB クラスターの障害など (ゾーン B を例として使用) が発生した場合、リクエストフローは次のようになります。
ゾーン B で障害が発生すると、NLB インスタンスのヘルスチェックサービスは、そのゾーンのプライベート VIP が到達不能であることを検出します。その後、ヘルスチェックサービスは Alibaba Cloud DNS サービスと連携して、異常なゾーンに対応する A レコードを DNS セットから削除します。
クライアント側の DNS キャッシュが (TTL に従って) 期限切れになると、NLB インスタンスのドメイン名に対する新しい DNS クエリは、残りの正常なゾーンの A レコードのみを受信します。これにより、障害が発生したゾーンからトラフィックが自動的にリダイレクトされ、シームレスなゾーン間のディザスタリカバリが実現します。
すべての VIP が到達不能になったことを NLB ヘルスチェックサービスが検出するという極端なシナリオでは、以前に削除されたすべての A レコードが自動的に復元されます。この「フェールオープン」メカニズムにより、いずれか 1 つの VIP が正常に戻るとすぐに、別の DNS 更新を待つことなくサービスを迅速に復元できます。
プロアクティブなディザスタリカバリメカニズム
異常なゾーンの手動削除
NLB ドメインを介してサービスを提供している際に、いずれかのゾーンでサービスの中断を検出または通知された場合、手動フェールオーバーを実行できます。この操作により、異常なゾーンが DNS 解決セットから即座に削除され、10 秒以内に有効になり、新しい受信リクエストが中断の影響を受けないようにします。
高可用性デプロイメントの推奨事項
マルチゾーン NLB インスタンスの作成
NLB インスタンスを作成する際、(ターゲットリージョンでサポートされている場合) 2 つ以上のゾーンを選択して、マルチゾーンアクティブ/アクティブアーキテクチャを実装します。
ゾーン間ロードバランシングの設定
デフォルトでは、NLB インスタンスはゾーン間ロードバランシングが有効になっています。エンドツーエンドの高可用性アーキテクチャを実現するには、この機能と連携して動作するように、バックエンドサーバーを複数のゾーンにまたがってデプロイします。
CNAME レコードの設定
ディザスタリカバリ能力を向上させるには、CNAME レコードを使用してカスタムドメインを NLB インスタンスの DNS 名にポイントします。以下の手順では Alibaba Cloud DNS を例として使用します。具体的な手順は、ご利用の DNS プロバイダーによって異なる場合があります。
NLB コンソールで、NLB インスタンスの ドメイン名 をコピーします。
Alibaba Cloud DNS コンソールの [パブリックゾーン] ページで、対象のドメイン名の Actions 列で 解決設定 をクリックします。
解決設定 タブで Add Record をクリックし、以下のパラメーターで CNAME レコードを設定して、OK をクリックします。
Record Type: [CNAME] を選択します。
Hostname: カスタムドメイン名のプレフィックスを入力します。
TTL:フェールオーバーを高速化するには、これを
1分に設定します。Record Value:ステップ 1 でコピーした NLB インスタンスのドメイン名を貼り付けます。
Change Resource Record Confirmation ダイアログボックスで、OK をクリックして変更を保存します。
注意事項
NLB インスタンスに DNS 名でアクセスする場合、そのマルチゾーンディザスタリカバリ機能の有効性は、以下の主要な要因に依存します。
クライアント側の DNS キャッシュ: NLB インスタンスのドメイン名のデフォルト TTL は 60 秒です。タイムリーなフェールオーバーを保証するには、ローカル DNS リゾルバとクライアントアプリケーションの両方がこの TTL を尊重し、DNS プロトコルに従う必要があります。これにより、キャッシュが迅速に期限切れになり、利用可能な A レコードの最新リストを取得できます。
接続性ヘルスチェック: NLB ヘルスチェックサービスは、接続性を検証するために、すべての NLB の IP アドレスに定期的に ICMP Ping プローブを送信します。これらのプローブがブロックされないようにするには、NLB インスタンスに関連付けられたセキュリティグループで、
100.64.0.0/10アドレス範囲からのインバウンド ICMP トラフィックを許可する必要があります。これらのヘルスチェックは、ネットワークパスのカバレッジが限定的です。パブリックインターネットや専用接続などの外部ネットワークパスで中断が発生した場合、プローブ結果はすべてのクライアントの視点からの接続状態を正確に反映しない可能性があります。
自動 DNS 削除 (フェールオーバー): ヘルスチェックサービスがゾーンの障害を検出すると、対応する A レコードを DNS セットから自動的に削除します。新しいリクエストは、障害が発生したゾーンにルーティングされなくなります。この自動フェールオーバープロセス全体は、約 100 秒以内に完了することが想定されています。
手動 DNS 削除: ゾーンの DNS レコードを手動で削除すると、NLB ヘルスチェックサービスはその特定のゾーンの VIP のプローブを停止します。
アプリケーションがインスタンス IP アドレス (つまり、パブリック EIP またはプライベート VIP) を使用して NLB インスタンスに直接アクセスするように設定した場合、自動マルチゾーンディザスタリカバリ機能は利用できません。このシナリオでは、クライアントアプリケーションが、NLB インスタンスの IP アドレス間の定期的なヘルスチェックとフェールオーバー管理のための独自のロジックを実装する責任を負います。