使用 Windows PowerShell 部署網路控制卡

適用於:Windows Server 2022、Windows Server 2019、Windows Server 2016、Azure Stack HCI 21H2 和 20H2 版本

本主題說明如何在執行 Windows Server 2019 或 2016 的單一或多部虛擬機器 (VM) 上,使用 Windows PowerShell 部署網路控制卡。

重要

請勿在實體主機上部署網路控制卡伺服器角色。 若要部署網路控制卡,您必須在 Hyper-V 主機上安裝的 Hyper-V 虛擬機器 (VM) 上安裝網路控制卡伺服器角色。 在三部不同 Hyper-V 主機上的 VM 上安裝網路控制卡之後,您必須使用 Windows PowerShell 命令 New-NetworkControllerServer 將主機新增至網路控制卡,以啟用軟體定義網路功能的 Hyper-V 主機 (SDN)。 如此一來,您就可以讓 SDN 軟體負載平衡器運作。 如需詳細資訊,請參閱 New-NetworkControllerServer

本主題包含下列各節。

安裝網路控制卡伺服器角色

透過此程序,您可在虛擬機器 (VM) 上安裝網路控制卡伺服器角色。

重要

請勿在實體主機上部署網路控制卡伺服器角色。 若要部署網路控制卡,您必須在 Hyper-V 主機上安裝的 Hyper-V 虛擬機器 (VM) 上安裝網路控制卡伺服器角色。 在三部不同 Hyper-V 主機上的 VM 上安裝網路控制卡之後,您必須將主機新增至網路控制卡,以啟用軟體定義網路功能的 Hyper-V 主機 (SDN)。 如此一來,您就可以讓 SDN 軟體負載平衡器運作。

若要執行此程序,至少需要 Administrators 的成員資格或同等權限。

注意

如果您不想使用 Windows PowerShell,而是透過伺服器管理員安裝網路控制卡,請參閱使用伺服器管理員安裝網路控制卡伺服器角色

若想使用 Windows PowerShell 安裝網路控制卡,請於 Windows PowerShell 提示字元中輸入下列命令,然後按下 ENTER 鍵。

Install-WindowsFeature -Name NetworkController -IncludeManagementTools

安裝網路控制卡時,您必須重新開機電腦。 若要這麼做,請輸入下列命令,然後按下 ENTER 鍵。

Restart-Computer

設定網路控制卡叢集

網路控制卡叢集可為網路控制卡應用程式提供高可用性和可擴縮性,而應用程式託管於叢集,可在建立叢集後進行設定。

注意

您可直接在已安裝網路控制卡的 VM 上執行以下章節所述之程序,或透過適用於 Windows Server 2016 的遠端伺服器管理工具,從執行 Windows Server 2016 或 Windows 10 的遠端電腦執行程序。 若要執行此程序,至少需要管理員的成員資格或同等權限。 如果您安裝網路控制卡的電腦或 VM 已加入網域,您的使用者帳戶必須為網域使用者的成員。

若要建立網路控制卡叢集,可先建立節點物件,然後設定叢集。

建立節點物件

您必須為每個屬於網路控制卡叢集成員的 VM 建立節點物件。

若要建立節點物件,請於 Windows PowerShell 提示字元中輸入下列命令,然後按下 ENTER 鍵。 請根據部署需求,針對各參數新增適合的值。

New-NetworkControllerNodeObject -Name <string> -Server <String> -FaultDomain <string>-RestInterface <string> [-NodeCertificate <X509Certificate2>]

下表解釋 New-NetworkControllerNodeObject 命令中各個參數的意義。

