Compute Engine 提供的公開映像檔具有可用於建立執行個體的 Windows Server。如要瞭解如何建立預先安裝 SQL Server 的 Windows Server 執行個體,請參閱「建立 SQL Server 執行個體」。
至於可在 Compute Engine 上執行的 Windows Server 執行個體與 Windows 應用程式,如需相關的一般資訊,請參閱 Compute Engine 上的 Windows 一文。
定價
Windows Server 映像檔是付費映像檔,使用時會產生額外費用。
Windows Server VM 不包含在Google Cloud 免費方案中。
事前準備
- 啟用專案的計費功能。
-
如果尚未設定驗證,請先完成設定。驗證程序會確認您的身分,以便授予 Google Cloud 服務和 API 的存取權。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
請根據您打算如何使用本頁範例,選取對應的分頁標籤:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,不需要設定驗證。
gcloud
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
- 設定預設區域和可用區。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如果您使用的是本機殼層,請為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果您使用 Cloud Shell,則不需要執行這項操作。
如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI。
-
安裝 Google Cloud CLI。
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果您使用 Cloud Shell,則不需要執行這項操作。
如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI。
-
安裝 Google Cloud CLI。
-
若您採用的是外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果您使用 Cloud Shell,則不需要執行這項操作。
如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI。
-
安裝 Google Cloud CLI。
-
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
-
如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:
gcloud auth application-default login
如果您使用 Cloud Shell,則不需要執行這項操作。
如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI。
Go
如要在本機開發環境中使用本頁的 Go 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱「 設定本機開發環境的驗證機制」。
Java
如要在本機開發環境中使用本頁的 Java 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱「 設定本機開發環境的驗證機制」。
Node.js
如要在本機開發環境中使用本頁的 Node.js 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱「 設定本機開發環境的驗證機制」。
Python
如要在本機開發環境中使用本頁的 Python 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。
詳情請參閱「 設定本機開發環境的驗證機制」。
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「使用 REST 進行驗證」一節。
建立 Windows Server 執行個體
如要以 Windows Server 建立執行個體,請指定您需要的 Windows 特定版本映像檔系列。Compute Engine 提供多個版本的 Windows Server,其中大部分都可做為 Shielded VM 映像檔使用。Shielded VM 映像檔提供安全防護功能,例如符合 UEFI 規範的韌體、安全啟動,以及受 vTPM 保護的測量啟動。如需可用映像檔系列的清單,請參閱「公開映像檔」。
如需超過兩個並行的遠端桌面工作階段,請購買遠端桌面工作階段 (RDS) 用戶端存取授權 (CAL)。詳情請參閱「使用用戶端存取授權 (CAL) 為 RDS 部署授權」。
使用 Microsoft Active Directory
如果打算在新例項中使用 Microsoft Active Directory (AD),請確保例項名稱長度不超過 15 個字元,以符合系統名稱長度上限限制。
AD 會使用機器的 NetBIOS 名稱,這些名稱是將執行個體名稱截斷為 15 個字元後產生。因此,嘗試以網域使用者身分登入時,可能會遇到下列錯誤:The Security Database on the Server does not have a Computer Account for this Workstation Trust Relationship。
建立使用外部 IP 啟動的 Windows Server 執行個體
本節說明如何建立具有外部 IP 位址的 Windows Server 執行個體。虛擬私有雲網路必須設為允許存取 kms.windows.googlecloud.com。
控制台
如要建立基本 Windows VM,請按照下列步驟操作:
前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。
在「開機磁碟」部分,選取「變更」,然後執行下列操作:
- 在「Public images」(公開映像檔) 分頁中,選擇 Windows Server 作業系統。
- 按一下「選取」。
按一下「Create」(建立),即可建立 VM。
如要建立 Shielded VM Windows 執行個體,請按照下列步驟操作:
前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。
在「開機磁碟」部分,選取「變更」,然後執行下列操作:
- 在「Public images」(公開映像檔) 分頁中,選擇 Windows Server 作業系統。
- 如要儲存開機磁碟設定,請按一下「選取」。
(選用) 如要變更 VM 的 Shielded VM 設定,請展開「Advanced options」(進階選項) 部分。接著,請按照下列步驟操作:
- 展開「安全性」部分。
- 如要關閉安全啟動功能,請取消勾選「Turn on Secure Boot」(啟用安全啟動功能) 核取方塊。安全啟動功能可防止 VM 執行個體受到啟動層級和核心層級的惡意軟體和 Rootkit 攻擊。詳情請參閱安全啟動一節。
如要關閉虛擬信任平台模組 (vTPM),請取消勾選「啟用 vTPM」核取方塊。vTPM 可啟用測量啟動功能,來驗證 VM 的啟動前和啟動完整性。詳情請參閱虛擬信任平台模組 (vTPM) 一節。
如要關閉完整性監控功能,請取消勾選「Turn on Integrity Monitoring」(啟用完整性監控功能) 核取方塊。啟用完整性監控功能後,您就能透過 Cloud Monitoring 監控 Shielded VM 的啟動完整性。詳情請參閱完整性監控一節。
按一下「Create」(建立),即可建立 VM。
gcloud
使用 compute images list 指令查看可用的 Windows Server 映像清單:
gcloud compute images list --project windows-cloud --no-standard-images
如要判斷映像檔是否支援 Shielded VM 功能,請執行下列指令,並檢查輸出內容中是否有 UEFI_COMPATIBLE:
gcloud compute images describe IMAGE_NAME --project windows-cloud
將 IMAGE_NAME 替換為要檢查是否支援 Shielded VM 功能的映像檔名稱。
使用 compute instances create 指令建立新執行個體,並指定其中一個 Windows Server 公開映像檔的映像檔系列。
gcloud compute instances create INSTANCE_NAME \
--image-project windows-cloud \
--image-family IMAGE_FAMILY \
--machine-type MACHINE_TYPE \
--boot-disk-size BOOT_DISK_SIZE \
--boot-disk-type BOOT_DISK_TYPE
更改下列內容:
INSTANCE_NAME:新執行個體的名稱。IMAGE_FAMILY:Windows Server 映像檔的其中一個公開映像檔系列。MACHINE_TYPE:其中一個可用的機型。BOOT_DISK_SIZE:開機磁碟大小 (以 GiB 為單位)。 磁碟越大,輸送量就越高。BOOT_DISK_TYPE:執行個體的開機磁碟類型,例如hyperdisk-balanced或pd-ssd。
如果您選擇的映像檔支援 Shielded VM,可以使用下列其中一個旗標,選擇性地變更執行個體的 Shielded VM 設定:
--no-shielded-secure-boot:停用安全啟動功能。安全啟動功能可防止 VM 執行個體受到啟動層級和核心層級的惡意軟體和 Rootkit 攻擊。詳情請參閱安全啟動一節。--no-shielded-vtpm:停用虛擬信任平台模組 (vTPM)。vTPM 可啟用測量啟動功能,來驗證 VM 的啟動前和啟動完整性。詳情請參閱虛擬信任平台模組 (vTPM) 一節。--no-shielded-integrity-monitoring:停用完整性監控。啟用完整性監控功能之後,您就能透過 Cloud Monitoring 監控 Shielded VM 執行個體的啟動完整性。詳情請參閱完整性監控一節。
以下範例會建立 Windows 2022 受防護的 VM 執行個體,並停用安全啟動功能:
gcloud compute instances create my-instance \
--image-family windows-2022 --image-project windows-cloud \
--no-shielded-secure-boot
Go
Java
Node.js
Python
REST
如要使用 API 建立執行個體,請在執行個體建立要求中加入 initializeParams 屬性,並指定 Windows 映像檔。舉例來說,您的要求主體可能如下所示:
instance = {
"name": "INSTANCE_NAME",
"machineType": "zones/ZONE/machineTypes/MACHINE_TYPE",
"disks": [{
"boot": "true",
"type": "PERSISTENT",
"initializeParams": {
"diskName": "DISK_NAME",
"sourceImage": "https://www.googleapis.com/compute/v1/projects/windows-cloud/global/images/family/IMAGE_FAMILY",
"diskSizeGb": "BOOT_DISK_SIZE",
"diskType": "BOOT_DISK_TYPE",
}
}],
"networkInterfaces": [{
"accessConfigs": [{
"type": "ONE_TO_ONE_NAT",
"name": "External NAT"
}],
"network": "global/networks/default"
}],
"serviceAccounts": [{
"email": DEFAULT_SERVICE_EMAIL,
"scopes": DEFAULT_SCOPES
}]
}將下列預留位置替換為有效值:
INSTANCE_NAME:新執行個體的名稱。IMAGE_FAMILY: :Windows Server 或 SQL Server 映像檔的公開映像檔系列之一。ZONE:這個執行個體的可用區。MACHINE_TYPE:其中一個可用的機型。BOOT_DISK_SIZE:開機磁碟的大小,以 GiB 為單位。磁碟越大,輸送量就越高。BOOT_DISK_TYPE:執行個體的開機磁碟類型,例如hyperdisk-balanced或pd-ssd。
如果您選擇的映像檔支援Shielded VM,可以視需要使用下列布林值要求主體項目,變更執行個體的 Shielded VM 設定:
enableSecureBoot:啟用或停用安全啟動功能。安全啟動功能可防止 VM 執行個體受到啟動層級和核心層級的惡意軟體和 Rootkit 攻擊。詳情請參閱安全啟動一節。enableVtpm:啟用或停用虛擬信任平台模組 (vTPM)。vTPM 可啟用測量啟動功能,來驗證 VM 的啟動前和啟動完整性。詳情請參閱虛擬信任平台模組 (vTPM) 一節。enableIntegrityMonitoring:啟用或停用完整性監控功能。啟用完整性監控功能之後,您就能透過 Cloud Monitoring 報表,監控及驗證 Shielded VM 執行個體的執行階段啟動完整性。詳情請參閱完整性監控一節。
如要進一步瞭解如何建立執行個體,請參閱 instances.insert() 方法說明文件。
建立 Windows 或 SQL Server 執行個體後,請設定執行個體的初始密碼,以便透過 RDP 連線至執行個體。
此外,您可以在建立 VM 時或建立 VM 後,將 VM 加入Managed Microsoft AD 網域。詳情請參閱「自動將 Windows VM 加入網域」。
建立使用內部 IP 位址啟用的 Windows Server 執行個體
如要建立只有內部 IP 位址的 Windows Server 執行個體,您必須先在虛擬私有雲網路中驗證或設定路由和防火牆規則,允許存取 kms.windows.googlecloud.com。此外,您必須為虛擬私有雲網路中僅含內部 IP 位址的 Windows 執行個體,啟用 Private Google Access。
gcloud
使用 gcloud CLI 建立新執行個體時,可以透過 --no-address 旗標,確保系統不會為執行個體指派外部 IP 位址:
gcloud compute instances create INSTANCE_NAME --network NETWORK_NAME \ --subnet SUBNET_NAME \ --no-address \ --zone ZONE \ --image-project windows-cloud \ --image-family IMAGE_FAMILY \ --machine-type MACHINE_TYPE \ --boot-disk-size BOOT_DISK_SIZE \ --boot-disk-type BOOT_DISK_TYPE
將下列預留位置替換為有效值:
Go
Java
Node.js
Python
由於此執行個體沒有外部 IP 位址,因此您無法直接透過網際網路連線至該個體。您可以透過 Cloud Interconnect 或 Cloud VPN,從連線至虛擬私有雲網路的其他網路連線,也可以先透過 RDP 連線至堡壘執行個體,再連線至僅有內部 IP 位址的執行個體。
此外,您可以在建立 VM 時或建立後,將 VM 加入 Managed Microsoft AD 網域。詳情請參閱「自動將 Windows VM 加入網域」。
設定 kms.windows.googlecloud.com 的存取權
如要啟用及更新 Windows,虛擬私有雲網路必須符合下列路由和防火牆規則規定。
轉送條件
Windows 執行個體必須能夠透過路由連往 kms.windows.googlecloud.com (35.190.247.13 或 2001:4860:4802:32::86),且路由的下一個躍點為預設網際網路閘道。您無法使用以執行個體為基礎的 NAT 閘道或 Cloud NAT 啟動 Windows 執行個體,因為 kms.windows.googlecloud.com 會拒絕來自未經確認為 Compute Engine 執行個體的 IP 位址的啟動要求。
您可以使用虛擬私有雲網路中的預設路由,將流量直接轉送至 kms.windows.googlecloud.com。如果移除這條路由,或打算在日後移除,請建立自訂靜態路由,將目的地設為 35.190.247.13 或 2001:4860:4802:32::86,下一個躍點則設為預設網際網路閘道,如下所示:
僅限 IPv4
gcloud compute routes create mskms-ipv4-route-ipv4-network \
--destination-range=35.190.247.13/32 \
--network=ipv4-network \
--next-hop-gateway=default-internet-gateway
雙堆疊
gcloud compute routes create mskms-ipv4-route-ipv4-network \
--destination-range=35.190.247.13/32 \
--network=ipv4-network \
--next-hop-gateway=default-internet-gateway
gcloud compute routes create mskms-ipv6-route-ipv6-network \
--destination-range=2001:4860:4802:32::86/128 \
--network=ipv6-network \
--next-hop-gateway=default-internet-gateway
僅限 IPv6
gcloud compute routes create mskms-ipv6-route-ipv6-network \
--destination-range=2001:4860:4802:32::86/128 \
--network=ipv6-network \
--next-hop-gateway=default-internet-gateway
將 ipv4-network 或 ipv6-network 替換為虛擬私有雲網路名稱。
預設路徑或自訂靜態路徑可讓具有外部 IP 位址的執行個體連上 kms.windows.googlecloud.com。如果您有不含外部 IP 位址或使用 Cloud NAT 的 Windows 執行個體,則也必須啟用 Private Google Access,這樣只有內部 IP 位址的執行個體才能將流量傳送至 kms.windows.googlecloud.com 的外部 IP 位址 (35.190.247.13 或 2001:4860:4802:32::86)。
防火牆規則條件
默示允許輸出防火牆規則可讓執行個體發出要求並接收已建立的回應。除非您建立了拒絕輸出的自訂防火牆規則,否則您的 Windows 執行個體皆可與 kms.windows.googlecloud.com 通訊。
如果自訂防火牆規則,建議建立優先順序較高的輸出允許規則,明確允許與 35.190.247.13 或 2001:4860:4802:32::86 通訊。如此一來,當您修改防火牆規則時,就不會意外停用 Windows 啟用作業。
下列 gcloud 範例會按照上述做法,建立最高優先順序的允許輸出規則:
僅限 IPv4
gcloud compute firewall-rules create mskms-ipv4-firewall-rule-ipv4-network \
--direction=EGRESS \
--network=ipv4-network \
--action=ALLOW \
--rules=tcp:1688 \
--destination-ranges=35.190.247.13/32 \
--priority=0
雙堆疊
gcloud compute firewall-rules create mskms-ipv4-firewall-rule-ipv4-network \
--direction=EGRESS \
--network=ipv4-network \
--action=ALLOW \
--rules=tcp:1688 \
--destination-ranges=35.190.247.13/32 \
--priority=0
gcloud compute firewall-rules create mskms-ipv6-firewall-rule-ipv6-network \
--direction=EGRESS \
--network=ipv6-network \
--action=ALLOW \
--rules=tcp:1688 \
--destination-ranges=2001:4860:4802:32::86/128 \
--priority=0
僅限 IPv6
gcloud compute firewall-rules create mskms-ipv6-firewall-rule-ipv6-network \
--direction=EGRESS \
--network=ipv6-network \
--action=ALLOW \
--rules=tcp:1688 \
--destination-ranges=2001:4860:4802:32::86/128 \
--priority=0
將 ipv4-network 或 ipv6-network 替換為您的虛擬私有雲網路名稱。
驗證系統是否成功啟動執行個體
由於 sysprep 程序的緣故,Windows 執行個體的啟動時間會較長。即使系統準備程序尚未完成, Google Cloud 控制台仍可能顯示執行個體正在執行。若要檢查執行個體是否成功啟動且已可供使用,請使用下列指令檢查序列埠輸出:
gcloud compute instances get-serial-port-output INSTANCE_NAME
將 INSTANCE_NAME 替換為要驗證的執行個體名稱。
...[snip]... Running schtasks with arguments /run /tn GCEStartup --> SUCCESS: Attempted to run the scheduled task "GCEStartup". ------------------------------------------------------------- Instance setup finished. INSTANCE_NAME is ready to use. -------------------------------------------------------------
啟用與停用 Windows 執行個體功能
如果 Windows 執行個體使用 v20170509 以上版本的映像檔,或 4.1.0 以上版本的代理程式,您可以在設定檔或專案/執行個體自訂中繼資料中設定執行個體。設定檔採用 INI 格式,位於下列路徑:
C:\Program Files\Google\Compute Engine\instance_configs.cfg
系統會按照以下優先順序,由最高優先順序開始,依序覆寫設定。
- 設定檔中的設定參數
- 執行個體層級自訂中繼資料的設定參數
- 專案層級自訂中繼資料中的設定參數
舉例而言,如果可以在設定檔中啟用accountManager 功能,執行個體就會忽略您在自訂中繼資料中設定的參數,以停用該功能。
在設定檔中設定這些參數的好處之一,是當您為 Windows Server 執行個體建立自訂映像檔時,這些設定會保留下來。而執行個體的壽命期間過後,系統並不會保留執行個體層級的自訂中繼資料。
您可使用下列範例,停用各種不同的 Windows 執行個體功能。
停用帳戶管理員
停用帳戶管理員也會停用使用 Google Cloud CLI 重設密碼或 Google Cloud 控制台:
設定檔:
[accountManager] disable=true將自訂中繼資料中的
disable-account-manager設為true。
停用地址管理工具
設定檔項目:
[addressManager] disable=true將自訂中繼資料中的
disable-address-manager設為true。
Windows Server 容錯移轉叢集
啟用 Windows Server 容錯移轉叢集代理程式:
設定檔項目:
[wsfc] enable=true將自訂中繼資料中的
enable-wsfc設為true。
使用多個內部負載平衡器
指定容錯移轉叢集的內部負載平衡執行個體 IP 位址。此為進階設定,專屬的容錯移轉叢集無需設定。
通常一次會使用一個內部負載平衡執行個體,將網路流量引導至一個 VM 執行個體。若增加第二個內部負載平衡執行個體,而該執行個體把容錯移轉叢集 VM 執行個體作為負載平衡網站後端的一部分,就會有兩個內部負載平衡 IP 位址。若容錯移轉叢集使用 10.0.0.10,而網站的負載平衡器使用的是 10.0.0.11,則容錯移轉叢集使用的負載平衡器就必須由您指定 IP 位址。如此有助於區分叢集使用的位址。
設定檔項目:
[wsfc] addresses=10.0.0.10將自訂中繼資料的
wsfc-addrs設為10.0.0.10。
變更叢集代理程式通訊埠
設定容錯移轉叢集代理程式的通訊埠。預設通訊埠為 59998。僅在需要使用不同的通訊埠時,才需要指定通訊埠:
設定檔項目:
[wsfc] port=12345將自訂中繼資料的
wsfc-agent-port設為通訊埠編號。
映像檔版本附註
舊版映像檔不會使用設定檔,且僅提供部分功能。
若為 v20160112 與 v20170509 之間的映像檔版本,或是 3.2.1.0 與 4.0.0 之間的 Windows 代理程式版本,則需使用下列自訂中繼資料值:
- 將執行個體中繼資料的
disable-account-manager設為true,即可停用帳戶管理工具。 - 將執行個體中繼資料的
disable-address-manager設為true,以停用位址管理員。