更改 VPC 网络的 MTU 设置
在 Google Cloud 中,您需要为每个 VPC 网络设置 MTU。使用该网络的虚拟机 (VM) 实例必须配置为在其接口上使用相同的 MTU 设置。
基于公共操作系统映像的 Linux 虚拟机会从 DHCP 服务器接收 VPC 网络的 MTU 设置。DHCP 选项 26 包含 MTU 设置。
Windows 虚拟机不会使用 DHCP 来配置 MTU 设置。如果您要更改 VPC 网络的 MTU,则必须更改虚拟机的 MTU 设置。
如需详细了解虚拟机和 MTU 设置,请参阅虚拟机和 MTU 设置。
您可以通过以下两种方式开始使用具有不同 MTU 设置的 VPC 网络:
您可以更改现有 VPC 网络的 MTU 设置,此操作需要同时关停网络中的所有虚拟机。
您可以创建具有不同 MTU 设置的新 VPC 网络,并将虚拟机迁移到该 VPC 网络。
更改网络的 MTU
每个 VPC 网络都有一个 MTU。请勿在虚拟机运行时更改网络 MTU。如果更改,可能会造成在一段时间内虚拟机具有不同的 MTU,因而导致网络连接不可靠。
如需详细了解如何更改网络的 MTU,请参阅最大传输单元概览。
更新网络 MTU 的推荐方法是停止所有正在运行的虚拟机实例、更改网络 MTU,然后启动所有实例。基于公共 Linux 映像的虚拟机会自动配置其每个网络接口,以便在虚拟机启动时使用连接的 VPC 网络的 MTU。您必须手动更新 Windows 虚拟机以及基于自定义映像(不依赖于 DHCP 进行网络 MTU 配置)的虚拟机的 MTU。
控制台
Google Cloud 控制台中不支持更新网络 MTU。请参阅 Google Cloud CLI 或 API 说明。
gcloud
停止所有虚拟机。
对于网络中的每个区域,可停止相应区域中的所有虚拟机。
gcloud compute instances stop INSTANCE_NAMES... \ --zone=ZONE
更新网络 MTU。
gcloud compute networks update NETWORK \ --mtu=MTU
启动所有虚拟机。
对于网络中的每个区域,可启动相应区域中的所有虚拟机。
gcloud compute instances start INSTANCE_NAMES... \ --zone=ZONE
请将占位符替换为有效值:
INSTANCE_NAMES...
是以空格分隔的实例列表。NETWORK
是您需要更改其动态路由模式的 VPC 网络的名称。MTU
指定网络的 MTU 是1460
(默认值)、1500
还是8896
。在将 MTU 设置为高于1460
的值之前,请先查看最大传输单元概览。
API
更改现有 VPC 网络的 MTU。
PATCH https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK { "mtu": MTU }
请将占位符替换为有效值:
- PROJECT_ID 是包含所要修改 VPC 网络的项目的 ID。
- NETWORK 是要修改的 VPC 网络的名称。
MTU
是该网络的最大传输单元。 MTU 可以设置为1300
到8896
之间的任何值(默认值:1460
)。在将 MTU 设置为高于1460
的值之前,请先查看最大传输单元概览。
如需了解详情,请参阅 subnetworks.patch
方法。
更改 Windows 虚拟机的 MTU 设置
系统会为基于公共操作系统映像的 Windows 虚拟机配置固定的 MTU 1460
。自定义 Windows 虚拟机可能具有不同的 MTU 设置。
如需将 Windows 虚拟机设置为使用不同的 MTU,请在每个虚拟机上执行以下操作:
命令提示符
- 以管理员身份打开命令提示符 (cmd.exe)。
运行以下命令来确定要更新的接口的索引:
netsh interface ipv4 show interface
更新接口:
netsh interface ipv4 set interface INTERFACE_INDEX mtu=MTU store=persistent
更新设备驱动程序配置:
- 使用以下命令打开设备管理器:
devmgmt.msc
- 展开网络适配器类别。
- 右键点击 Google VirtIO 以太网适配器/Google 以太网适配器设备。
- 选择属性。
- 点击 Advanced(高级)标签页。
- 在 Init.MTUSize 字段中,输入 MTU 设置。
- 点击确定。
实例会暂时失去连接,因为在注册表条目更改时,驱动程序会自动重启。
- 使用以下命令打开设备管理器:
PowerShell
- 以管理员身份打开 PowerShell。
运行以下命令:
Set-NetIPInterface -InterfaceAlias INTERFACE_NAME -AddressFamily IPv4 -NlMtu MTU
运行以下命令以更新设备驱动程序设置:
Set-NetAdapterAdvancedProperty -Name "Ethernet" -RegistryKeyword MTU -RegistryValue MTU
您将暂时失去与虚拟机的连接,因为在注册表条目更改时,驱动程序会自动重启。
将虚拟机迁移到其他 MTU 网络
您可能会决定将服务迁移到新网络中的新虚拟机,而不是更改现有网络的 MTU。在这种情况下,您可能有一个服务器(例如数据库服务器),该服务器需要在迁移过程中供所有虚拟机访问。如果是这样,您可以通过以下常规方法进行完全迁移:
- 创建使用新 MTU 的新网络。
- 在新网络中创建所有必要的防火墙规则和路由。
- 在旧网络中创建具有多个网络接口的虚拟机。一个接口连接到使用新 MTU 的新网络,另一个接口连接到使用旧 MTU 的旧网络。
- 将这个新虚拟机配置为现有虚拟机的辅助服务器。
- 将主服务器故障切换到该辅助服务器。
- 将虚拟机迁移到新网络或者在新网络中创建新虚拟机。如果您创建新虚拟机,则可以从头开始创建,通过现有映像创建,也可以通过为现有虚拟机创建快照并使用这些快照来填充新的永久性磁盘进行创建。
- 配置这些虚拟机以使用该网络中的操作服务器。
- 将流量迁移到新虚拟机。
- 如果您想要删除旧网络,请在新网络中创建新服务器,使该服务器与现有服务器同步,并故障切换到新服务器。
- 删除旧服务器和旧网络。