GSP161

概要
バーチャル プライベート ネットワーク(VPN)があれば、仮想マシン(VM)とサブネットワークのロケーションはどこでもかまいません。マルチリージョンでマルチゾーンの VPN により、グローバル プレゼンスを持つ組織向けの可用性、スケーラビリティ、安全性に優れたネットワーク ソリューションが実現します。このラボでは、主にネットワークの接続と速度に焦点を当てて以下のデモを行います。
- 1 つのリージョンまたはゾーンで障害や停止が発生した場合に、使用可能な別のリージョンまたはゾーンにトラフィックをシームレスに再ルーティングできるため、継続的な接続が実現します。
- ユーザーの所在地に近いリージョンにエンドポイントがあれば、ネットワーク パスが短くなり、レイテンシが短縮し、全体的なパフォーマンスが向上します。
- マルチリージョンの VPN により、ネットワークの状態やユーザーの所在地に基づいてトラフィックをインテリジェントにルーティングできるため、最も効率的で最短のパスが得られます。
このラボでは、gcloud
CLI を使用して既存のネットワークに VM を追加し、VM 間の接続とレイテンシをテストします。
前提条件
必須ではありませんが、ネットワークの作成方法とファイアウォール ルールの適用方法を理解するには、カスタム ネットワークを作成してファイアウォール ルールを適用するラボを受講してください。このラボでは、それらの概念を理解していることを前提としています。
学習内容
- 既存の VPN サブネットに VM を追加する
- VM 間の接続を確認する
- ゾーン間のレイテンシを測定する
設定と要件
[ラボを開始] ボタンをクリックする前に
こちらの手順をお読みください。ラボの時間は記録されており、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
このハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを行うことができます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
注: このラボの実行には、シークレット モードまたはシークレット ブラウジング ウィンドウを使用してください。これにより、個人アカウントと受講者アカウント間の競合を防ぎ、個人アカウントに追加料金が発生することを防ぎます。
- ラボを完了するために十分な時間を確保してください。ラボをいったん開始すると一時停止することはできません。
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、このラボでは使用しないでください。アカウントへの追加料金が発生する可能性があります。
ラボを開始して Google Cloud コンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。
左側の [ラボの詳細] パネルには、以下が表示されます。
- [Google Cloud コンソールを開く] ボタン
- 残り時間
- このラボで使用する必要がある一時的な認証情報
- このラボを行うために必要なその他の情報(ある場合)
-
[Google Cloud コンソールを開く] をクリックします(Chrome ブラウザを使用している場合は、右クリックして [シークレット ウィンドウでリンクを開く] を選択します)。
ラボでリソースが起動し、別のタブで [ログイン] ページが表示されます。
ヒント: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
注: [アカウントの選択] ダイアログが表示されたら、[別のアカウントを使用] をクリックします。
-
必要に応じて、下のユーザー名をコピーして、[ログイン] ダイアログに貼り付けます。
{{{user_0.username | "Username"}}}
[ラボの詳細] パネルでも [ユーザー名] を確認できます。
-
[次へ] をクリックします。
-
以下のパスワードをコピーして、[ようこそ] ダイアログに貼り付けます。
{{{user_0.password | "Password"}}}
[ラボの詳細] パネルでも [パスワード] を確認できます。
-
[次へ] をクリックします。
重要: ラボで提供された認証情報を使用する必要があります。Google Cloud アカウントの認証情報は使用しないでください。
注: このラボでご自身の Google Cloud アカウントを使用すると、追加料金が発生する場合があります。
-
その後次のように進みます。
- 利用規約に同意してください。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
その後、このタブで Google Cloud コンソールが開きます。
注: Google Cloud のプロダクトやサービスのリストを含むメニューを表示するには、左上のナビゲーション メニューをクリックします。
Cloud Shell をアクティブにする
Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
- Google Cloud コンソールの上部にある「Cloud Shell をアクティブにする」アイコン
をクリックします。
接続した時点で認証が完了しており、プロジェクトに各自の PROJECT_ID が設定されます。出力には、このセッションの PROJECT_ID を宣言する次の行が含まれています。
Your Cloud Platform project in this session is set to YOUR_PROJECT_ID
gcloud
は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- (省略可)次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
-
[承認] をクリックします。
-
出力は次のようになります。
出力:
ACTIVE: *
ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (省略可)次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project = <project_ID>
出力例:
[core]
project = qwiklabs-gcp-44776a13dea667a6
注: Google Cloud における gcloud
ドキュメントの全文については、gcloud CLI の概要ガイドをご覧ください。
リージョンとゾーンを設定する
一部の Compute Engine リソースは、リージョン内やゾーン内に存在します。リージョンとは、リソースを実行できる特定の地理的なロケーションです。1 つのリージョンには 1 つ以上のゾーンがあります。
Cloud Shell で次の gcloud
コマンドを実行して、ラボのデフォルトのリージョンとゾーンを設定します。
gcloud config set compute/zone "{{{project_0.default_zone | Zone}}}"
export ZONE=$(gcloud config get compute/zone)
gcloud config set compute/region "{{{project_0.default_region | Region}}}"
export REGION=$(gcloud config get compute/region)
左側のメニューで [VPC ネットワーク] をクリックすると、ネットワーク全体が表示されます。taw-custom-network
には 3 つのサブネットワークがあり、ファイアウォール ルールが適用されています。
ネットワークとサブネットの設定を確認します。
次に、サブネットごとに VM を作成し、各 VM に接続できることを確認します。
タスク 1. VM を接続してレイテンシを確認する
このタスクでは、各ゾーンに仮想マシンを作成します。各マシンは、ファイアウォール ルールがネットワーク トラフィックを許可するために必要なネットワーク タグを使用します。
- 次のコマンドを実行して
us-test-01
というインスタンスを subnet- サブネットに作成します。
gcloud compute instances create us-test-01 \
--subnet subnet-{{{project_0.default_region | Region}}} \
--zone {{{project_0.default_zone | ZONE}}} \
--machine-type e2-standard-2 \
--tags ssh,http,rules
このラボで後ほど使用するために外部 IP をメモしておきます。
出力:
Created [https://www.googleapis.com/compute/v1/projects/cloud-network-module-101/zones/{{{project_0.default_zone | ZONE}}}/instances/us-test-01].
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
us-test-01 {{{project_0.default_zone | ZONE}}} e2-standard-2 10.0.0.2 104.198.230.22 RUNNING
- 次のように
us-test-02
と us-test-03
の各 VM を関連付けられたサブネットに作成します。
gcloud compute instances create us-test-02 \
--subnet subnet-{{{project_0.default_region_2 | REGION}}} \
--zone {{{project_0.default_zone_2 | ZONE}}} \
--machine-type e2-standard-2 \
--tags ssh,http,rules
gcloud compute instances create us-test-03 \
--subnet subnet-{{{project_0.default_region_3 | REGION}}} \
--zone {{{project_0.default_zone_3 | ZONE}}} \
--machine-type e2-standard-2 \
--tags ssh,http,rules
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
traceroute とパフォーマンス テストを目的として、指定されたゾーンに 3 つのインスタンスを作成する
VM に接続できることを確認する
次に、いくつかの操作を実行して VM に接続できるかテストします。ping を使用してホストのネットワーク到達性をテストし、送信元のホストから宛先のコンピュータに送信されるメッセージのラウンドトリップ時間を測定します。
-
コンソールに戻り、[Compute Engine] に進みます。
-
us-test-01
インスタンスに対応する [SSH] ボタンをクリックすると、新しいウィンドウが開き、インスタンスへの SSH 接続が開始します。
-
us-test-01
の SSH ウィンドウで次のコマンドを入力し、インラインで VM の外部 IP アドレスを加えて、us-test-02
に対して ICMP(インターネット コントロール メッセージ プロトコル)エコーを実行します。
ping -c 3 <us-test-02-external-ip-address>
仮想マシンの外部 IP アドレスは、[Compute Engine] ブラウザタブの [外部 IP] フィールドで確認できます。
注: 実際の IP アドレスは、画像とは異なります。
- VM の外部 IP アドレスをインラインで加えて次のコマンドを実行し、
us-test-03
に対して ICMP エコーを実行します。
ping -c 3 <us-test-03-external-ip-address>
出力例:
PING 35.187.149.67 (35.187.149.67) 56(84) bytes of data.
64 bytes from 35.187.149.67: icmp_seq=1 ttl=76 time=152 ms
64 bytes from 35.187.149.67: icmp_seq=2 ttl=76 time=152 ms
64 bytes from 35.187.149.67: icmp_seq=3 ttl=76 time=152 ms
- 次に、インスタンス
us-test-02
と us-test-03
にも SSH 接続できることを確認します。us-test-01
に対して ICMP エコーを実行してみてください。
ping でレイテンシを測定する
レイテンシは、データパケットが送信元と宛先までの間を往復するのにかかる時間を指します。一般にミリ秒(ms)単位で測定されます。
- ping を使用してリージョン間のレイテンシを測定します。
us-test-01
で SSH ウィンドウを開き、次のコマンドを実行します。
ping -c 3 us-test-02.{{{project_0.default_zone_2 | ZONE}}}
コマンド出力:
PING us-test-02.{{{project_0.default_zone_2 | ZONE}}}.c.cloud-network-module-101.internal (10.2.0.2) 56(84) bytes of data.
64 bytes from us-test-02.{{{project_0.default_zone_2 | ZONE}}}.c.cloud-network-module-101.internal (10.2.0.2): icmp_seq=1 ttl=64 time=105 ms
64 bytes from us-test-02.{{{project_0.default_zone_2 | ZONE}}}.c.cloud-network-module-101.internal (10.2.0.2): icmp_seq=2 ttl=64 time=104 ms
64 bytes from us-test-02.{{{project_0.default_zone_2 | ZONE}}}.c.cloud-network-module-101.internal (10.2.0.2): icmp_seq=3 ttl=64 time=104 ms
出力されるレイテンシは、「ラウンド トリップ時間」(RTT)、つまり、us-test-01
から us-test-02
にパケットが到達するまでに要する時間です。
接続をテストするために、ping は ICMP エコー リクエストおよびエコー応答メッセージを使用します。
注: 考察のポイント
リージョン間のレイテンシはどの程度でしたか。「us-test-02」から「us-test-03」への接続で他と異なる点は何ですか。
注: 内部 DNS: DNS は VM インスタンスにどのように提供されるか
各インスタンスにはメタデータ サーバーがあり、そのインスタンスの DNS リゾルバとしても機能します。DNS ルックアップはインスタンス名に対して実行されます。メタデータ サーバー自体は、ローカル ネットワークのすべての DNS 情報を保持します。ローカル ネットワーク外のアドレスについては、Google のパブリック DNS サーバーに問い合わせます。
インスタンスの内部完全修飾ドメイン名(FQDN)は、hostName.[ZONE].c.[PROJECT_ID].internal のような形式です。
あるインスタンスから別のインスタンスには、常にこの FQDN を使用して接続できます。ただし、「hostName」などの情報だけを使用してインスタンスに接続する場合は、Compute Engine に含まれる内部 DNS リゾルバからの情報が必要になります。
タスク 2. traceroute とパフォーマンス テスト
traceroute は 2 台のホスト間のパスをトレースするツールです。ネットワークに関するさまざまな問題を明らかにするための最初のステップとして役立つことがあります。traceroute は、ネットワークに関する問題を診断する際にサポート エンジニアやネットワーク エンジニアによく利用されています。
注: 機能
traceroute は、ホスト間のすべてのレイヤ 3(ルーティング レイヤ)ホップを表示します。これは TTL(有効期間)値を 1 から開始して増やしながら、リモートの宛先にパケットを送信することで行われます。
TTL フィールドは IP パケットのフィールドのひとつで、ルーターを通過するごとに 1 つずつ値が減ります。TTL がゼロになるとパケットは破棄され、「TTL exceeded」という ICMP メッセージが送信者に返されます。この方法は、ルーティングのループを回避するために使用されます(TTL フィールドは最終的に 0 まで減るため、パケットがループし続けることはありません)。デフォルトでは、OS は TTL 値を大きな値(64、128、255 など)に設定するため、0 に達するのは異常な状態の場合のみです。
traceroute は TTL 値が 1 のパケット、TTL 値が 2 のパケットと順に送信するので、これらのパケットはパス内の最初のルーター、2 番目のルーターで順に期限切れとなります。その後、ソース IP / ホストから ICMP TTL exceeded メッセージが返され、これを使って中間ホップの名前と IP が表示されます。TTL が十分に大きいと、パケットは宛先に到達し、宛先から応答があります。
送信されるパケットの種類は実装によって異なります。Linux では、UDP パケットが上位の未使用ポートに送信されます。したがって、最終宛先からは ICMP Port Unreachable が返されます。Windows と mtr ツールはデフォルトで ICMP エコー要求(ping など)を使用するので、最終宛先から ICMP エコー応答が返されます。
仮想マシンのいずれか 1 つに traceroute を設定して動作を確かめてみましょう。
-
このステップでは、us-test-01
VM と us-test-02
VM を使用します。どちらにも SSH で接続します。
-
us-test-01
の SSH ウィンドウで次のパフォーマンス ツールをインストールします。
sudo apt-get update
sudo apt-get -y install traceroute mtr tcpdump iperf whois host dnsutils siege
- 次に、
www.icann.org
で traceroute
を使用して動作を確認します。
traceroute www.icann.org
出力の各行はホップを表します。
- 1 列目: ホップ番号を示しています。
- 2 列目: ホップの IP アドレス(利用可能な場合はホスト名)を示しています。
- その他の列: そのホップに送信される他のパケットの RTT を示しています。
-
次のように宛先や送信元を変えて試してみましょう。
- 同じリージョンまたは別のリージョンの VM(eu1-vm、asia1-vm、w2-vm)
- www.wikipedia.org
- www.adcash.com
- bad.horse(最大 TTL 値を大きくした場合にうまく動作するので
traceroute -m 255 bad.horse
とします)
- その他、任意の宛先や送信先
-
traceroute を停止する場合は、SSH ウィンドウで Ctrl+C キーを押してコマンドラインに戻ります。
注: 考察のポイント
異なる traceroute について、どのようなことがわかりますか。
traceroute とパフォーマンス テスト
タスク 3. iperf を使ってパフォーマンスをテストする
iperf
は、ネットワークのスループットとレイテンシを測定します。iperf
を使用して 2 台のホスト間のパフォーマンスをテストする場合は、接続を受け入れるために、一方のホストを iperf サーバーとして設定する必要があります。
注: 次のコマンドを実行すると、リージョン間でギガバイト単位のトラフィックが転送されます。これにはインターネット下り(外向き)料金がかかります。このコマンドを使用するときは、この点に注意してください。許可リスト登録済みプロジェクトで作業していない場合や、無料トライアル中でない場合は、このセクションをスキップするか目を通すだけにしてもかまいません(見込まれる料金は 1 米ドル未満です)。
-
us-test-02
に SSH 接続し、次のようにパフォーマンス ツールをインストールします。
sudo apt-get update
sudo apt-get -y install traceroute mtr tcpdump iperf whois host dnsutils siege
-
us-test-01
に SSH 接続し、次を実行します。
iperf -s #サーバーモードで実行
-
us-test-02
SSH で、次の iperf
を実行します。
iperf -c us-test-01.{{{project_0.default_zone | ZONE}}} #run in client mode
以下のような出力が表示されます。
Client connecting to eu-vm, TCP port 5001
TCP window size: 45.0 KByte (default)
[ 3] local 10.20.0.2 port 35923 connected with 10.30.0.2 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 298 MBytes 249 Mbits/sec
- 完了したら、
us-test-01
で Ctrl+C キーを押してサーバー側セッションを終了します。
1 つのリージョン内の VM 間
次に、追加のインスタンス(us-test-04
)を us-test-01
以外のゾーンにデプロイします。リージョン内では、帯域幅の下り(外向き)上限がコアあたり 2 Gbps に制限されています。
- Cloud Shell で
us-test-04
を作成します。
gcloud compute instances create us-test-04 \
--subnet subnet-{{{project_0.default_region | REGION}}} \
--zone {{{project_0.default_zone | ZONE}}} \
--tags ssh,http
-
us-test-04
に SSH 接続し、次のようにパフォーマンス ツールをインストールします。
sudo apt-get update
sudo apt-get -y install traceroute mtr tcpdump iperf whois host dnsutils siege
リージョン間の上限はさらに低くなっています。これは主に、TCP ウィンドウ サイズとシングル ストリームのパフォーマンスにおける制限が原因です。UDP などの他のパラメータを使用すると、ホスト間の帯域幅を増やすことができます。
-
us-test-02
の SSH で次を実行します。
iperf -s -u #iperf サーバー側
-
us-test-01
の SSH で次を実行します。
iperf -c us-test-02.{{{project_0.default_zone_2 | ZONE}}} -u -b 2G #iperf クライアント側 - send 2 Gbits/s
このコマンドで EU と US の間の速度が上がります。大量の TCP iperfs
を並列実行するとさらにスピードを上げることができます。これをテストしてみましょう。
-
us-test-01
の SSH ウィンドウで次を実行します。
iperf -s
-
us-test-02
の SSH ウィンドウで次を実行します。
iperf -c us-test-01.{{{project_0.default_zone | ZONE}}} -P 20
組み合わせた帯域幅は、達成可能な最大帯域幅にかなり近くなっているはずです。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
パフォーマンスをテストする
- さらにいくつかの組み合わせをテストします。ノートパソコンで Linux を使用している場合、このノートパソコンに対してもテストを実行できます(多くの OS で利用可能な iperf3 も試すことができますが、このラボでは扱いません)。
最大帯域幅に到達するには、シングル TCP ストリーム(ファイルコピーなど)を実行するだけでは不十分です。複数の TCP セッションを並列に確立する必要があります。理由としては、Window Size などの TCP パラメータや、Slow Start などの機能があげられます。
詳細情報とその他すべての TCP/IP トピックについては、『TCP/IP Illustrated』を参照してください。
bbcp などのツールを使用すると、転送の並列化や構成可能なウィンドウ サイズの利用により迅速にファイルをコピーできます。
ラボを終了する
ラボが完了したら、[ラボを終了] をクリックします。ラボのプラットフォームから、アカウントと使用したリソースが削除されます。
ラボの評価を求めるダイアログが表示されたら、星の数を選択してコメントを入力し、[送信] をクリックします。
星の数は、それぞれ次の評価を表します。
- 星 1 つ = 非常に不満
- 星 2 つ = 不満
- 星 3 つ = どちらともいえない
- 星 4 つ = 満足
- 星 5 つ = 非常に満足
フィードバックを送信しない場合は、ダイアログ ボックスを閉じてください。
フィードバックやご提案の送信、修正が必要な箇所をご報告いただく際は、[サポート] タブをご利用ください。
お疲れさまでした
gcloud
を使用して既存のネットワークに仮想マシンを構築し、さまざまなツールを使用してネットワークの接続とレイテンシをテストする方法を学習しました。
Google Cloud トレーニングと認定資格
Google Cloud トレーニングと認定資格を通して、Google Cloud 技術を最大限に活用できるようになります。クラスでは、技術スキルとベスト プラクティスを迅速に身につけ、学習を継続的に進めることができます。トレーニングは基礎レベルから上級レベルまであり、オンデマンド、ライブ、バーチャル参加など、多忙なスケジュールにも対応できるオプションが用意されています。認定資格を取得することで、Google Cloud テクノロジーに関するスキルと知識を証明できます。
マニュアルの最終更新日: 2024 年 8 月 23 日
ラボの最終テスト日: 2024 年 8 月 23 日
Copyright 2025 Google LLC All rights reserved. Google および Google のロゴは Google LLC の商標です。その他すべての企業名および商品名はそれぞれ各社の商標または登録商標です。