スクリプトを使用してソフトウェア定義ネットワーク インフラストラクチャを展開する
このトピックでは、スクリプトを使用して Microsoft ソフトウェア定義ネットワーク (SDN) インフラストラクチャを展開する方法を説明します。 インフラストラクチャには、高可用性 (HA) ネットワーク コントローラー、HA ソフトウェア ロード バランサー (SLB)/MUX、仮想ネットワーク、および関連するアクセス制御リスト (ACL) が含まれます。 さらに、別のスクリプトでは、SDN インフラストラクチャを検証するためにテナント ワークロードを展開します。
テナント ワークロードが仮想ネットワークの外部で通信するようにする場合は、SLB NAT ルール、サイト間ゲートウェイ トンネル、またはレイヤー 3 転送を設定して、仮想ワークロードと物理ワークロード間でルーティングできます。
また、Virtual Machine Manager (VMM) を使用して SDN インフラストラクチャを展開することもできます。 詳細については、「VMM ファブリックでのソフトウェア定義ネットワーク (SDN) インフラストラクチャのセットアップ」を参照してください。
デプロイ前
重要
展開を開始する前に、ホストおよび物理的なネットワーク インフラストラクチャを計画し構成する必要があります。 詳細については、「ソフトウェア定義ネットワーク インフラストラクチャを計画する」を参照してください。
すべての Hyper-V ホストには、Window Server 2019 または 2016 がインストールされている必要があります。
デプロイメントの手順
まず、Hyper-V ホスト (物理サーバー) の Hyper-V 仮想スイッチと IP アドレスの割り当てを構成します。 共有またはローカルの Hyper-V と互換性のある記憶域の種類を使用できます。
ホスト ネットワークのインストール
NIC ハードウェアで使用できる最新のネットワーク ドライバーをインストールします。
Hyper-V ロールをすべてのホストにインストールします。 詳細については、「Windows Server 上に Hyper-V ロールをインストールする」を参照してください。
Install-WindowsFeature -Name Hyper-V -ComputerName <computer_name> -IncludeManagementTools -Restart
Hyper-V 仮想スイッチを作成します。
sdnSwitch など、すべてのホストに同じスイッチ名を使用します。 少なくとも 1 つのネットワーク アダプターを構成するか、SET を使用する場合は少なくとも 2 つのネットワーク アダプターを構成します。 2 枚の NIC を使用した場合、最大のインバウンド スプレッドが発生します。
New-VMSwitch "<switch name>" -NetAdapterName "<NetAdapter1>" [, "<NetAdapter2>" -EnableEmbeddedTeaming $True] -AllowManagementOS $True
ヒント
個別の管理 NIC がある場合は、手順 4 と 5 をスキップできます。
計画に関するトピック (「ソフトウェア定義ネットワーク インフラストラクチャの計画」) を参照し、ネットワーク管理者と連携して、管理 VLAN の VLAN ID を取得します。 新しく作成した仮想スイッチの管理 vNIC を管理 VLAN にアタッチします。 お使いの環境で VLAN タグが使用されていない場合は、この手順を省略できます。
Set-VMNetworkAdapterIsolation -ManagementOS -IsolationMode Vlan -DefaultIsolationID <Management VLAN> -AllowUntaggedTraffic $True
計画に関するトピック (「ソフトウェア定義ネットワーク インフラストラクチャの計画」) を参照し、ネットワーク管理者と連携して DHCP または静的 IP 割り当てを使用して、新しく作成された vSwitch の管理 vNIC に IP アドレスを割り当てる方法について説明します。 次の例は、静的 IP アドレスを作成し、vSwitch の管理 vNIC に割り当てる方法を示しています。
New-NetIPAddress -InterfaceAlias "vEthernet (<switch name>)" -IPAddress <IP> -DefaultGateway <Gateway IP> -AddressFamily IPv4 -PrefixLength <Length of Subnet Mask - for example: 24>
[省略可能] 仮想マシンを展開し、Active Directory Domain Services (Active Directory Domain Services (レベル 100) のインストール) と DNS サーバーをホストします。
a. Active Directory/DNS サーバー仮想マシンを管理 VLAN に接続します。
Set-VMNetworkAdapterIsolation -VMName "<VM Name>" -Access -VlanId <Management VLAN> -AllowUntaggedTraffic $True
b. Active Directory Domain Services と DNS をインストールします。
注意
ネットワーク コントローラーは、認証に Kerberos と X.509 証明書の両方をサポートしています。 このガイドでは、目的に応じて両方の認証メカニズムを使用します (ただし、必要なのは 1 つのみです)。
すべての Hyper-V ホストをドメインに参加します。 管理ネットワークに割り当てられた IP アドレスを持つネットワーク アダプターの DNS サーバー エントリが、ドメイン名を解決できる DNS サーバーを指していることを確認します。
Set-DnsClientServerAddress -InterfaceAlias "vEthernet (<switch name>)" -ServerAddresses <DNS Server IP>
a. [スタート] を右クリックし、[システム]、[設定の変更] の順に選択します。 設定の変更。 b. [変更] を選択します。 c. [ドメイン] を選択してドメイン名を指定します。 d. [OK] を選択します。 e. メッセージが表示されたら、ユーザー名とパスワードの資格情報を入力します。 f. サーバーを再起動します。
検証
次の手順を使用して、ホスト ネットワークが正しく設定されていることを検証します。
VM スイッチが正常に作成されたことを確認します。
Get-VMSwitch "<switch name>"
VM スイッチの管理 vNIC が管理 VLAN に接続されていることを確認します。
注意
管理トラフィックとテナント トラフィックが同じ NIC を共有している場合にのみ関連します。
Get-VMNetworkAdapterIsolation -ManagementOS
すべての Hyper-V ホストと外部管理リソース (DNS サーバーなど) を検証します。 管理 IP アドレスや完全修飾ドメイン名 (FQDN) を使用して ping 経由でアクセスできることを確認します。
ping <Hyper-V Host IP> ping <Hyper-V Host FQDN>
展開ホスト上で次のコマンドを実行し、各 Hyper-V ホストの FQDN を 指定して、使用する Kerberos 認証情報がすべてのサーバーへのアクセスを提供することを確認します。
winrm id -r:<Hyper-V Host FQDN>
SDN Express スクリプトの実行
インストール ファイルの Microsoft SDN GitHub リポジトリに移動します。
リポジトリから指定された展開コンピューターにインストール ファイルをダウンロードします。 [複製またはダウンロード] をクリックし、[ZIP のダウンロード] をクリックします。
注意
指定したデプロイ コンピューターでは、Windows Server 2016 以降が実行されている必要があります。
zip ファイルを展開し、SDNExpress フォルダーを展開コンピューターの
C:\
フォルダーにコピーします。C:\SDNExpress
フォルダーを "SDNExpress" として、全員に読み取り/書き込みの許可を与えて共有します。C:\SDNExpress
フォルダーに移動します次のフォルダーが表示されます。
フォルダー名 説明 AgentConf 各 Windows Server 2016 Hyper-V ホスト上の SDN ホスト エージェントでネットワーク ポリシーをプログラムするために使用される OVSDB スキーマの新しいコピーを保持します。 証明書 NC 証明書ファイルの一時的な共有場所。 イメージ 空の場合は、Windows Server 2016 vhdx イメージをここに配置します ツール トラブルシューティングとデバッグのためのユーティリティ。 ホストと仮想マシンにコピーされます。 必要に応じて利用できるよう、ネットワーク モニターや Wireshark をここに配置することをお勧めします。 スクリプト 展開スクリプト。 - SDNExpress.ps1
ネットワーク コントローラー仮想マシン、SLB Mux 仮想マシン、ゲートウェイ プール、およびプールに対応する HNV ゲートウェイ仮想マシンを含むファブリックの展開と設定を行います。
- FabricConfig.psd1
SDNExpress スクリプトの構成ファイル テンプレート。 環境に合わせてこれをカスタマイズします。
- SDNExpressTenant.ps1
負荷分散された VIP を使用して仮想ネットワークにサンプル テナント ワークロードを展開します。
また、先に作成したテナント ワークロードに接続するサービス プロバイダー エッジ ゲートウェイに、1 つまたは複数のネットワーク接続 (IPSec S2S VPN、GRE、L3) を用意します。 IPSec と GRE ゲートウェイは、対応する VIP IP アドレスを使用した接続と、対応するアドレス プールを使用した L3 転送ゲートウェイで使用できます。
このスクリプトは、対応する構成を [元に戻す] オプションで削除する場合にも使用できます。
- TenantConfig.psd1
テナント ワークロードと S2S ゲートウェイ構成用のテンプレート構成ファイル。
- SDNExpressUndo.ps1
ファブリック環境をクリーンアップし、開始状態にリセットします。
- SDNExpressEnterpriseExample.ps1
1 つ以上のエンタープライズ サイト環境を、1 つのリモート アクセス ゲートウェイと (必要に応じて) サイトごとに対応する 1 つのエンタープライズ仮想マシンでプロビジョニングします。 IPSec または GRE エンタープライズ ゲートウェイは、サービス プロバイダー ゲートウェイの対応する VIP IP アドレスに接続して、S2S トンネルを確立します。 L3 転送ゲートウェイは、対応するピア IP アドレスを使用して接続します。
このスクリプトは、対応する構成を [元に戻す] オプションで削除する場合にも使用できます。
- EnterpriseConfig.psd1
エンタープライズ サイト間ゲートウェイとクライアント VM 構成のテンプレート構成ファイル。TenantApps テナント ワークロードの例を展開するために使用されるファイル。 Windows Server 2016 VHDX ファイルが Images フォルダーに含まれていることを確認します。
<< Replace >> タグを、ホスト名、ドメイン名、ユーザー名とパスワード、「ネットワークの計画」トピックに記載されているネットワークのネットワーク情報など、ラボのインフラストラクチャに合わせて変更し、SDNExpress\scripts\FabricConfig.psd1 ファイルをカスタマイズします。
NetworkControllerRestName (FQDN) と NetworkControllerRestIP のホスト A レコードを DNS に作成します。
ドメイン管理者の資格情報を持つユーザーとしてスクリプトを実行します。
SDNExpress\scripts\SDNExpress.ps1 -ConfigurationDataFile FabricConfig.psd1 -Verbose
すべての操作を元に戻すには、次のコマンドを実行します。
SDNExpress\scripts\SDNExpressUndo.ps1 -ConfigurationDataFile FabricConfig.psd1 -Verbose
検証
SDN Express スクリプトがエラーを報告せずに完了したと仮定すると、次の手順を実行して、ファブリック リソースが正しく展開され、テナントの展開に利用できることを確認できます。
診断ツールを使用して、ネットワーク コントローラーのファブリック リソースにエラーが発生しないことを確認します。
Debug-NetworkControllerConfigurationState -NetworkController <FQDN of Network Controller Rest Name>
ソフトウェア ロード バランサーを使用したサンプル テナント ワークロードの展開
ファブリック リソースが展開されたので、サンプル テナント ワークロードを展開することで、SDN の展開をエンドツーエンドで検証できます。 このテナント ワークロードは、SDN 分散ファイアウォールを使用してアクセス制御リスト (ACL) 規則によって保護される 2 つの仮想サブネット (Web 層とデータベース層) で構成されます。 Web 層の仮想サブネットには、仮想 IP (VIP) アドレスを使用して SLB/MUX 経由でアクセスできます。 このスクリプトでは、2 つの Web 層の仮想マシンと 1 つのデータベース層の仮想マシンが自動的に展開され、仮想サブネットに接続されます。
<<Replace>> タグを特定の値に変更し (FabricConfig.psd1 ファイルで先に定義したように、VHD イメージ名、ネットワーク コントローラー REST 名、vSwitch 名など)、DNExpress\scripts\TenantConfig.psd1 ファイルをカスタマイズします
スクリプトを実行します。 例:
SDNExpress\scripts\SDNExpressTenant.ps1 -ConfigurationDataFile TenantConfig.psd1 -Verbose
構成を元に戻すには、undo パラメーターを使用して同じスクリプトを実行 します。 例:
SDNExpress\scripts\SDNExpressTenant.ps1 -Undo -ConfigurationDataFile TenantConfig.psd1 -Verbose
検証
テナントの展開が成功したと検証するには、次の手順を実行します。
データベース層仮想マシンにログインし、いずれかの Web 層仮想マシンの IP アドレスに ping を実行します (Web 層仮想マシンで Windows ファイアウォールがオフになっていることを確認)。
ネットワーク コントローラーのテナント リソースでエラーを確認します。 Layer-3 接続を持つ Hyper-V ホストからネットワーク コントローラーに対し、次を実行します。
Debug-NetworkControllerConfigurationState -NetworkController <FQDN of Network Controller REST Name>
ロード バランサーが正しく実行されていることを確認するには、任意の Hyper-V ホストから次を実行します。
wget <VIP IP address>/unique.htm -disablekeepalive -usebasicparsing
ここで、
<VIP IP address>
は TenantConfig.psd1 ファイルで構成した Web 層 VIP IP アドレスです。ヒント
TenantConfig.psd1 で
VIPIP
変数を検索します。これを複数回実行して、使用可能な DIP 間のロード バランサーの切り替えを確認します。 また、Web ブラウザーを使用してこの動作を観察することもできます。
<VIP IP address>/unique.htm
を参照します。 ブラウザーを閉じて新しいインスタンスを開き、もう一度参照します。 キャッシュがタイムアウトする前にブラウザがページをキャッシュする場合を除き、青いページと緑のページが交互に表示されます。