我将其作为“探索”问题发布,并计划扩大讨论,以防出现一些兴趣。其背后的原因是,根据我的经验,azure-ml
(及相关)上的 SO 社区仍在发展中,没有太多反馈 - 但我很乐意帮助它变得更强大。
我的情况如下:我在 Azure ML 中进行了一项实验,该实验在 R
模块内完成所有工作。我将其发布为 Web 服务,并将“最大并发调用” slider 设置为 10 - 我相信这可以保证我的 Web 服务最多有 10 个实例随时启动并运行,以服务请求(请纠正我)如果我错了)。
现在,我尝试通过向我的 Web 服务发起 10 个并行调用来进行一些性能测试,但得到了意外的结果...
我正在尝试运行负载测试并记录每个测试实际到达的位置(哪个实例)。我的想法是了解负载均衡器在一定的最大并发调用数 = X 的情况下如何将这些调用实际分发到实例。我通过从内部触发对“bot.whatismyipaddress.com”的调用来实现此目的R
脚本。这是代码的重要片段:
library(rjson)
machine.ip <- readLines("http://bot.whatismyipaddress.com/", warn=F)
result$MachineIP <- machine.ip
此外,我还使用 Web 服务 RRS 帮助页面中的示例 R
代码对我的 Web 服务发起最多 70 个(连续)调用。此示例代码将一些信息返回到控制台:我的 Web 服务的结果以及有关调用所经过的主机名的一些信息。这是一个示例:
* Hostname was NOT found in DNS cache
* Trying 40.114.242.9...
* Connected to europewest.services.azureml.net (40.114.242.9) port 443 (#0)
我面临的困难是我无法唯一标识我的网络服务的不同实例。从调用输出到控制台的信息(第二个片段)通常显示的 IP 地址与内部 R 代码日志 (result$MachineIP
) 中的 IP 地址不同。 .
有人可以指出我做错了什么,以及我如何唯一地识别正在服务调用的不同实例?任何帮助将非常感激。谢谢!
附注我试过this同样,但是从 R 脚本内部调用第一个 Apporach 时它不起作用,并且我正在使用第二个 Apporach 的修改版本(建议的那个 Apporach 不起作用)。 Here也是我的questions在 Azure 论坛上,以防有人感兴趣。
如果有人可以帮助我或向我指出一些信息来源,我将非常感激!
最佳答案
感谢 Azure ML 论坛上的一些人解决了这个问题,因此 我将为所有登陆此处寻找答案的人发布答案...
简短的回答是否定的,这是不可能的。更详细的版本是:
“在 R 脚本中,您无法识别内部 AzureML IP 地址或唯一的 Web 服务实例。当您从 R 脚本向外部 URL 发出外部网络调用时,该 URL 会将 AzureML 公共(public)虚拟 IP 之一视为源 IP。这些是负载均衡器的 IP,而不是物理运行 Web 服务的计算机的 IP。AzureML 在后端动态分配 R 引擎的实例、处理故障,并使用多个节点来运行 Web 服务,以实现高速运行。可用性。给定 Web 服务的确切布局无法通过编程方式发现。”
这也是link到原来的讨论。
关于r - 唯一标识 VM 实例(Azure ML - Web 服务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34335483/