ビジネスアプリケーションが複数のリージョンに分散している場合、さまざまな PolarDB クラスターのエンドポイントの管理と切り替えは複雑で、エラーが発生しやすくなります。グローバルデータベースネットワーク (GDN) のグローバルドメイン名機能は、単一で統一されたクロスリージョンクラスターエンドポイントを提供することで、この問題を解決します。アプリケーションは、どのリージョンにデプロイされているかに関係なく、このグローバルドメイン名を使用して最寄りのクラスターに接続できます。プライマリクラスターで障害が発生した場合、アプリケーションは自動的に新しいプライマリクラスターに再接続します。これにより、マルチリージョンアーキテクチャが簡素化され、シームレスでアプリケーションを意識したディザスタリカバリが提供されます。
仕組み
グローバルドメイン名機能は、Private Hosted Zone サービスを使用して、お使いの VPC 内でインテリジェントな DNS 名前解決を提供します。
メカニズム: グローバルドメイン名機能を有効にすると、システムは自動的に
[gdnid].gdn.rds.aliyuncs.comというフォーマットのドメイン名を作成します。このドメイン名は、GDN 内のすべてのクラスターの VPC に関連付けられます。プライマリ/セカンダリ スイッチオーバーの例:
通常のプライマリ/セカンダリ スイッチオーバー: 北京リージョンのプライマリクラスターがフェールオーバーしてセカンダリクラスターになり、その結果、上海リージョンのセカンダリクラスターがプライマリに昇格します。グローバルドメイン名を介して接続する北京リージョンのアプリケーションは、最近接アクセスのために引き続き北京クラスターエンドポイントにルーティングされます。読み取りリクエストは、セカンダリになった北京クラスターからローカルで処理されますが、書き込みリクエストは上海の新しいプライマリクラスターに自動的にルーティングされます。
強制プライマリ/セカンダリ スイッチオーバー: グローバルドメイン名の構成は同期的に更新され、新しいプライマリクラスターに引き続きアクセスできるようになります。たとえば、元のプライマリクラスターが GDN から削除され、新しいプライマリクラスターが上海にある場合、グローバルドメイン名に接続する北京リージョンのアプリケーションは、クロス VPC アクセスを介して上海クラスターエンドポイントに自動的にルーティングされます。この場合、読み取りと書き込みの両方のすべてのリクエストが、上海の新しいプライマリクラスターにルーティングされます。
重要な注意点
グローバルドメイン名を有効にした後、クラスターの VPC と vSwitch を切り替える場合は、新しい VPC と GDN 内の他のクラスターの VPC との間のネットワーク接続を再確立する必要があります。
グローバルドメイン名は、リージョンレベルでのみトラフィック分散を提供します。同じリージョンに複数のクラスターが存在する場合、サービスリクエストはクラスターのいずれかにランダムに送信されます。
課金
グローバルドメイン名機能を有効にして使用すると、次の料金が発生します。
プライベート DNS 名前解決料金: グローバルドメイン名機能は Private Hosted Zone に基づいています。課金の詳細については、「Private Hosted Zone の料金」をご参照ください。
リージョン間データ転送料金: 強制プライマリ/セカンダリ スイッチオーバーの後、元のプライマリクラスターと新しいプライマリクラスターが異なるリージョンにある場合、リージョン間のデータ転送料金が課金されます。この料金は VPC ピアリング接続によって課金されます。課金の詳細については、「VPC ピアリング接続の課金」をご参照ください。
前提条件: ネットワークと権限の構成
グローバルドメイン名を作成する前に、次の準備を完了して、GDN 内のクラスター間の適切なネットワーク接続とアクセス権限を確保してください。
GDN クラスターが配置されている VPC の CIDR ブロックは重複してはなりません。重複する場合は、vSwitch の CIDR ブロックが重複しないようにしてください。
PrivateZone サービスの有効化: Alibaba Cloud DNS PrivateZone にログオンし、[ゾーンの追加] ボタンをクリックします。
VPC 間のネットワーク接続の確立: GDN 内のクラスターをホストする VPC の各ペア間にピアリング接続を作成します。たとえば、北京、上海、深センのリージョンにクラスターがある場合、北京-上海、北京-深セン、上海-深センの 3 つのピアリング接続を作成する必要があります。詳細については、「VPC ピアリング接続」をご参照ください。
クラスターのホワイトリストの構成: GDN 内の各クラスターについて、他のすべてのクラスターの VPC の CIDR ブロックをその クラスターのホワイトリストに追加します。
グローバルドメイン名の有効化
GDN の作成時、または既存の GDN に対してグローバルドメイン名を有効にできます。
GDN の作成時:
PolarDB コンソールにログオンします。左側のナビゲーションウィンドウで、Global Database Network をクリックします。
Global Database Network ページで、GDN の作成 をクリックします。
[グローバルデータベースネットワーク (GDN) の作成] ダイアログボックスで、[グローバルドメイン名] スイッチをオンにします。
既存の GDN の場合:
PolarDB コンソールにログオンします。左側のナビゲーションウィンドウで、[グローバルデータベースネットワーク (GDN)] をクリックします。
[グローバルデータベースネットワーク (GDN)] ページで、ターゲット GDN を見つけ、その [グローバルデータベースネットワーク ID] をクリックして GDN 詳細ページに移動します。
[グローバルドメイン名] を見つけ、右側の [有効化] ボタンをクリックします。
この機能を有効にすると、システムは自動的に AliyunServiceRoleForPolarDB という名前のサービスリンクロールを作成します。このロールは、PolarDB に Private Hosted Zone などの他のクラウドリソースにアクセスする権限を付与します。
グローバルドメイン名の検証
構成後、各リージョンの VPC 内からドメイン名の名前解決と接続性を検証します。
(オプション) VPC ピアリング接続の検証:
たとえば、プライマリクラスターが北京リージョンにあり、セカンダリクラスターが上海リージョンにあるとします。北京リージョンの ECS インスタンスで、MySQL クライアントを使用して上海クラスターの内部エンドポイントに接続します。接続が成功した場合、北京 VPC と上海 VPC 間のピアリング接続は期待どおりに機能しています。上海から北京へのテストを繰り返します。
mysql -hpc-xxxxxxxx.rwlb.rds.aliyuncs.com -P3306 -uxxxx -pxxxx最近接アクセスの検証: 各リージョンの VPC 内で、グローバルドメイン名がローカルクラスターエンドポイントに解決されることを確認します。
プライマリクラスターと同じ VPC (たとえば、北京リージョン) にデプロイされている ECS インスタンスにログオンします。
ping <global_domain_name>とping <primary_cluster_internal_endpoint>を実行します。期待される結果: 両方のコマンドによって返される IP アドレスは同じです。これは、グローバルドメイン名が最寄りのクラスターの IP アドレスに解決されることを示します。
同じ方法を使用してセカンダリクラスターを検証します。
フェールオーバーの検証 (訓練の実行): プライマリ/セカンダリ スイッチオーバーの後、アプリケーションがグローバルドメイン名を介して新しいプライマリクラスターに自動的に接続できるかどうかをテストします。
ターゲット GDN の詳細ページに移動します。[クラスター] セクションで、ターゲットのセカンダリクラスターを見つけます。[アクション] 列で、[プライマリクラスターへの切り替え] をクリックします。詳細については、「プライマリクラスターの切り替え」をご参照ください。
スイッチオーバー後、グローバルドメイン名に再接続し、回復時間を確認します。
グローバルドメイン名の管理
必要に応じて、いつでもグローバルドメイン名を有効または無効にできます。
PolarDB コンソールにログオンします。左側のナビゲーションウィンドウで、[グローバルデータベースネットワーク (GDN)] をクリックします。
[グローバルデータベースネットワーク (GDN)] ページで、ターゲット GDN を見つけ、その [GDN ID] をクリックして GDN 詳細ページに移動します。
[グローバルドメイン名] を見つけ、右側の [無効化] ボタンをクリックします。
ダイアログボックスの注意をよくお読みください。次に、[OK] をクリックします。
GDN のグローバルドメイン名はいつでも再度有効にできます。