在Azure虚拟机规模集中发现对等实例

时间:2017-06-29 11:44:37

标签: python azure azure-vm-scale-set

问题:假设N个实例是作为VMSS的一部分启动的,我希望每个azure实例上的应用程序代码都能发现其他对等实例的IP地址。我该怎么做?

总体意图是集群实例,以便提供主动被动HA或保持配置同步。

似乎对基于REST API的查询有一些支持:https://docs.microsoft.com/en-us/rest/api/virtualmachinescalesets/

想知道其他任何方法,即python SDK或实例元数据URL等。

2 个答案:

答案 0 :(得分:1)

你提到的RestAPI有一个Python SDK," azure-mgmt-compute"客户 https://docs.microsoft.com/python/api/azure.mgmt.compute.compute.computemanagementclient

答案 1 :(得分:1)

执行此操作的一种方法是使用实​​例元数据。现在,实例元数据仅显示有关其运行的VM的信息,例如,

curl -H Metadata:true "http://169.254.169.254/metadata/instance/compute?api-version=2017-03-01"
{"compute":
{"location":"westcentralus","name":"imdsvmss_0","offer":"UbuntuServer","osType":"Linux","platformFaultDomain":"0","platformUpdateDomain":"0",
"publisher":"Canonical","sku":"16.04-LTS","version":"16.04.201703300","vmId":"e850e4fa-0fcf-423b-9aed-6095228c0bfc","vmSize":"Standard_D1_V2"},
"network":{"interface":[{"ipv4":{"ipaddress":[{"ipaddress":"10.0.0.4","publicip":"52.161.25.104"}],"subnet":[{"address":"10.0.0.0","dnsservers":[],"prefix":"24"}]},
"ipv6":{"ipaddress":[]},"mac":"000D3AF8BECE"}]}}

您可以执行类似操作,让每个VM将信息发送到VM#0上的侦听器或外部服务,或者您可以将其与Azure文件组合,并将每个VM输出到公共共享。这里有一个Azure模板概念验证,它将每个VM的信息输出到Azure文件共享。https://github.com/Azure/azure-quickstart-templates/tree/master/201-vmss-azure-files-linux - 每个VM都有一个挂载点,其中包含每个VM写入的信息。