我正在尝试在同一个云服务中创建多个虚拟机(但在云服务中的独特部署中)。下面只生成一台名为mycluster-master-3的机器(给定self.numMasters == 3)。换句话说,实际上只创建了最后一台机器,并且可以在Azure管理门户中看到。请注意,使用self.numMasters == 3:
执行此代码时没有错误for node in range(self.numMasters):
logger.info('Deploying virtual machine "%s"...' % (self.clusterName + '-master-' + str(node + 1)))
logger.info('Creating linuxConfig...')
linuxConfig = azure.servicemanagement.LinuxConfigurationSet(
host_name=self.clusterName + '-master-' + str(node + 1),
user_name='auser',
user_password='Auser123!',
disable_ssh_password_authentication=True
)
# Destination storage account container/blob where the VM disk
# will be created
media_link = 'https://xxxxxxx.blob.core.windows.net/xxxxxx/%s.vhd' % (self.clusterName + '-master-' + str(node + 1))
os_hd = azure.servicemanagement.OSVirtualHardDisk(image_name, media_link)
logger.info('Creating virtual machine deployment...')
self.sms.create_virtual_machine_deployment(
service_name=serviceName,
deployment_name=self.clusterName + '-master-' + str(node + 1),
label=self.clusterName + '-master-' + str(node + 1),
role_name=self.clusterName + '-master-' + str(node + 1),
system_config=linuxConfig,
os_virtual_hard_disk=os_hd,
role_size=self.instanceType,
deployment_slot='production'
)
我认为在一个云服务中拥有所有虚拟机将允许他们在内部相互通信,而不会暴露给我的其他云服务中的计算机。但显然,云服务为其中的VM提供单个公共IP。也许这就是为什么只创建一个虚拟机的原因,但从概念上讲,我认为单个云服务可以有多个虚拟机实例。这让我感到困惑。 所以现在我想我需要为我的集群中的每个VM实例提供一个云服务。这样,所有机器都将具有公共IP,并且可以通过互联网访问。我还需要将所有云服务放在虚拟网络中。这样,它们之间的流量就不会通过互联网传输。我的假设是否正确?是否有更好的/其他方式来实现我想要的东西(一组机器安全快速地相互通信,但通过互联网可以通过SSH实现。)
答案 0 :(得分:1)
首先 - 如果您要创建群集,请执行不将VM放入单独的云服务中。请仔细阅读这篇文章:Manage the availbility of Virtual Mchines。
然后转到主题:多个虚拟机可以和应在服务于共同目的(构建群集)时部署到同一个Cloud Service中。
同一个云服务中的虚拟机可以相互通信而无需上网,除了在虚拟机上自己打开防火墙外,无需你做一些特别的事情。
有关名称解析在Azure中的工作方式,您可以阅读以下文章:Name resolution for VM and role instances。
每个云服务一个VIP - 就是这样。但为什么这应该是一个问题呢?请详细说明您为单个Cloud Service(您的群集)要求多个VIP(公共IP地址)的原因。以下文章将为您提供有关负载均衡群集VM的不同选项的信息:Load Balancing for Virtual Machines。
关于如何为每个虚拟机访问配置SSH,您可以create Endpoints用于不同公共端口的虚拟机。
最后,但并非最不重要的是,您最终只创建了一个VM的原因。您只能在Cloud Service 中一次创建一个VM 。在第一个VM仍在创建时,您无法在同一个云服务中创建第二个VM。因此,VM1的创建应该100%完成,然后您可以在同一个Cloud Service中创建第二个VM。