【问题标题】:Python Azure SDK: create multiple VMs in the same cloud servicePython Azure SDK:在同一个云服务中创建多个 VM
【发布时间】:2015-07-02 04:50:59
【问题描述】:

我正在尝试在同一个云服务中创建多个虚拟机(但在云服务中的独特部署中)。下面只生成一台名为 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'
            )

我认为将我的所有虚拟机都放在一个云服务中可以让它们在内部相互通信,而不会暴露在我的其他云服务中的机器上。但显然,云服务为其中的虚拟机提供了一个公共 IP。也许这就是为什么只创建一个虚拟机的原因,尽管从概念上讲,我认为一个云服务可以有多个虚拟机实例。这让我很困惑。 所以现在我想我需要为集群中的每个 VM 实例提供一个云服务。这样,所有机器都将拥有一个公共 IP,并且可以通过 Internet 访问。我还需要将所有云服务放在一个虚拟网络中。这样,它们之间的流量将不会通过互联网路由。我的假设正确吗?有没有更好/其他方式来完成我想要的(一组机器安全快速地相互通信,但可以通过互联网进行 SSH。)

【问题讨论】:

    标签: python azure


    【解决方案1】:

    首先 - 如果您要创建集群,请不要将虚拟机放在单独的云服务中。请仔细阅读这篇文章:Manage the availbility of Virtual Mchines

    然后进入主题:多个虚拟机可以并且应该部署到同一个云服务中,当它们用于共同目的(构建集群)时。

    同一云服务中的虚拟机可以相互交谈,而无需访问互联网,也无需您做一些特别的事情,除了在虚拟机本身上打开防火墙。

    有关名称解析在整个 Azure 中的工作原理,您可以阅读以下文章:Name resolution for VM and role instances

    每个云服务一个 VIP - 就是这样。但为什么这应该是一个问题?请详细说明您为单个云服务(您的集群)需要多个 VIP(公共 IP 地址)的原因。以下文章将让您了解集群虚拟机负载平衡的不同选项:Load Balancing for Virtual Machines

    关于如何为每个虚拟机访问配置 SSH,您可以create Endpoints 为您的虚拟机使用不同的公共端口

    最后但同样重要的是,您最终只创建了一个虚拟机的原因。您一次只能在云服务中创建一个虚拟机。当仍在创建第一个虚拟机时,您无法在同一云服务中创建第二个虚拟机。因此,VM1 的创建应该是 100% 完成,然后您可以在同一个云服务中创建第二个 VM。

    【讨论】:

    • 很好的解释。这应该足够我开始了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    • 2016-02-21
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多