0

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

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

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

想知道任何其他方式来做到这一点,即 python SDK 或实例元数据 URL 等。

4

2 回答 2

1

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

于 2017-06-29T15:43:56.080 回答
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 写入的信息。

于 2017-06-29T23:24:47.030 回答