Azure-创建具有静态地址的多个虚拟机-冲突

Azure-创建具有静态地址的多个虚拟机-冲突,azure,azure-virtual-machine,azure-devtest-labs,Azure,Azure Virtual Machine,Azure Devtest Labs,我正在做一个项目,在这个项目中,我们为学生创建实验室,用户可以在其中创建虚拟机,并指定它们应该具有静态ip地址。问题是,当在Azure上创建虚拟机时,它总是有一个动态ip地址,只有这样才能分配一个静态ip地址 是否有一种方法可以使用用户选择的静态IP分配多个同时创建的虚拟机?我们将这些ip地址存储在数据库中,因此在Azure中发生冲突之前,我们可以在数据库级别检测到它,但这还不够 为什么?? 因为如果我们同时创建10个虚拟机,所有虚拟机都具有特定的静态IP,则可能会创建一些具有冲突动态地址的虚拟

我正在做一个项目,在这个项目中,我们为学生创建实验室,用户可以在其中创建虚拟机,并指定它们应该具有静态ip地址。问题是,当在Azure上创建虚拟机时,它总是有一个动态ip地址,只有这样才能分配一个静态ip地址

是否有一种方法可以使用用户选择的静态IP分配多个同时创建的虚拟机?我们将这些ip地址存储在数据库中,因此在Azure中发生冲突之前,我们可以在数据库级别检测到它,但这还不够

为什么?? 因为如果我们同时创建10个虚拟机,所有虚拟机都具有特定的静态IP,则可能会创建一些具有冲突动态地址的虚拟机:

  • vm1:动态ip-10.0.0.2,请求的静态ip 10.0.0.9
  • vm2:动态ip-10.0.0.3,请求的静态ip 10.0.0.15
  • vm3:动态ip-10.0.0.4,请求静态ip 10.0.0.16
  • vm4:动态ip-10.0.0.5,请求的静态ip 10.0.0.17
  • vm5:动态ip-10.0.0.6,请求的静态ip---------
  • vm6:动态ip-10.0.0.7,请求静态ip 10.0.0.19
  • vm7:动态ip-10.0.0.8,请求静态ip 10.0.0.20
  • vm8:动态ip-10.0.0.9,请求的静态ip为10.0.0.21
  • vm9:动态ip-10.0.0.10,请求的静态ip 10.0.0.8
  • vm10:动态ip-10.0.0.11,请求的静态ip 10.0.0.6
创建这些虚拟机后,当尝试将10.0.0.9分配给vm1时,会出现错误,因为vm8具有此ip地址(尽管它也不想要它,但它希望将其更改为10.0.0.8,这也是一个错误)

我想一个集中的创建点是完美的,但除非Azure上有类似的东西,否则我认为这在我们这边是不可能做到的


有什么想法吗?

在Azure门户中,如果您使用UI直接创建虚拟机,Azure将在后端执行许多步骤,因此您无法控制创建。我建议您可以使用or和脚本来实现它。您可以选择上述三种方法之一。然后,您可以使用
Static
allocate方法创建NIC。

Azure模板看起来很有趣,但我不会遇到地址冲突吗?据我所知,模板在后台使用Azure REST API,因此基本上它们以编程方式完成我们的工作。即使同时创建了20个虚拟机,并且所有虚拟机都被分配了不同的ip地址(由用户手动),我希望我们仍然会有ip冲突,因为Azure启动虚拟机时使用的是动态地址,从尽可能低的地址开始。如果手动为其中一个VM分配了其中一个地址,则无论如何都会发生冲突。我遗漏了什么吗?@Aranha首先,当你指的是静态IP地址时,这意味着你需要计算IP地址并手动避免冲突。这是创造者的职责,而不是模板。您设置了静态IP地址,这意味着您确定没有冲突。这是正确的,但如果我将IP地址设置为动态分配给另一个VM的地址(因为另一个VM的模板尚未完全执行,因为它只是一系列API调用),则会发生冲突。我是在这里还是我没有正确地理解一些事情?@Aranha这很容易解决。您可以创建一个只支持您的虚拟机的新VNet。正如我所说,你需要自己平衡IP,这也意味着你需要考虑正在使用的IP。