チェックポイント
Prepare a source PostgreSQL database for migration
/ 20
Migrate a stand-alone PostgreSQL database to Cloud SQL
/ 20
Promote a Database Migration Services continuous replica to a stand-alone instance.
/ 20
Update permissions and add IAM roles to users
/ 10
Create networks and firewalls
/ 10
Create a BigQuery log sink
/ 20
Set Up a Google Cloud Network: チャレンジラボ
GSP314
概要
チャレンジラボでは、シナリオと一連のタスクが提供されます。各ステップの説明に沿って進める形式ではなく、クエスト内のラボで習得したスキルを駆使して、ご自身でタスクを完了していただきます。タスクが適切に完了したかどうかは、このページに表示される自動スコアリング システムで確認できます。
チャレンジラボは、Google Cloud の新しいコンセプトについて学習するためのものではありません。デフォルト値を変更する、エラー メッセージを読み調査を行ってミスを修正するなど、習得したスキルを応用する能力が求められます。
100% のスコアを達成するには、制限時間内に全タスクを完了する必要があります。
このラボは、「Set Up a Google Cloud Network」スキルバッジに登録している受講者を対象としています。準備が整ったらチャレンジを開始しましょう。
設定
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
チャレンジ シナリオ
あなたは靴とアパレルのオンライン直販企業 Cymbal Direct でクラウド エンジニアとして働いています。Cymbal Direct の事業は急速に拡大しており、その拡大戦略の一環として新会社の Antern を買収しました。Antern は大量のデータを持つ既存の e コマース ショップであり、Cymbal Direct の既存のクラウド環境に適切に統合されれば、ビジネスをさらに拡大し、より多くの顧客にリーチするために非常に有用です。この買収の一環として、Cymbal Direct は Antern の既存のワークロードとインフラストラクチャをオンプレミスから Google Cloud に移行したいと考えています。
Antern には、Cymbal Direct の既存のクラウド環境に移行、コピー、または再作成する必要がある次のリソースがあります。
- Cloud SQL for PostgreSQL に移行する必要がある PostgreSQL データベース(仮想マシン上で実行されている)
- GKE にデプロイするコンテナ化されたマイクロサービス アプリケーション コード(テスト中に信頼性の問題が報告されており、トラブルシューティングが必要)
- 新しいリソースを接続するために作成する必要がある 2 つのサブネットワークとファイアウォールを備えた VPC ネットワーク
- 特定のリソースに対して適切な権限とロールを付与する必要がある複数のプロジェクトにまたがる IAM ユーザー
あなたは、Cymbal Direct がこれらの目標を達成できるよう支援するタスクを任されました。
タスク 1: スタンドアロン PostgreSQL データベースを Cloud SQL for PostgreSQL インスタンスに移行する
Antern は、オンプレミス VM 上で実行される PostgreSQL データベースを使用して、e コマース ショップの注文を保存してきました。買収戦略の一環として、Cymbal は Database Migration Service を使用してこのデータベースを Cloud SQL for PostgreSQL に移行するようリクエストしました。データベースを Cloud SQL 上で実行することで、Cymbal は PostgreSQL がもたらすすべての運用上のメリットに加え、エンタープライズ クラスの可用性、安定性、セキュリティを得られます。
このタスクでは、Database Migration Service の継続的な移行ジョブと VPC ピアリング接続を使用して、antern-postgresql-vm
仮想マシン上で実行されている orders
というスタンドアロンの PostgreSQL データベースを Cloud SQL for PostgreSQL インスタンスに移行する必要があります。
移行用のスタンドアロン PostgreSQL データベースを準備する
このサブタスクでは、Database Migration Service による移行の要件を満たすようにスタンドアロン PostgreSQL データベースを準備する必要があります。
このサブタスクを完了するには、次の手順を完了します。
- Database Migration Service に必要な Google Cloud API を有効にします。
Database Migration Service が機能するためには、Database Migration API と Service Networking API が有効になっている必要があります。プロジェクトでこれらの API を有効にします。
-
pglogical
データベース拡張機能を使用して、antern-postgresql-vm
仮想マシン上のターゲット データベースをアップグレードします。
Compute インスタンス VM antern-postgresql-vm
上のスタンドアロン PostgreSQL データベースに、pglogical データベース拡張機能をインストールして構成する必要があります。インストールする必要がある pglogical データベース拡張パッケージの名前は、postgresql-13-pglogical
です。
pglogical データベース拡張機能の構成を完了するには、PostgreSQL 構成ファイル /etc/postgresql/13/main/postgresql.conf
を編集して pglogical データベース拡張機能を有効にし、/etc/postgresql/13/main/pg_hba.conf
を編集してすべてのホストからのアクセスを許可する必要があります。
- スタンドアロン データベースでデータベース移行専用のユーザーを作成します。
antern-postgresql-vm
仮想マシン上でのスタンドアロン PostgreSQL のインストールで作成する新規ユーザーは、次のユーザー名とパスワードを使用して構成する必要があります。
-
移行ユーザー名 :
-
移行ユーザー パスワード :
DMS_1s_cool!
- そのユーザーに、データベースを移行するために必要な権限とアクセス許可を付与します。
Database Migration Service では、移行ユーザーが移行のターゲット データベース(この場合は orders
データベースと postgres
データベース)の特定のスキーマと関係に対する権限を持っている必要があります。
- Database Migration Service では、移行されるすべてのテーブルに主キーが必要です。ユーザーに必要な権限を付与したら、次のコマンドを実行して主キーを
inventory_items
テーブルに追加し、psql を終了します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
スタンドアロン PostgreSQL データベースを Cloud SQL for PostgreSQL インスタンスに移行する
このサブタスクでは、Database Migration Service を使用して移行を実行する必要があります。
このサブタスクを完了するには、次の手順を完了します。
- 先ほど作成した移行ユーザー
の認証情報を使用して、スタンドアロン PostgreSQL データベース用の新しい Database Migration Service 接続プロファイルを作成します。
-
ユーザー名 :
-
パスワード :
DMS_1s_cool!
-
リージョン :
移行元の Compute インスタンスの内部 IP アドレスを使用して接続プロファイルを構成する必要があります。
- 継続的な Database Migration Service ジョブを新規に作成します。
- [移行ジョブ名] に「
」と入力します。 - [移行元データベース エンジン] で [
PostgreSQL
] を選択します。 - [移行先データベース エンジン] で [
Cloud SQL for PostgreSQL
] を選択します。 -
宛先リージョン :
移行ジョブ構成の一環として、移行先 Cloud SQL インスタンスの次のプロパティを必ず指定してください。
-
移行先インスタンス ID は
に設定する必要があります - 移行されたインスタンスのパスワードは
supersecret!
に設定する必要があります - データベースのバージョンは Cloud SQL for PostgreSQL 13 に設定する必要があります
- Cloud SQL エディションは [Enterprise] のみを選択します
-
リージョンは
に設定する必要があります - 接続には、パブリック IP とプライベート IP の両方を設定する必要があります
- プライベート IP には、自動的に割り振られた IP 範囲を使用し、[割り振りと接続] をクリックします
- 4 vCPU、16 GB の標準マシンシェイプを選択します
- ストレージの種類には SSD を使用します
- ストレージ容量を 10 GB に設定します
接続方法については、デフォルトの VPC ネットワークで VPC ピアリングを使用する必要があります。
- テストして、継続的な移行ジョブを開始します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
データの読み取りと書き込みのために Cloud SQL インスタンスをスタンドアロン インスタンスにプロモートする
- このタスクでは、Cloud SQL for PostgreSQL インスタンスをスタンドアロン インスタンスにプロモートして移行を完了する必要があります。
- プロモートが完了すると、ジョブのステータスが [完了] に更新されます。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 2: 権限を更新し、IAM ロールをユーザーに追加する
データベースが Cloud SQL for PostgreSQL インスタンスに移行されたので、Antern チームと Cymbal チームの異なるメンバーのユーザーロールを IAM により更新する必要があります。具体的には、Antern 編集者に Cloud SQL データベースへのユーザー アクセス権を、Cymbal オーナーに Cloud SQL リソースを完全に制御できる管理者権限を、Cymbal 編集者にプロジェクトの編集者権限を付与します。
-
Antern 編集者ユーザーに CloudSQL データベースの Cloud SQL インスタンス ユーザーのロールを付与します。ユーザー名は
です。 - 先ほど作成した Cloud SQL データベースに移動します。ユーザー セクションで、作成したデータベースに Antern 編集者のユーザー アカウントを追加します。Cloud IAM 認証を使用し、プリンシパルには上記のユーザー名を使用します。
-
Cymbal オーナー ユーザーに CloudSQL データベースの Cloud SQL 管理者のロールを付与します。ユーザー名は
です。 - 先ほど作成した Cloud SQL データベースに移動します。ユーザー セクションで、作成したデータベースに Cymbal オーナーのユーザー アカウントを追加します。Cloud IAM 認証を使用し、プリンシパルには上記のユーザー名を使用します。
-
Cymbal 編集者のユーザーロールを閲覧者から編集者に変更します。ユーザー名は
です。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 3: ネットワークとファイアウォールを作成する
買収戦略の一環として、内部でリソースを接続するための VPC ネットワークを Cymbal プロジェクトで再作成する必要があります。具体的には、リソース間の接続を開くために、2 つのサブネットとファイアウォールを持つ VPC ネットワークを作成する必要があります。さらに、このネットワーク上では、チームが SSH や RDP を使用して Linux および Windows マシンに接続でき、ICMP 経由でネットワーク通信の問題を診断できる必要があります。
このタスクでは、これらの要件を満たす VPC ネットワークとファイアウォール ルールを作成します。
2 つのサブネットワークを持つ VPC ネットワークを作成する
-
および という 2 つのサブネットを持つ という名前の VPC ネットワークを作成します。リージョン動的ルーティング モードを使用します。 -
のリージョンを に設定します。 - IP スタックタイプを [IPv4(シングル スタック)] に設定します。
- IPv4 範囲を
10.10.10.0/24
に設定します。
-
のリージョンを に設定します。 - IP スタックタイプを [IPv4(シングル スタック)] に設定します。
- IPv4 範囲を
10.10.20.0/24
に設定します。
VPC ネットワークのファイアウォール ルールを作成する
-
という名前のファイアウォール ルールを作成します。 - ネットワークには
を使用します。 - 優先度を [65535] に、トラフィックを [内向き] に、アクションを [許可] に設定します。
- ターゲットはネットワーク内のすべてのインスタンスに設定し、IPv4 範囲は
0.0.0.0/24
に設定する必要があります。 - プロトコルを [TCP] に、ポートを
22
に設定します。
- ネットワークには
-
という名前のファイアウォール ルールを作成します。 - ネットワークには
を使用します。 - 優先度を [65535] に、トラフィックを [内向き] に、アクションを [許可] に設定します。
- ターゲットはネットワーク内のすべてのインスタンスに設定し、IPv4 範囲は
0.0.0.0/24
に設定する必要があります。 - プロトコルを [TCP] に、ポートを
3389
に設定します。
- ネットワークには
-
という名前のファイアウォール ルールを作成します。 - ネットワークには
を使用します。 - 優先度を [65535] に、トラフィックを [内向き] に、アクションを [許可] に設定します。
- ターゲットはネットワーク内のすべてのインスタンスに設定し、IPv4 範囲は
0.0.0.0/24
に設定する必要があります。 - プロトコルを [ICMP] に設定します。
- ネットワークには
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
タスク 4: 壊れた GKE クラスタのトラブルシューティングと修正を行う
e コマース ウェブサイトの GKE クラスタをデプロイした後、チームから、GKE クラスタには対処すべき既知の問題がいくつかあると通知されました。チームは修正する必要がある 3 つのバグを発見しました。
- バグ #1: フロントエンド サービスのレイテンシが大きすぎる
- バグ #2: 評価が最新でない
- バグ #3 レコメンデーション サービスのクラッシュバグ
買収戦略の一環として、あなたは
ヒント:
- バグ #1: デモ アプリケーションの外部 IP にアクセスし、目に見える変更があるかどうかを確認します。モニタリング ダッシュボードを使用して、各サービスに関連付けられた指標を確認することもできます。
-
バグ #2: 商品評価は、Google AppEngine 上でホストされる「評価サービス」によって管理されています。評価データは、最近送信された各商品の新しい評価スコアをすべて収集し、新しい評価を計算する API エンドポイントを定期的に呼び出すことによって最新の状態に保たれます。AppEngine サービスのログを調べて、評価サービスが正常に動作しているかどうかを確認してください。別のチームメンバーは、これは
main.py
ファイルの問題に関係している可能性があると述べていました。 - バグ #3: 問題が発生するまでウェブサイトを閲覧し、Cloud Logging を使用して各サービスからエクスポートされたログを表示します。別のチームメンバーは、このクラッシュバグはサービスの整数変換のステージが原因である可能性があると述べていました。
BigQuery ログシンクを作成する
根本的な問題を解決する前に、壊れたサービスに関連するエラーを送信するためのログシンクを作成するようにリクエストされました。次に、IAM を使用して、Antern のユーザーに BigQuery へのさまざまなレベルのアクセス権を付与し、データセットを表示および操作できるようにする必要があります。
-
ログ エクスプローラを使用して、実行中の GKE アプリを調査し、サービスにエラーがあるかどうかを調べます。ヒント: 重要度が
ERROR
のログを探す必要があります。 -
サービスのエラーログを特定したら、ログを BigQuery に送信するためのシンクを作成します。
- シンクに
という名前を付けます。 - 宛先として、
gke_app_errors_sink
という名前の BigQuery データセットを作成し、ロケーションを us(米国の複数のリージョン)に設定します。 -
包含フィルタには、
resource.type
、、 severity
を必ず含めてください。
- シンクに
-
Antern 編集者のユーザーに、このプロジェクトの BigQuery データ閲覧者のロールを付与します。ユーザー名は
です。 -
Antern オーナーのユーザーに、このプロジェクトの BigQuery 管理者のロールを付与します。ユーザー名は
です。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
GKE クラスタを修正する
サービス内のエラーに対して BigQuery にログシンクが作成されたので、チームのエンジニア数名が調査を行い、問題を修正するための正しい手順を考えました。このタスクでは、ソリューション コードをダウンロードして実行し、GKE クラスタ内のサービスを修正します。
- GKE クラスタ cloud-ops-sandbox に接続し、次のコマンドを実行して問題を修復します。プロンプトが表示されたら、確認用の質問に答えます。
- e コマース ショップが適切に動作していることを確認します。
お疲れさまでした
クラウド エンジニアとしての 1 日が終わりました。PostgreSQL データベースの Cloud SQL for PostgreSQL インスタンスへの移行、サブネットワークとファイアウォールを備えた VPC ネットワークの作成、GKE クラスタの問題のトラブルシューティング、IAM ユーザーへの複数プロジェクトにわたる権限の付与を行いました。
次のスキルバッジを獲得する
このセルフペース ラボは、「Deploy and Manage Cloud Environments with Google Cloud」スキルバッジの一部です。このスキルバッジを完了すると成果が認められて、上のようなバッジが贈られます。獲得したバッジを履歴書やソーシャル プラットフォームに記載し、#GoogleCloudBadge を使用して成果を公表しましょう。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。必要な技術スキルとベスト プラクティスについて取り扱うクラスでは、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 3 月 8 日 ラボの最終テスト日: 2024 年 3 月 8 日
Copyright 2024 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。