1. はじめに
Private Service Connect(PSC)を使用すると、サービスを非公開で安全かつ簡単に利用できるようになります。このモデルでは、サービスの消費者が組織間でサービス プロデューサーに非公開で接続できるようになるため、ネットワーク アーキテクチャが大幅に簡素化され、Virtual Private Cloud ピアリングが不要になります。図 1 は、VPC ピアリングと PSC 属性を示しています。
図 1.
サービス コンシューマは、プロデューサー VPC のサブネット範囲を管理する負担を軽減しながら、サービスにプライベート IP を割り当てる方法を柔軟に選択できます。これで、Service Connect を使用して、VPC から選択した仮想 IP をこのようなサービスに簡単に割り当てることができます。
この Codelab では、MongoDB Atlas での PSC グローバル アクセスの使用を示す包括的な Private Service Connect アーキテクチャを構築します。
グローバル アクセスを使用すると、クライアントはリージョン境界を越えて Private Service Connect(PSC)に接続できます。これは、複数のリージョンにホストされているマネージド サービスに高可用性を構築する場合や、クライアントと同じリージョンにないサービスへのアクセスをクライアントに許可する場合に役立ちます。
2. グローバル アクセスの有効化
グローバル アクセスは、コンシューマ側の転送ルールで構成されるオプション機能です。次のコマンドは、構成方法を示しています。
gcloud beta compute forwarding-rules create psc-west \ --region=us-west1 \ --network=consumer-vpc \ --address=psc-west-address \ --target-service-attachment=projects/.../serviceAttachments/sa-west \ --allow-psc-global-access
--allow-psc-global-access
フラグは、Private Service Connect エンドポイントでグローバル アクセスを有効にします。- グローバル アクセスを使用すると、クライアントを Private Service Connect 転送ルールとは異なるリージョンに配置できますが、転送ルールは、接続先のサービス アタッチメントと同じリージョンに配置する必要があります。
- グローバル アクセスを有効にするために、プロデューサーのサービス アタッチメントで構成する必要はありません。これは純粋に消費者側のオプションです。
既存のエンドポイントのグローバル アクセスは、いつでもオンまたはオフに切り替えることができます。既存のエンドポイントでグローバル アクセスを有効にしても、アクティブな接続でトラフィックが中断することはありません。次のコマンドを使用して、既存の転送ルールでグローバル アクセスを有効にします。
gcloud beta compute forwarding-rules update psc-west --allow-psc-global-access
グローバル アクセスの無効化
既存の転送ルールでグローバル アクセスを無効にするには、--no-allow-psc-global-access
フラグを使用します。このコマンドを実行すると、アクティブなリージョン間トラフィックが終了します。
gcloud beta compute forwarding-rules update psc-west --no-allow-psc-global-access
3. 作成するアプリの概要
- マルチリージョン MongoDB Atlas クラスタ(図 2 のトポロジ)が作成され、us-west1 リージョンに 1 つのノード、us-west2 リージョンに 2 つのノードが配置されます。
- us-west1 と us-west2 の MongoDB クラスタにアクセスするコンシューマ VPC と関連付けられた VM。
- us-west1 リージョンと us-west2 リージョンに VPC と 2 つのサブネットがあり、各サブネットに 64 個以上の空き IP アドレスがある(/26 以下のサブネットを作成する)。
MongoDB クライアントは、コンシューマ VPC の vm1 にインストールされます。us-west1 のプライマリ ノードで障害が発生した場合、クライアントは us-west2 の新しいプライマリ ノードを使用して読み取りと書き込みを行うことができます。
図 2.
学習内容
- 2 つのリージョンにデプロイされた VPC とサブネットを作成する方法
- マルチリージョン MongoDB Atlas クラスタをデプロイする方法
- プライベート エンドポイントを作成する方法
- MongoDB に接続する方法
- マルチリージョン MongoDB フェイルオーバーを実行して検証する方法
必要なもの
- Google Cloud プロジェクト
- リージョンごとに /26 サブネットを指定します。
- MongoDB Atlas へのプロジェクト オーナーまたは組織オーナーのアクセス権。クラスタ階層 M10 以上の MongoDB クラスタを作成できます。(PoV の実行に必要な無料クレジットは GETATLAS を使用して入手してください)。
4. 始める前に
Codelab をサポートするようにプロジェクトを更新する
この Codelab では、$variables を使用して、Cloud Shell での gcloud 構成の実装を支援します。
Cloud Shell で次の操作を行います。
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
5. コンシューマの設定
コンシューマ VPC を作成する
Cloud Shell で次の操作を行います。
gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom
コンシューマ サブネットを作成する
Cloud Shell で次の操作を行います。
gcloud compute networks subnets create vm-subnet --project=$projectname --range=10.10.10.0/29 --network=consumer-vpc --region=us-west1
Cloud Shell で、us-west1 のコンシューマー エンドポイントを作成します。
gcloud compute networks subnets create psc-endpoint-us-west1 --project=$projectname --range=192.168.10.0/26 --network=consumer-vpc --region=us-west1
Cloud Shell で、us-west2 のコンシューマー エンドポイントを作成します。
gcloud compute networks subnets create psc-endpoint-us-west2 --project=$projectname --range=172.16.10.0/26 --network=consumer-vpc --region=us-west2
Cloud Router と NAT の構成
VM インスタンスに外部 IP アドレスがないため、この Codelab ではソフトウェア パッケージのインストールに Cloud NAT を使用します。
Cloud Shell で、Cloud Router を作成します。
gcloud compute routers create consumer-cr --network consumer-vpc --region us-west1
Cloud Shell で NAT ゲートウェイを作成します。
gcloud compute routers nats create consumer-nat --router=consumer-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-west1
インスタンス vm1 の構成
次のセクションでは、Compute Engine インスタンス vm1 を作成します。
Cloud Shell で、インスタンス vm1 を作成します。
gcloud compute instances create vm1 \
--project=$projectname \
--zone=us-west1-a \
--machine-type=e2-micro \
--network-interface=subnet=vm-subnet,no-address \
--maintenance-policy=MIGRATE \
--provisioning-model=STANDARD \
--create-disk=auto-delete=yes,boot=yes,device-name=vm1,image=projects/ubuntu-os-cloud/global/images/ubuntu-2004-focal-v20230213,mode=rw,size=10,type=projects/$projectname/zones/us-west1-a/diskTypes/pd-balanced
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump -y
sudo apt-get install dnsutils -y"
IAP に VM インスタンスへの接続を許可するには、次のファイアウォール ルールを作成します。
- IAP を使用してアクセス可能にするすべての VM インスタンスに適用します。
- IP 範囲 35.235.240.0/20 からの上り(内向き)トラフィックを許可します。この範囲には、IAP が TCP 転送に使用するすべての IP アドレスが含まれています。
Cloud Shell で、IAP ファイアウォール ルールを作成します。
gcloud compute firewall-rules create ssh-iap-consumer-vpc \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
6. マルチリージョン MongoDB Atlas クラスタを作成する
- PSC の設定を開始する前に、Atlas クラスタを設定する必要があります。MongoDB Atlas は、次の 2 つの方法でサブスクライブできます。
- Google Cloud アカウントをお持ちの場合は、Google Cloud Marketplace から購入できます。サブスクリプションを設定する方法については、ドキュメントをご覧ください。
- Atlas の登録ページ。
- Atlas に登録したら、下図のように [Build a Database] ボタンをクリックします。
- 新しいクラスタを作成する → 専用
- クラウド プロバイダとリージョン → Google Cloud
- マルチクラウド、マルチリージョン、ワークロードの分離 → 選択済み(青いチェック)
- 選択可能なノード → us-west1(1 ノード)、us-west2(2 ノード)
- クラスタ階層 → M10、その他の設定はすべてデフォルトのままにします。
- クラスタ名 → psc-mongodb-uswest1-uswest2
- 選択 → [クラスタを作成]
- データベースの作成には 7 ~ 10 分かかります。
デプロイ後のクラスタのビュー
7. us-west1 のプライベート エンドポイントの作成
- Atlas アカウントにログインし、プロジェクトに移動します。
すべてのデータベースへの読み取り/書き込みアクセスを許可する新しいユーザーを作成する
[セキュリティ] → [データベース アクセス] で、新しいデータベース ユーザーの追加を選択します。次の例は、codelab として構成されたユーザー名とパスワードです。任意のデータベースに対する読み取りと書き込みの組み込みロールを選択してください。
- [セキュリティ] > [ネットワーク アクセス] の [IP アクセスリスト] にエントリを入力する必要がない
MongoDB Atlas でプライベート エンドポイントを準備する
- [ネットワーク アクセス] → [プライベート エンドポイント] → [専用クラスタ] → [プライベート エンドポイントを追加] を選択
クラウド プロバイダ
- [Google Cloud] を選択し、[次へ] をクリックします。
サービスの接続
- リージョン us-west1 を選択し、[次へ] をクリックします。
Endpoints
- Private Service Connect エンドポイントを作成するには、次の情報を指定します。
- Google Cloud プロジェクト ID: 詳細については、[手順を表示] を選択します。
- VPC 名: consumer-vpc
- サブネット名: psc-endpoint-us-west1
- Private Service Connect エンドポイントの接頭辞: psc-endpoint-us-west1
エンドポイントを設定する
次のセクションでは、setup_psc.sh という名前でローカルに保存するシェル スクリプトを生成します。保存したら、シェル スクリプトを編集して psc のグローバル アクセスを許可します。この操作は、Google Cloud プロジェクトの Cloud Shell 内で実行できます。
- シェル スクリプトの例(出力値は異なります)
- MongoBD コンソールからシェル スクリプトをコピーし、Google Cloud Cloud Shell ターミナルに内容を保存します。スクリプトは setup_psc.sh として保存してください。
更新前の例:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west1-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i
done
if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json
グローバル アクセスをサポートするようにシェル スクリプトを更新する
nano または vi エディタを使用して、次の構文でシェル スクリプトを特定して更新します。
gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
更新後の例:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west1-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done
if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json
シェル スクリプトを実行する
スクリプト setup_psc.sh に移動して実行します。完了すると、atlasEndpoints-psc-endpoint-us-west1.json というファイルが作成されます。json ファイルには、デプロイの次のステップに必要な IP アドレスと Private Service Connect エンドポイント名のリストが含まれています。
Cloud Shell で次の操作を行います。
sh setup_psc.sh
スクリプトが完了したら、Cloud Shell エディタを使用して atlasEndpoints-psc-endpoint-us-west1.json をローカルにダウンロードします。
JSON ファイルをアップロードする
前に保存した JSON ファイル atlasEndpoints-psc-endpoint-us-west1.json をアップロードします。
[作成] を選択します。
Private Service Connect エンドポイントを検証する
MongoDB UI で、プロジェクトに移動し、[セキュリティ]、[ネットワーク アクセス]、[プライベート エンドポイント] の順に選択します。[タブ]、[専用クラスタ] を選択すると、エンドポイントが使用可能になるまでに 10 分ほどかかります。
利用可能なステータス
Google Cloud コンソールで、[ネットワーク サービス] に移動し、[Private Service Connect] を選択します。[接続エンドポイント] タブを選択して、保留中から承認済みに移行するコンシューマ エンドポイントを表示します(例を以下に示します)。
8. us-west2 のプライベート エンドポイントの作成
- Atlas アカウントにログインし、プロジェクトに移動します。
MongoDB Atlas でプライベート エンドポイントを準備する
- [ネットワーク アクセス] → [プライベート エンドポイント] → [専用クラスタ] → [プライベート エンドポイントを追加] を選択
クラウド プロバイダ
- [Google Cloud] を選択し、[次へ] をクリックします。
サービスの接続
- リージョン us-west2 を選択し、[次へ] をクリックします。
Endpoints
- Private Service Connect エンドポイントを作成するには、次の情報を指定します。
- Google Cloud プロジェクト ID: 詳細については、[手順を表示] を選択します。
- VPC 名: consumer-vpc
- サブネット名: psc-endpoint-us-west2
- Private Service Connect エンドポイントの接頭辞: psc-endpoint-us-west2
エンドポイントを設定する
次のセクションでは、setup_psc.sh という名前でローカルに保存するシェル スクリプトを生成します。保存したら、シェル スクリプトを編集して psc のグローバル アクセスを許可します。この操作は、Google Cloud プロジェクトの Cloud Shell 内で実行できます。
- シェル スクリプトの例(出力値は異なります)
- MongoBD コンソールからシェル スクリプトをコピーし、Google Cloud Cloud Shell ターミナルに内容を保存します。スクリプトは setup_psc.sh として保存してください。
更新前のサンプル:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west2-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i
done
if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json
グローバル アクセスをサポートするようにシェル スクリプトを更新する
nano または vi エディタを使用して、次の構文でシェル スクリプトを特定して更新します。
gcloud beta compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2v
n1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done
更新後の例:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west2-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud beta compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2v
n1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done
if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json
シェル スクリプトを実行する
スクリプト setup_psc.sh に移動して実行します。完了すると、atlasEndpoints-psc-endpoint-us-west2.json というファイルが作成されます。json ファイルには、デプロイの次のステップに必要な IP アドレスと Private Service Connect エンドポイント名のリストが含まれています。
Cloud Shell で次の操作を行います。
sh setup_psc.sh
スクリプトが完了したら、Cloud Shell エディタを使用して atlasEndpoints-psc-endpoint-us-west2.json をローカルにダウンロードします。
JSON ファイルをアップロードする
前に保存した JSON ファイル atlasEndpoints-psc-endpoint-us-west2.json をアップロードします。
[作成] を選択します。
Private Service Connect エンドポイントを検証する
MongoDB UI で、プロジェクトに移動し、[セキュリティ]、[ネットワーク アクセス]、[プライベート エンドポイント] の順に選択します。[専用クラスタ] タブを選択すると、エンドポイントは 10 分後に利用可能になります。
利用可能なステータス:
Google Cloud コンソールで、[ネットワーク サービス] に移動し、[Private Service Connect] を選択します。[接続エンドポイント] タブを選択して、保留中から承認済みに移行するコンシューマ エンドポイントを表示します(例を以下に示します)。コンシューマ エンドポイントには合計 100 個のエンドポイントがデプロイされています。次のステップに進む前に、承認済みに移行する必要があります。
9. プライベート エンドポイントから MongoDB Atlas に接続する
Private Service Connect が承認されると、MongoDB クラスタを更新するためにさらに時間(10 ~ 15 分)が必要です。MongoDB UI では、クラスタの更新がグレーの枠線で示されているため、限定公開エンドポイントに接続できません。
デプロイメントを特定して [接続] を選択します(グレーのボックスが表示されなくなりました)
[接続タイプを選択] → [プライベート エンドポイント]、[接続方法を選択する] の順に選択します。
[MongoDB Shell を使用して接続] を選択します。
[I do not have the MongoDB Shell installed, Ubuntu 20.4] を選択し、手順 1 と手順 3 の内容をメモ帳にコピーします。
10. mongosh アプリケーションをインストールする
インストールの前に、手順 1 と 3 でコピーした値に基づいてコマンド文字列を作成する必要があります。その後、Cloud Shell を使用して vm1 に SSH 接続し、mongosh アプリケーションをインストールして、プライマリ(us-west1)データベースに対する検証を行います。consumer-vpc で vm1 を作成するときに、Ubuntu 20.4 イメージがインストールされました。
接続方法を選択する: ステップ 1、ダウンロード URL をコピーする
コマンド文字列の例。カスタム値に置き換えます。
https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb
接続方法を選択する、ステップ 3。
コマンド文字列の例。カスタム値に置き換えます。
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
vm1 にログインする
Cloud Shell で次の操作を行います。
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
Cloud Shell で IAP を使用して vm1 にログインします。タイムアウトが発生した場合は再試行します。
gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap
OS からインストールを実行する
Cloud Shell の OS ログインからインストールを行います。詳細については、こちらをご覧ください。以下の構文をカスタム文字列に置き換えてください。
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
オペレーションは
OK
.
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update -y
wget https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb
sudo dpkg -i mongodb-mongosh_1.7.1_amd64.deb
MongoDB デプロイメントに接続する
Cloud Shell でログインし、次の操作を行います。設定されているユーザー名とパスワードは codelab です。
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
たとえば次のようになります。
データベースに対してコマンドを実行する
Cloud Shell でログインし、次の操作を行います。
show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne({"Name":"cosmo"})
11. フェイルオーバーのアクティブな MongoDB リージョン、us-west1
フェイルオーバーを実行する前に、us-west1 がプライマリであり、us-west2 に 2 つのセカンダリ ノードがあることを確認します。
[Database] > [psc-mongodb-uswest1-uswest2] > [Overview] に移動します。
次のセクションでは、us-west1 にある vm1 にログインし、プライマリ MongoDB クラスタ リージョン us-west1 をフェイルオーバーし、us-west2 の MongoDB クラスタからデータベースに引き続きアクセスできることを確認します。
Atlas UI から、プライマリ フェイルオーバーとリージョン フェイルオーバーの両方をテストできます。
- Atlas UI にログインします。
- クラスタ名 psc-mongodb-uswest1-uswest2 の横にある [...] をクリックし、[サービス停止をテスト] をクリックします。
- [リージョンの停止] を選択 → リージョンを選択します。
- プライマリ リージョン us-west1 を選択して [リージョンの停止をシミュレート] を選択します。
クラスタを選択すると、3 ~ 4 分後に停止シミュレーションが表示されます。
ウィンドウを閉じる
us-west1 が停止し、us-west2 がプライマリとして引き継がれていることを確認します。
[Database] > [psc-mongodb-uswest1-uswest2] > [Overview] に移動します。
新しいプライマリ us-west2 によるクラスタへの接続を確認する
us-west1 にある vm1 にログインし、us-west2 の mongodb にアクセスして、Private Service Connect のグローバル アクセスを確認します。
Cloud Shell セッションが終了した場合は、次の操作を行います。
Cloud Shell で次の操作を行います。
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
Cloud Shell で IAP を使用して vm1 にログインします。タイムアウトが発生した場合は再試行します。
gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap
MongoDB デプロイメントに接続する
Cloud Shell でログインし、次の操作を行います。
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
たとえば次のようになります。
データベースに対してコマンドを実行する
Cloud Shell でログインし、次の操作を行います。
show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne()
exit
成功: PSC グローバル アクセスにより、リージョン間でコンシューマ エンドポイントをシームレスに接続できることを確認しました。これにより、高可用性が向上し、リージョンの停止時にも対応できます。この Codelab では、us-west1 にあるプライマリ ノードで MongoDB リージョン フェイルオーバーが発生したため、セカンダリ リージョン us-west2 がプライマリを引き継ぎました。クラスタがリージョンの停止につながりましたが、us-west1 にあるコンシューマ vm1 は us-west2 の新しいプライマリ クラスタに正常に到達しました。
12. クリーンアップ
Cloud コンソールからコンシューマ エンドポイントを削除する
[ネットワーク サービス] → [Private Service Connect] → [接続済みエンドポイント] に移動します。
フィルタ psc-endpoint を使用して、ラボ以外のコンシューマ エンドポイントが削除されないようにします。すべてのエンドポイントを選択 → [削除]
コンシューマ エンドポイントに関連付けられている静的内部 IP アドレスを削除する
VPC ネットワーク → consumer-vpc → 静的内部 IP アドレスに移動します。
フィルタ psc-endpoint を使用して、ラボ以外のコンシューマ エンドポイントが削除されないようにし、ページあたりの行数を 100 に増やします。すべてのエンドポイントを選択 → リリース
Cloud Shell で、Codelab コンポーネントを削除します。
gcloud compute instances delete vm1 --zone=us-west1-a --quiet
gcloud compute networks subnets delete psc-endpoint-us-west1 vm-subnet --region=us-west1 --quiet
gcloud compute networks subnets delete psc-endpoint-us-west2 --region=us-west2 --quiet
gcloud compute firewall-rules delete ssh-iap-consumer --quiet
gcloud compute routers delete consumer-cr --region=us-west1 --quiet
gcloud compute networks delete consumer-vpc --quiet
Atlas UI でクラスタ psc-mongodb-uswest1-uswest2 を特定し、シミュレーションを終了します。
[サービス停止シミュレーションを終了] > [終了] を選択します。
クラスタは us-west1 をプライマリとして復元します。このプロセスには 3 ~ 4 分ほどかかります。完了したらクラスタを終了します。ステータスの変更を示すグレーの枠線に注意してください。
クラスタ名を挿入 → 終了
us-west1 と us-west2 に関連付けられているプライベート エンドポイントを削除する
Atlas UI で、[セキュリティ] → [ネットワーク アクセス] → [プライベート エンドポイント] の順に移動し、[終了] を選択します。
13. 完了
これで、リージョン間の MongoDB へのグローバル アクセスが可能な Private Service Connect エンドポイントを正常に構成して検証できました。コンシューマ VPC、マルチリージョン MongoDB、コンシューマ エンドポイントが正常に作成されました。us-west1 にある VM が、リージョン フェイルオーバー時に us-west1 と us-west2 の両方の MongoDB に正常に接続しました。
Cosmopup はコードラボが大好きです。
次のステップ
以下の Codelab をご覧ください。
- GKE を使用した Private Service Connect によるサービスの公開と使用
- Private Service Connect でサービスを公開して使用する
- Private Service Connect と内部 TCP プロキシ ロードバランサを使用して、ハイブリッド ネットワーキング経由でオンプレミス サービスに接続する
- DNS の自動構成で Private Service Connect を使用する