參數 描述:
Name Name 參數指定要新增至叢集的伺服器自訂名稱
伺服器 Server 參數指定要新增至叢集的伺服器主機名稱、完整網域名稱 (FQDN) 或 IP 位址。 若電腦已加入網域,則必須有 FQDN。
FaultDomain FaultDomain 參數指定要新增至叢集的伺服器容錯網域。 此參數定義了哪些伺服器可能會與新增至叢集的伺服器同時故障, 而故障原因可能為共用實體相依性,如電源和網路來源。 容錯網域通常為與共用相依性相關的階層,在越高的容錯網域樹狀結構,會同時故障的伺服器便越多。 在執行階段,網路控制卡會分析叢集中的容錯網域,並將網路控制卡服務分散至不同的容錯網域, 確保任何容錯網域發生故障時,不會危害至服務和狀態的可用性。 容錯網域以階層式格式指定, 如「Fd:/DC1/Rack1/Host1」,其中 DC1 是資料中心名稱,Rack1 是機架名稱,Host1 則是放置節點的主機名稱。
RestInterface RestInterface 參數指定終止具象狀態傳輸 (REST) 通訊的節點介面名稱, 此網路控制卡介面會接收來自網路管理層的 Northbound API 要求。
NodeCertificate NodeCertificate 參數指定網路控制卡用於電腦驗證的憑證。 必須透過憑證,才可針對叢集內的通訊進行憑證式驗證,而憑證也可用於加密網路控制卡服務之間的流量。 憑證主體名稱必須與節點的 DNS 名稱相同。

設定叢集

若要設定叢集,請於 Windows PowerShell 提示字元中輸入下列命令,然後按下 ENTER 鍵。 請根據部署需求,針對各參數新增適合的值。

Install-NetworkControllerCluster -Node <NetworkControllerNode[]> -ClusterAuthentication <ClusterAuthentication> [-ManagementSecurityGroup <string>][-DiagnosticLogLocation <string>][-LogLocationCredential <PSCredential>] [-CredentialEncryptionCertificate <X509Certificate2>][-Credential <PSCredential>][-CertificateThumbprint <String>] [-UseSSL][-ComputerName <string>][-LogSizeLimitInMBs<UInt32>] [-LogTimeLimitInDays<UInt32>]

下表解釋 Install-NetworkControllerCluster 命令中各個參數的意義。

參數 描述
ClusterAuthentication ClusterAuthentication 參數指定保護節點間通訊安全的驗證類型,此驗證也適用於加密網路控制卡服務之間的流量。 支援的值包括 KerberosX509None。 須使用網域帳戶進行 Kerberos 驗證,且只有在網路控制卡節點加入網域後才能使用。 如果指定 X509 式驗證,則必須在 NetworkControllerNode 物件中提供憑證。 此外,必須先手動佈建憑證,才可執行此命令。
ManagementSecurityGroup ManagementSecurityGroup 參數指定安全性群組的名稱,而群組內須包含可從遠端電腦執行管理 Cmdlet 的使用者。 此參數唯有 ClusterAuthentication 為 Kerberos 時才適用, 且須指定網域安全性群組,而非本機電腦上的安全性群組。
節點 Node 參數指定利用 New-NetworkControllerNodeObject 命令建立的網路控制卡節點清單。
DiagnosticLogLocation DiagnosticLogLocation 參數指定診斷記錄的定期上傳共用位置。 如果未指定此參數的值,記錄會儲存於每個節點的本機中。 記錄會儲存於本機的 %systemdrive%\Windows\tracing\SDNDiagnostics 資料夾中, 叢集記錄則會儲存於本機的 %systemdrive%\ProgramData\Microsoft\Service Fabric\log\Traces 資料夾中。
LogLocationCredential LogLocationCredential 參數指定所需的認證,以存取儲存記錄的共用位置。
CredentialEncryptionCertificate CredentialEncryptionCertificate 參數指定網路控制卡用於加密認證的憑證,此憑證適用於網路控制卡二進位檔與 LogLocationCredential (若已指定)。 執行此命令之前,必須先在所有網路控制卡節點上佈建憑證,而且所有叢集節點都須使用相同的憑證。 在生產環境中,建議使用此參數來保護網路控制卡二進位檔和記錄。 如果沒有此參數,認證將會以純文字格式儲存,且可能遭未經授權的使用者誤用。
認證 只有從遠端電腦執行此命令時,才需要此參數。 Credential 參數指定有權於目標電腦執行此命令的使用者帳戶。
CertificateThumbprint 只有從遠端電腦執行此命令時,才需要此參數。 CertificateThumbprint 參數針對有權於目標電腦執行此命令的使用者帳戶,指定其數位公開金鑰憑證 (X509)。
UseSSL 只有從遠端電腦執行此命令時,才需要此參數。 UseSSL 參數指定建立遠端電腦連線時使用的安全通訊端層 (SSL) 通訊協定。 預設不會使用 SSL。
ComputerName ComputerName 參數指定執行此命令的網路控制卡節點。 如果未指定此參數的值,將預設使用本機電腦。
LogSizeLimitInMBs 此參數指定網路控制卡可儲存的記錄大小上限,以 MB 為單位。 記錄會以迴圈方式儲存。 如果有提供 DiagnosticLogLocation,則此參數的預設值為 40 GB。 如果未提供 DiagnosticLogLocation,記錄會儲存在網路控制卡節點上,且此參數的預設值為 15 GB。
LogTimeLimitInDays 此參數指定記錄的儲存時間限制,以天為單位。 記錄會以迴圈方式儲存。 此參數的預設值是 3 天。

