簡體   English   中英

Python Azure SDK:在同一個雲服務中創建多個VM

[英]Python Azure SDK: create multiple VMs in the same cloud service

我正在嘗試在同一雲服務中創建多個VM(但在雲服務中的唯一部署中)。 下面僅產生一台名稱為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都集成在一個雲服務中,可以使它們在內部相互通信,而不會暴露給我其他雲服務中的計算機。 但是很顯然,雲服務向其中的VM提供了單個公共IP。 也許這就是為什么僅創建一個VM的原因,盡管從概念上講,我認為單個雲服務可以具有多個VM實例。 這使我感到困惑。 因此,現在我想為集群中的每個VM實例都需要一個雲服務。 這樣,所有機器都將具有公共IP,並且可以通過Internet訪問。 我還需要將所有雲服務放在虛擬網絡中。 這樣,它們之間的流量將不會通過Internet路由。 我的假設正確嗎? 是否有更好/其他的方式來實現我想要的功能(一簇機器彼此安全,快速地進行通信,但可以通過Internet進行SSH連接)。

首先-如果要創建集群,請不要將VM放在單獨的Cloud Services中。 請仔細閱讀以下文章: 管理虛擬機的可用性

然后是主要主題:當多個VM出於共同目的(構建集群)時, 可以並且應該將多個VM部署到同一個Cloud Service中。

同一Cloud服務中的VM 可以相互通信,而無需訪問Internet,也不需要您做一些特殊的事情,除了自己在VM上打開FireWalls。

有關名稱解析在整個Azure中的工作方式,您可以閱讀以下文章: VM和角色實例的名稱解析

每個雲服務一個VIP-就是這樣。 但是,為什么這是一個問題? 請詳細說明您為單個Cloud Service(您的集群)要求多個VIP(公共IP地址)的原因。 以下文章將為您提供有關群集虛擬機負載平衡的不同選項的想法: 虛擬機的負載平衡

關於如何為每個VM訪問配置SSH,您可以為具有不同Public Port的 VM 創建端點

最后但並非最不重要的一點是,您最終只能創建一個VM的原因。 您一次只能在Cloud Service 創建一個VM。 您仍無法在第一個虛擬機中創建第二個虛擬機。 因此,VM1的創建應100%完成,然后您可以在同一Cloud Service中創建第二個VM。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM