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 インスタンスでサポートされているネットワーク インターフェース タイプは GVNIC です。
queue-count フィールドを含め、XDP サポートに 32 の値を指定する必要があります。
ULL VPC ネットワークに接続するネットワーク インターフェースには、no-address を指定する必要があります。
また、次のコマンドには、インスタンスをマルチキャスト コンシューマーとして有効にする igmp-query フラグが含まれています。インスタンスがマルチキャスト プロデューサーのみの場合、またはインスタンスがユニキャストのみを送受信する場合は、このフラグは必要ありません。
gcloud compute instances create INSTANCE_NAME \
--zone=ZONE \
--machine-type=MACHINE_TYPE \
--image-project=IMAGE_PROJECT \
--image-family=IMAGE_FAMILY \
--maintenance-policy=TERMINATE \
--network-interface=nic-type=GVNIC,queue-count=32,network=GENERAL_PURPOSE_VPC_NETWORK,subnet=GENERAL_PURPOSE_SUBNET \
--network-interface=nic-type=GVNIC,queue-count=32,network=ULL_VPC_NETWORK,subnet=ULL_SUBNET_1,no-address,igmp-query=IGMP_QUERY_V2 \
--network-interface=nic-type=GVNIC,queue-count=32,network=ULL_VPC_NETWORK,subnet=ULL_SUBNET_2,no-address,igmp-query=IGMP_QUERY_V2
次の値を置き換えます。
ZONE: インスタンスを作成するゾーンINSTANCE_NAME: インスタンスの名前MACHINE_TYPE: インスタンスの U4P または U4C マシンタイプIMAGE_PROJECT: イメージ プロジェクト(rhel-cloudなど)。U4 マシンタイプのオペレーティング システムのサポートをご覧ください。IMAGE_FAMILY:イメージ ファミリー(rhel-10-2-eus-gvnic-baremetalなど)。 U4 マシンタイプのオペレーティング システムのサポートをご覧ください。イメージ ファミリーを指定すると、イメージ ファミリー内の最新の 非推奨バージョンの OS イメージからインスタンスが作成されます。 代わりに
--imageフラグを使用して、 画像モードを指定することもできます。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 リンクのステータスと速度を確認する
インスタンスの ULL ネットワーク インターフェースでは、ethtool に実際の物理ポートのリンク ステータス(up/down)と物理リンク速度が表示されます。
ULL ネットワーク インターフェースの物理リンクのステータスと速度を確認するには、次のコマンドを実行します。
sudo ethtool NIC
NIC は、ゲスト OS によって割り当てられたネットワーク インターフェースの名前(ens8f0、ens48f0 など)に置き換えます。
次のステップ
- ベアメタル インスタンスのネットワーク パフォーマンスのトラブルシューティングに関する一般的な情報については、Compute Engine ドキュメントのネットワーク パフォーマンスのトラブルシューティングをご覧ください。たとえば、CPU スリープ状態を無効にして、ネットワーク帯域幅のパフォーマンスを最大限に高めることができます。
- ULL コンピューティング インスタンスでビジーポーリングを有効にして Onload 機能をテストするには、 Onload を使用するをご覧ください。
- インスタンスのシステム クロックをホストサーバーの物理 NIC クロックと同期するには、正確な時刻を構成するをご覧ください。