我想把我的静态公网IP改成动态公网IP,以降低成本。因此,我删除了静态IP,并创建了一个新的动态分配IP。到目前一切尚好。现在的问题是,当我尝试将公共IP分配给我的虚拟机时,我收到以下错误
Failed to save IP address changes for network interface 'deployment1477'. Error: Compute resource deployment1 has a zone constraint 1 but the PublicIPAddress deployment_ip used by the compute resource via NetworkInterface or LoadBalancer has a different zone constraint Regional.
我发现我的VM有一个可用区约束。它不是区域,而是可用区,它被设置为1。我找不到一种简单的方法来改变这个设置。因此,到目前为止,我无法将动态公共IP地址分配给我的虚拟机。
以下是我所说的可用区约束的屏幕截图,可以在您的虚拟机的概述(主页)页面中找到:
发布于 2021-06-05 16:42:19
为什么会发生这种情况?
在最基本的情况下,您需要了解区域服务和区域冗余服务之间的区别。Azure基础公网IP是regional service
。这意味着,如果您创建了一个IP地址,它可以从特定区域内的任何数据中心获取。
标准SKU公网IP是一种区域冗余服务,即该服务仅存在于指定区域中,相互复制,以确保您的服务在某个区域不可用时仍可用。
This链接解释了术语和公共IP SKU规范。摘录如下:
基础服务单元:如果您在支持可用区的地域创建公网IP地址,则可用区设置默认为无。基础公网IP不支持可用区。标准SKU:标准SKU公网IP可以关联到虚拟机,也可以关联到负载均衡前端。如果您在支持可用区的地域创建公网IP地址,则可用区设置默认为Zone-redundant。
所以在这里,您的虚拟机属于可用区,但基础IP地址不属于特定区域,而是属于地域。
这就是错误显示为:...Compute resource deployment1 has a zone constraint 1...
和the PublicIPAddress deployment_ip...has a different zone constraint Regional.
的原因
This Azure文档提供了公共IP地址的所有限制。
你有什么选择?
场景1
您需要通过公网IP访问虚拟机(或虚拟机上的应用程序)。
选项1-(如果无法删除虚拟机)
使用具有基本SKU IP的Basic Load Balancer将流量路由到VM,但也提供Source NAT for outbound connection。Azure基本负载均衡器是免费的。标准负载均衡器需要额外配置SNAT设置。
Backend Pool Configuration
,而是使用虚拟机的专用IP address.3389
或端口80
).Backend Pool Configuration3389
)上路由流量,以便虚拟机通过运行状况检查并将流量发送到后端。选项2-(如果可以重建虚拟机)
OS disk
(以及Data disks
,如果适用)与VM分离。Basic SKU
公用IP地址和Dynamic Allocation
模式删除不会放入可用区的新VM。创建VM后,转到D38选项卡并转到D39,同时从原始VM指定操作系统磁盘。H240G241
选项2的另一种选择(适当但更复杂)是拍摄OS磁盘的快照,当您使用快照时,使用Create disk
,然后使用disk - Create VM
,并解析所有VM参数。
场景2
虚拟机只需要出站互联网访问,您不需要远程进入或通过其公网IP访问应用程序。
你可以去掉公有IP地址。默认情况下,Azure中的所有虚拟机都具有internet访问权限。在上面找不到微软文档,但找到了here's someone else mentioning it。
在使用某些Azure产品时,您经常会遇到许多复杂/令人沮丧的场景。它总是在不断发展,因此您应该始终查看当前的限制,以查看设置是否适合您的场景。有一些简单的问题在5年前就已经提出,但仍然没有解决。
https://stackoverflow.com/questions/67847697
复制相似问题