設定網路控制卡應用程式

若要設定網路控制卡應用程式,請於 Windows PowerShell 提示字元中輸入下列命令,然後按下 ENTER 鍵。 請根據部署需求,針對各參數新增適合的值。

Install-NetworkController -Node <NetworkControllerNode[]> -ClientAuthentication <ClientAuthentication>  [-ClientCertificateThumbprint <string[]>]  [-ClientSecurityGroup <string>] -ServerCertificate <X509Certificate2> [-RESTIPAddress <String>] [-RESTName <String>] [-Credential <PSCredential>][-CertificateThumbprint <String> ] [-UseSSL]

下表解釋 Install-NetworkController 命令中各個參數的意義。

參數 描述
ClientAuthentication ClientAuthentication 參數指定保護 REST 與網路控制卡之間通訊安全的驗證類型。 支援的值包括 KerberosX509None。 須使用網域帳戶進行 Kerberos 驗證,且只有在網路控制卡節點加入網域後才能使用。 如果指定 X509 式驗證,則必須在 NetworkControllerNode 物件中提供憑證。 此外,必須先手動佈建憑證,才可執行此命令。
節點 Node 參數指定利用 New-NetworkControllerNodeObject 命令建立的網路控制卡節點清單。
ClientCertificateThumbprint 只有針對網路控制卡用戶端使用憑證式驗證時,才需要此參數。 ClientCertificateThumbprint 參數指定針對 Northbound 層用戶端使用的憑證指紋。
ServerCertificate ServerCertificate 參數指定網路控制卡向用戶端證明其身分識別的憑證。 伺服器憑證必須在增強金鑰使用方式延伸模組中包含伺服器驗證目的,並由用戶端信任的 CA 發行給網路控制卡。
RESTIPAddress 在部署單節點網路控制卡時,不須指定 RESTIPAddress 的值; 若為多節點部署,則 RESTIPAddress 參數會以 CIDR 標記法指定 REST 端點的 IP 位址, 例如 192.168.1.10/24。 ServerCertificate 的主體名稱值必須解析為 RESTIPAddress 參數的值。 若所有節點都位於同一個子網路,必須為所有多節點網路控制卡部署指定此參數; 如果節點位於不同的子網路,則須使用 RestName 參數,而非 RESTIPAddress
RestName 在部署單節點網路控制卡時,不須指定 RestName 的值; 只有在多節點部署的節點位於不同子網路時,才須指定 RestName 值。 若為多節點部署,RestName 參數指定網路控制卡叢集的 FQDN。
ClientSecurityGroup ClientSecurityGroup 參數針對成員為網路控制卡用戶端的 Active Directory 安全性群組,指定其群組名稱。 只有在 ClientAuthentication 使用 Kerberos 驗證時,才需要此參數。 安全性群組須包含已存取 REST API 的帳戶,且須先建立安全性群組並新增成員,才能執行此命令。
認證 只有從遠端電腦執行此命令時,才需要此參數。 Credential 參數指定有權於目標電腦執行此命令的使用者帳戶。
CertificateThumbprint 只有從遠端電腦執行此命令時,才需要此參數。 CertificateThumbprint 參數針對有權於目標電腦執行此命令的使用者帳戶,指定其數位公開金鑰憑證 (X509)。
UseSSL 只有從遠端電腦執行此命令時,才需要此參數。 UseSSL 參數指定建立遠端電腦連線時使用的安全通訊端層 (SSL) 通訊協定。 預設不會使用 SSL。

