ULL Compute Engine インスタンスを作成する
ULL インフラストラクチャの構成プロセスの概要については、 ULL ソリューションの構成の概要をご覧ください。
始める前に
ULL コンピューティング インスタンスを作成する前に、次のセクションをご覧ください。
VPC ネットワークを作成する
まだ作成していない場合は、ULL Solution の構成の概要の説明に従って、インスタンスのネットワーク インターフェースごとに VPC ネットワークを作成します。
プレースメント ポリシーの作成
必要に応じて、スプレッド プレースメント ポリシー を ULL インスタンスに適用して、復元性を高めることができます。詳細については、Compute Engine ドキュメントの スプレッド プレースメント ポリシーを作成して適用する をご覧ください。
プロジェクトを設定する
プロジェクトを使用するように gcloud CLI を設定します。次の手順で各コマンドに --project=PROJECT_ID フラグを含めることもできます。
gcloud config set project PROJECT_ID
PROJECT_ID は、実際のプロジェクトの ID に置き換えます。
必要なロール
Compute Engine インスタンスを作成するために必要な権限を取得するには、管理者に次の IAM ロールを付与するよう依頼してください。
-
コンピューティング インスタンスを作成して管理する:
プロジェクトに対する Compute インスタンス管理者(
compute.instanceAdmin)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。
ULL インスタンス構成の概要
ULL コンピューティング インスタンスを作成し、ULL ユニキャスト トラフィックとマルチキャスト トラフィックを送受信するようにインスタンスを構成するには、次の操作を行います。
| ステップ | 説明 |
|---|---|
| ULL インスタンスを作成する | U4P または U4C マシンタイプを使用してインスタンスを作成し、そのネットワーク インターフェースを汎用 VPC ネットワークと ULL VPC ネットワークに接続します。インスタンスをマルチキャスト コンシューマーとして使用する場合は、igmp-query フラグを IGMP_QUERY_V2 に設定します。 |
ULL ユニキャスト トラフィックの nic0 以外のインターフェースのルーティングを構成する |
下り(外向き)パケットが正しいインターフェースを経由し、非対称ルーティングを防ぐように、ゲスト OS でソースベースのポリシー ルーティングを構成します。 |
| ULL マルチキャスト コンシューマーになるようにインスタンスを構成する |
ULL ネットワーク インターフェースでマルチキャスト トラフィックを受信するには、次の操作を行います。
パフォーマンスをさらに最適化するには、 ビジーポーリングを有効にすることをおすすめします。 Onload を使用するで説明されています。 |
また、このページのコマンド例を使用して、マルチキャスト接続をテストすることもできます。
ULL インスタンスを作成する
このセクションでは、ULL ユニキャストとマルチキャストに使用する新しいインスタンスを作成する方法について説明します。
追加の 構成オプションなど、コンピューティング インスタンスの作成に関する一般的な情報については、Compute Engine インスタンスを作成して起動するをご覧ください。
gcloud
ULL インスタンスを作成するには、
compute instances create コマンドを使用します。
ULL VPC ネットワークに接続するネットワーク インターフェースには、no-address を指定する必要があります。
また、次のコマンドには、インスタンスをマルチキャスト コンシューマーとして有効にする igmp-query フラグが含まれています。インスタンスがマルチキャスト プロデューサーのみの場合、またはインスタンスがユニキャストのみを送受信する場合は、このフラグは必要ありません。
gcloud compute instances create INSTANCE_NAME \
--zone=ZONE \
--machine-type=MACHINE_TYPE \
--image-project=IMAGE_PROJECT \
--image=IMAGE_NAME \
--maintenance-policy=TERMINATE \
--network-interface=nic-type=NIC_TYPE,queue-count=QUEUES,network=GENERAL_PURPOSE_VPC_NETWORK,subnet=GENERAL_PURPOSE_SUBNET \
--network-interface=nic-type=NIC_TYPE,queue-count=QUEUES,network=ULL_VPC_NETWORK,subnet=ULL_SUBNET_1,no-address,igmp-query=IGMP_QUERY_V2 \
--network-interface=nic-type=NIC_TYPE,queue-count=QUEUES,network=ULL_VPC_NETWORK,subnet=ULL_SUBNET_2,no-address,igmp-query=IGMP_QUERY_V2
次の値を置き換えます。
ZONE: インスタンスを作成するゾーンINSTANCE_NAME: インスタンスの名前MACHINE_TYPE: インスタンスの U4P または U4C マシンタイプIMAGE_PROJECT: イメージ プロジェクト。 プレビュー期間中のテストでは、Google が提供するイメージ プロジェクトを使用します。 U4 マシンタイプのオペレーティング システムのサポートをご覧ください。IMAGE_NAME: イメージ名。プレビュー期間中のテストでは、 Google が提供するイメージを使用します。U4 マシンタイプのオペレーティング システムのサポートをご覧ください。NIC_TYPE: 使用するネットワーク インターフェース タイプ。 インスタンスを作成する特定のゾーンでサポートされているネットワーク インターフェース タイプを使用します:us-south1-dの場合は、IDPFを指定します。us-south1-eの場合は、GVNICを指定します。
QUEUES: ネットワークからパケットを処理するための 受信キューと送信キュー の数。GVNICの場合は、queue-countフィールドを含め、XDP サポートに32の値を指定する必要があります。IDPFの場合は、コマンドからqueue-count=QUEUESを省略します。
GENERAL_PURPOSE_VPC_NETWORK、GENERAL_PURPOSE_SUBNET: インスタンスのnic0インターフェースを接続する VPC ネットワークとサブネットULL_VPC_NETWORK:nic0以外のインターフェースを接続する ULL VPC ネットワークULL_SUBNET_1:nic1インターフェースを接続する ULL VPC ネットワーク内のサブネットULL_SUBNET_2:nic2インターフェースを接続する ULL VPC ネットワーク内のサブネット
ULL ユニキャスト トラフィックの nic0 以外のインターフェースのルーティングを構成する
デフォルトでは、インスタンスは nic0 インターフェースに関連付けられたデフォルト ルートを使用して、直接接続されたサブネット以外の宛先にトラフィックを送信します。詳細については、複数のネットワーク インターフェースの概要をご覧ください。
インスタンスの nic1 インターフェースと nic2 インターフェースが ULL ユニキャスト トラフィックを正常に送受信するには、ゲスト OS でソースベースのポリシー ルーティングを構成する必要があります。この構成により、下り(外向き)パケットが正しいインターフェースを経由し、トラフィックが 1 つのインターフェースに入り、nic0 から出ようとする非対称ルーティングを防ぐことができます。
ポリシー ルーティングを構成する方法の例については、 ポリシー ルーティングを構成する チュートリアルの追加のネットワーク インターフェースのルーティングを構成するをご覧ください。
ULL マルチキャスト コンシューマーになるようにインスタンスを構成する
このセクションでは、既存の ULL インスタンスをマルチキャスト コンシューマーとして構成する方法について説明します。
既存の ULL インスタンスで IGMP クエリを有効にする
インスタンスの作成時に IGMP を有効にしなかった場合は、このセクションの説明に従って、既存のインスタンスで有効にできます。
gcloud
既存の ULL インスタンスで IGMP クエリを有効にするには、
compute instances network-interfaces update コマンドを使用します。
マルチキャスト トラフィックを受信するネットワーク インターフェースごとに、次のコマンドを繰り返します。
gcloud compute instances network-interfaces update INSTANCE_NAME \
--zone=ZONE \
--network-interface=NETWORK_INTERFACE_NAME \
--igmp-query=IGMP_QUERY_V2
次の値を置き換えます。
INSTANCE_NAME: インスタンスの名前ZONE: インスタンスのゾーンNETWORK_INTERFACE_NAME: IGMP クエリを有効にするネットワーク インターフェースの名前。では Google Cloud、形式はnicNUMBER(nic0、nic1、nic2など)です。
ゲスト OS で IGMPv2 を設定する
インスタンスのゲスト OS で IGMPv2 を設定するには、次の操作を行います。
インスタンスに接続します SSH を使用して。
次のコマンドを実行して、マルチキャスト トラフィックを受信するネットワーク インターフェースのデバイス名を確認します。
sudo ifconfig
該当するネットワーク インターフェースごとに、次のコマンドを実行して IGMPv2 を強制的に適用します。
sudo -i echo "2" > /proc/sys/net/ipv4/conf/NETWORK_INTERFACE_DEVICE_NAME/force_igmp_version
NETWORK_INTERFACE_DEVICE_NAMEは、ネットワーク インターフェースのデバイス名(eth0、eth1、eth2など)に置き換えます。
リバースパス フィルタリング(rp_filter)を構成する
マルチ NIC インスタンスなど、リバースパス フィルタリング(rp-filter)による厳格なソース検証により、正当なマルチキャスト パケットが破棄されることがあります。これを防ぐには、リバースパス フィルタリングを構成して、マルチキャスト トラフィックを受信する nic0 以外のネットワーク インターフェースでソース検証を緩めるか無効にします。
たとえば、次のコマンドは、rp_filter を 0 に設定して、eth1 と eth2 のソース検証を無効にするようにリバースパス フィルタリングを構成します。
sudo sysctl -w net.ipv4.conf.all.rp_filter=0 sudo sysctl -w net.ipv4.conf.eth1.rp_filter=0 sudo sysctl -w net.ipv4.conf.eth2.rp_filter=0
rp_filter の詳細については、Linux
カーネル ドキュメントの
IP Sysctl をご覧ください。
ネットワーク ドライバのリング バッファサイズを増やす
このセクションでは、インスタンスのネットワーク ドライバのリング バッファサイズを増やす方法について説明します。
大量のトラフィックを受信するマルチキャスト コンシューマーの場合は、パケットロスを防ぐため、ネットワーク ドライバのリング バッファサイズを 2048 に増やします。マルチキャスト トラフィックを受信するネットワーク インターフェースごとにこれを行います。
次のコマンド例では、nic1 と nic2 を構成しています。
sudo ethtool -G eth1 rx 2048 tx 2048 sudo ethtool -G eth2 rx 2048 tx 2048
ULL マルチキャスト接続をテストするコマンドの例
このセクションでは、
アプリケーション ワークロードを開始せずにマルチキャスト トラフィックをテストするコマンドの例を、
iperf ツールを使用して示します。このセクションの手順
では、ULL ソリューションの構成の概要で説明されているマルチキャスト構成が
完了している必要があります。
マルチキャスト プロデューサーから ULL マルチキャスト トラフィックを送信する
インスタンスに接続します SSH を使用して。
まだインストールしていない場合は、
iperfをインストールします。iperf3はマルチキャストをサポートしていません。 次のコマンドでは、iperfを使用してiperf2をインストールします。sudo yum install iperf
マルチキャスト トラフィックをマルチキャスト グループの IP アドレスに送信するには、次のコマンドを実行します。
iperf -c MULTICAST_GROUP_ADDRESS%NIC -p 1234 -l 512 -i 1 -u -b 1000pps -t 999999 -B NIC_IP_ADDRESS
次の値を置き換えます。
MULTICAST_GROUP_ADDRESS: マルチキャスト グループの IP アドレスNICネットワーク インターフェースのデバイス名(eth1、eth2など)NIC_IP_ADDRESS指定した NIC に割り当てられた IP アドレス
グループに参加して、マルチキャスト コンシューマーから ULL マルチキャスト トラフィックを受信する
インスタンスに接続します SSH を使用して。
まだインストールしていない場合は、
iperfをインストールします。sudo yum install iperf
マルチキャスト グループに参加して、受信したトラフィックをログに記録するには、次のコマンドを実行します。
iperf -s -p 1234 -B MULTICAST_GROUP_ADDRESS%NIC -l 512 -u -i 1
次の値を置き換えます。
MULTICAST_GROUP_ADDRESSマルチキャスト グループの IP アドレスNICネットワーク インターフェースのデバイス名(eth1、eth2など)
たとえば、次のコマンドは、IP アドレス
224.1.0.176のグループに参加して、最大 512 バイトのパケットを受信し、受信したトラフィックをログに記録します。iperf -s -p 1234 -B 224.1.0.176%eth1 -l 512 -u -i 1
次のステップ
- ビジーポーリングを有効にして、ULL コンピューティング インスタンスの Onload 機能をテストするには、 Onload を使用するをご覧ください。
- インスタンスのシステム クロックをホストサーバーの物理 NIC クロックと同期するには、正確な時刻を構成するをご覧ください。