Compute Engine 提供 Windows Server 的公共映像,您可以使用这些映像来创建实例。如需了解如何创建预装了 SQL Server 的 Windows Server 实例,请参阅创建 SQL Server 实例。
如需更广泛地了解可以在 Compute Engine 上运行的 Windows Server 实例和 Windows 应用,请参阅在 Compute Engine 上使用 Windows。
价格
准备工作
- 为您的项目启用结算功能。
-
如果您尚未设置身份验证,请进行设置。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以选择以下任一选项向 Compute Engine 进行身份验证:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
在 Google Cloud 控制台中,转到创建实例页面。
对于启动磁盘,选择更改,然后执行以下操作:
- 在公共映像标签页上,选择 Windows Server 操作系统。
- 点击选择。
如需创建虚拟机,请点击创建。
在 Google Cloud 控制台中,转到创建实例页面。
对于启动磁盘,选择更改,然后执行以下操作:
- 在公共映像标签页上,选择 Windows Server 操作系统。
- 要保存启动磁盘配置,请点击选择。
(可选)如需更改虚拟机的安全强化型虚拟机设置,请展开高级选项部分。之后,执行以下操作:
- 展开安全部分。
- 如果您要关闭安全启动,请清除开启安全启动复选框。安全启动功能可帮助保护您的虚拟机实例免受启动级和内核级恶意软件和 rootkit 的攻击。如需了解详情,请参阅安全启动。
如果您要关闭虚拟可信平台模块 (vTPM),请清除开启 vTPM 复选框。vTPM 将启用测量启动,该功能可验证虚拟机预启动和启动完整性。如需了解详情,请参阅虚拟可信平台模块 (vTPM)。
如果您要关闭完整性监控,请清除开启完整性监控复选框。借助完整性监控功能,您可以使用 Cloud Monitoring 监控安全强化型虚拟机的启动完整性。如需了解详情,请参阅完整性监控。
如需创建虚拟机,请点击创建。
[INSTANCE_NAME]
是新实例的名称。[IMAGE_FAMILY]
是 Windows Server 映像的公共映像系列之一。[MACHINE_TYPE]
是可用的机器类型之一。[BOOT_DISK_SIZE]
是启动磁盘的大小(以 GB 为单位)。永久性磁盘越大,吞吐量越高。[BOOT_DISK_TYPE]
是您的实例的启动磁盘类型。例如pd-ssd
。--no-shielded-secure-boot
:停用安全启动。安全启动功能可帮助保护您的虚拟机实例免受启动级和内核级恶意软件和 rootkit 的攻击。如需了解详情,请参阅安全启动。--no-shielded-vtpm
:停用虚拟可信平台模块 (vTPM)。vTPM 将启用测量启动,该功能可验证虚拟机预启动和启动完整性。如需了解详情,请参阅虚拟可信平台模块 (vTPM)。--no-shielded-integrity-monitoring
:停用完整性监控。借助完整性监控功能,您可以使用 Cloud Monitoring 监控安全强化型虚拟机实例的启动完整性。如需了解详情,请参阅完整性监控。[INSTANCE_NAME]
是新实例的名称。[IMAGE_FAMILY]
是 Windows Server 或 SQL Server 映像的公共映像系列之一。[ZONE]
是此实例所在的地区。[MACHINE_TYPE]
是可用的机器类型之一。[BOOT_DISK_SIZE]
是启动磁盘的大小(以 GB 为单位)。永久性磁盘越大,吞吐量越高。[BOOT_DISK_TYPE]
是您的实例的启动磁盘类型。例如pd-ssd
。enableSecureBoot
:启用或停用安全启动。安全启动功能可帮助保护您的虚拟机实例免受启动级和内核级恶意软件和 rootkit 的攻击。如需了解详情,请参阅安全启动。enableVtpm
:启用或停用虚拟可信平台模块 (vTPM)。vTPM 将启用测量启动,该功能可验证虚拟机预启动和启动完整性。如需了解详情,请参阅虚拟可信平台模块 (vTPM)。enableIntegrityMonitoring
:启用或停用完整性监控。借助完整性监控功能,您可以使用 Cloud Monitoring 报告监控和验证安全强化型虚拟机实例的运行时启动完整性。如需了解详情,请参阅完整性监控。- 您在配置文件中设置的配置参数
- 在实例级自定义元数据中设置的配置参数
- 在项目级自定义元数据中设置的配置参数
配置文件:
[accountManager] disable=true
在自定义元数据中,将元数据中的
disable-account-manager
设置为true
。配置文件条目:
[addressManager] disable=true
在自定义元数据中,将元数据中的
disable-address-manager
设置为true
。配置文件条目:
[wsfc] enable=true
在自定义元数据中,将元数据中的
enable-wsfc
设置为true
。配置文件条目:
[wsfc] addresses=10.0.0.10
在自定义元数据中,将
wsfc-addrs
设置为10.0.0.10
。配置文件条目:
[wsfc] port=12345
在自定义元数据中,将
wsfc-agent-port
设置为端口号。- 将实例元数据中的
disable-account-manager
设置为true
即可停用账号管理器。 - 将实例元数据中的
disable-address-manager
设置为true
即可停用地址管理器。 - 为 Windows 虚拟机生成凭据
- 添加永久性磁盘
- 使用 RDP 连接到 Windows 虚拟机
- 使用 SSH 连接到 Windows 虚拟机
- 使用 PowerShell 连接到 Windows 虚拟机
Go
如需在本地开发环境中使用本页面上的 Go 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
Java
如需在本地开发环境中使用本页面上的 Java 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
Node.js
如需在本地开发环境中使用本页面上的 Node.js 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
Python
如需在本地开发环境中使用本页面上的 Python 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
如需了解详情,请参阅 Set up authentication for a local development environment。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
创建一个 Windows Server 实例
如需创建 Windows Server 实例,请指定所需的特定 Windows 版本的映像系列。Compute Engine 提供了多个 Windows Server 版本,其中大部分以安全强化型虚拟机映像的形式提供。安全强化型虚拟机映像提供了诸多安全功能,例如符合 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 实例。您的 VPC 网络必须配置为允许访问
kms.windows.googlecloud.com
。控制台
如需创建基本的 Windows 虚拟机,请执行以下操作:
如需创建安全强化型虚拟机 Windows 实例,请执行以下操作:
gcloud
使用
compute images list
命令查看可用的 Windows Server 映像列表:gcloud compute images list --project windows-cloud --no-standard-images
要确定某一映像是否支持安全强化型虚拟机功能,请运行以下命令,然后检查输出中的
UEFI_COMPATIBLE
:gcloud compute images describe [IMAGE_NAME] --project windows-cloud
其中
[IMAGE_NAME]
是要检查是否支持安全强化型虚拟机功能的映像的名称。使用
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]
其中:
如果选择支持安全强化型虚拟机的映像,则可以选择使用以下标志之一更改实例的安全强化型虚拟机设置:
以下示例创建停用了安全启动的 Windows 2022 安全强化型虚拟机实例:
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 }] }
其中:
如果选择支持安全强化型虚拟机的映像,则可以在请求正文中选择使用以下布尔值项更改实例的安全强化型虚拟机设置:
如需详细了解如何创建实例,请参阅
instances.insert()
文档。创建 Windows 或 SQL Server 实例后,为该实例设置初始密码,以便通过 RDP 连接该实例。
此外,您还可以在创建虚拟机时或在创建虚拟机后,将虚拟机加入代管式 Microsoft AD 域。如需了解详情,请参阅将 Windows 虚拟机自动加入网域。
创建使用内部 IP 地址进行激活的 Windows Server 实例
如需创建仅具有内部 IP 地址的 Windows Server 实例,您必须在 VPC 网络中验证或配置路由和防火墙规则,以允许访问
kms.windows.googlecloud.com
。此外,您还必须为 VPC 网络中只有内部 IP 地址的 Windows 实例所在的子网启用专用 Google 访问通道。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 从已接入您的 VPC 网络的其他网络进行连接,也可以先通过 RDP 连接到堡垒实例,然后再连接到只有内部 IP 地址的实例。
此外,您还可以在创建虚拟机时或在创建虚拟机后,将虚拟机加入代管式 Microsoft AD 域。如需了解详情,请参阅将 Windows 虚拟机自动加入网域。
配置对 kms.windows.googlecloud.com 的访问权限
如需激活和续订 Windows,您的 VPC 网络必须满足以下路由和防火墙规则要求。
路由要求
您的 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 地址的激活请求。您可以使用 VPC 网络中的默认路由将流量直接路由至
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
替换为您的 VPC 网络名称。如上所述,默认路由或自定义静态路由将允许具有外部 IP 地址的实例访问
kms.windows.googlecloud.com
。如果您的 Windows 实例没有外部 IP 地址或未使用 Cloud NAT,您还必须启用专用 Google 访问通道,这样仅具有内部 IP 地址的实例才能将流量发送到kms.windows.googlecloud.com
(35.190.247.13
或2001:4860:4802:32::86
)的外部 IP 地址。防火墙规则要求
隐式允许出站防火墙规则允许实例发出请求并接收已建立的响应。除非您创建了拒绝出站的自定义防火墙规则,否则您的 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
替换为您的 VPC 网络名称。验证实例已成功启动
由于 sysprep 进程,Windows 实例的启动时间较长。即使 sysprep 进程尚未完成,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 控制台重置密码的功能:
停用地址管理器
Windows Server 故障切换集群
启用 Windows Server 故障切换集群代理:
使用多个内部负载均衡器
为故障切换集群指定内部负载均衡实例的 IP 地址。这是一种您无需为专用故障切换集群设置的高级配置。
您通常使用内部负载均衡实例将网络流量一次指向一个虚拟机实例。如果您再添加一个内部负载均衡实例,并且将该故障切换集群虚拟机实例用作负载均衡网站后端的一部分,则您将拥有两个内部负载均衡 IP 地址。如果故障切换集群使用
10.0.0.10
且网站的负载均衡器使用10.0.0.11
,则您必须指定用于故障切换集群的负载均衡器的 IP 地址。这可以明确定义为该集群使用哪个地址,消除歧义。更改集群代理端口
设置故障切换集群代理端口。默认端口为
59998
。只有在要使用其他端口时,才需要指定端口:映像版本说明
较旧的映像不使用配置文件,并且只具有部分功能。介于版本
v20160112
和版本v20170509
之间的映像版本或介于3.2.1.0
和4.0.0
之间的 Windows 代理版本要求您使用以下自定义元数据值:后续步骤
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-22。
-