結束設定網路控制卡應用程式後,即完成網路控制卡的部署。

網路控制卡部署驗證

若要驗證網路控制卡部署,可將認證新增至網路控制卡,然後擷取認證。

如果使用 Kerberos 作為 ClientAuthentication 的機制,則至少須擁有 ClientSecurityGroup 的成員資格才可執行此程序。

程序:

  1. 在用戶端電腦上,如果使用 Kerberos 作為 ClientAuthentication 的機制,請使用 ClientSecurityGroup 成員的使用者帳戶登入。

  2. 開啟 Windows PowerShell,輸入下列命令以將認證新增至網路控制卡,然後按下 ENTER 鍵。 請根據部署需求,針對各參數新增適合的值。

    $cred=New-Object Microsoft.Windows.Networkcontroller.credentialproperties
    $cred.type="usernamepassword"
    $cred.username="admin"
    $cred.value="abcd"
    
    New-NetworkControllerCredential -ConnectionUri https://networkcontroller -Properties $cred -ResourceId cred1
    
  3. 若要擷取您新增至網路控制卡的認證,請輸入下列命令,然後按下 ENTER 鍵。 請根據部署需求,針對各參數新增適合的值。

    Get-NetworkControllerCredential -ConnectionUri https://networkcontroller -ResourceId cred1
    
  4. 請檢視命令輸出,確認是否類似於下列輸出範例。

    Tags                   :
    ResourceRef     : /credentials/cred1
    CreatedTime    : 1/1/0001 12:00:00 AM
    InstanceId        : e16ffe62-a701-4d31-915e-7234d4bc5a18
    Etag                  : W/"1ec59631-607f-4d3e-ac78-94b0822f3a9d"
    ResourceMetadata :
    ResourceId       : cred1
    Properties       : Microsoft.Windows.NetworkController.CredentialProperties
    

    注意

    執行 Get-NetworkControllerCredential 命令時,可利用點運算子列出認證的屬性,將命令輸出指派給變數, 例如 $cred.Properties。

網路控制卡的其他 Windows PowerShell 命令

部署網路控制卡後,可使用 Windows PowerShell 命令來管理和修改部署。 以下是您可以針對部署進行的變更。

  • 修改網路控制卡節點、叢集和應用程式設定

  • 移除網路控制卡叢集和應用程式

  • 管理網路控制卡叢集節點,包括新增、移除、啟用和停用節點。

下表為可用以完成上述任務的 Windows PowerShell 命令語法。

Task Command 語法
修改網路控制卡叢集設定 Set-NetworkControllerCluster Set-NetworkControllerCluster [-ManagementSecurityGroup <string>][-Credential <PSCredential>] [-computerName <string>][-CertificateThumbprint <String> ] [-UseSSL]
修改網路控制卡應用程式設定 Set-NetworkController Set-NetworkController [-ClientAuthentication <ClientAuthentication>] [-Credential <PSCredential>] [-ClientCertificateThumbprint <string[]>] [-ClientSecurityGroup <string>] [-ServerCertificate <X509Certificate2>] [-RestIPAddress <String>] [-ComputerName <String>][-CertificateThumbprint <String> ] [-UseSSL]
修改網路控制卡節點設定 Set-NetworkController Set-NetworkControllerNode -Name <string> > [-RestInterface <string>] [-NodeCertificate <X509Certificate2>] [-Credential <PSCredential>] [-ComputerName <string>][-CertificateThumbprint <String> ] [-UseSSL]
修改網路控制卡診斷設定 Set-NetworkControllerDiagnostic Set-NetworkControllerDiagnostic [-LogScope <string>] [-DiagnosticLogLocation <string>] [-LogLocationCredential <PSCredential>] [-UseLocalLogLocation] >] [-LogLevel <loglevel>][-LogSizeLimitInMBs <uint32>] [-LogTimeLimitInDays <uint32>] [-Credential <PSCredential>] [-ComputerName <string>][-CertificateThumbprint <String> ] [-UseSSL]
移除網路控制卡應用程式 Uninstall-NetworkController Uninstall-NetworkController [-Credential <PSCredential>][-ComputerName <string>] [-CertificateThumbprint <String> ] [-UseSSL]
移除網路控制卡叢集 Uninstall-NetworkControllerCluster Uninstall-NetworkControllerCluster [-Credential <PSCredential>][-ComputerName <string>][-CertificateThumbprint <String> ] [-UseSSL]
新增節點至網路控制卡叢集 Add-NetworkControllerNode Add-NetworkControllerNode -FaultDomain <String> -Name <String> -RestInterface <String> -Server <String> [-CertificateThumbprint <String> ] [-ComputerName <String> ] [-Credential <PSCredential> ] [-Force] [-NodeCertificate <X509Certificate2> ] [-PassThru] [-UseSsl]
停用網路控制卡叢集節點 Disable-NetworkControllerNode Disable-NetworkControllerNode -Name <String> [-CertificateThumbprint <String> ] [-ComputerName <String> ] [-Credential <PSCredential> ] [-PassThru] [-UseSsl]
啟用網路控制卡叢集節點 Enable-NetworkControllerNode Enable-NetworkControllerNode -Name <String> [-CertificateThumbprint <String> ] [-ComputerName <String> ] [-Credential <PSCredential> ] [-PassThru] [-UseSsl]
從叢集移除網路控制卡節點 Remove-NetworkControllerNode Remove-NetworkControllerNode [-CertificateThumbprint <String> ] [-ComputerName <String> ] [-Credential <PSCredential> ] [-Force] [-Name <String> ] [-PassThru] [-UseSsl]

注意

網路控制卡的 Windows PowerShell 命令位於 TechNet 程式庫的網路控制卡 Cmdlet 中。

網路控制卡組態指令碼範例

下列的組態指令碼範例說明如何建立多節點網路控制卡叢集,並安裝網路控制卡應用程式。 此外,$cert 變數會從本機電腦的憑證存放區中,選擇與主體名稱字串「networkController.contoso.com」相符的憑證。

$a = New-NetworkControllerNodeObject -Name Node1 -Server NCNode1.contoso.com -FaultDomain fd:/rack1/host1 -RestInterface Internal
$b = New-NetworkControllerNodeObject -Name Node2 -Server NCNode2.contoso.com -FaultDomain fd:/rack1/host2 -RestInterface Internal
$c = New-NetworkControllerNodeObject -Name Node3 -Server NCNode3.contoso.com -FaultDomain fd:/rack1/host3 -RestInterface Internal

$cert= get-item Cert:\LocalMachine\My | get-ChildItem | where {$_.Subject -imatch "networkController.contoso.com" }

Install-NetworkControllerCluster -Node @($a,$b,$c)  -ClusterAuthentication Kerberos -DiagnosticLogLocation \\share\Diagnostics - ManagementSecurityGroup Contoso\NCManagementAdmins -CredentialEncryptionCertificate $cert
Install-NetworkController -Node @($a,$b,$c) -ClientAuthentication Kerberos -ClientSecurityGroup Contoso\NCRESTClients -ServerCertificate $cert -RestIpAddress 10.0.0.1/24

非 Kerberos 部署的部署後步驟

如果部署網路控制卡時未使用 Kerberos,則必須部署憑證。

如需詳細資訊,請參閱網路控制卡的部署後步驟