【问题标题】:Running Script on Azure Web Role Instances在 Azure Web 角色实例上运行脚本
【发布时间】:2015-01-12 22:28:54
【问题描述】:

有没有办法在 Azure Web 角色实例上执行一些脚本?我对 Azure 和 Azure 管理 API 有点陌生。

基本上我想要实现的是,根据环境类型,我想在所有 Azure Web 角色实例中打开/关闭几个服务。所以例如如果我有一个包含 5 个实例的 Web 角色,那么脚本应该在所有 5 个实例中执行。

  1. 确定登台/生产环境
  2. 获取登台和生产环境的所有 Web 角色
  3. 为每个角色获取所有实例
  4. 在所有实例中运行脚本(远程)

我们将不胜感激。

编辑:我还可以获取每个环境的暂存/生产环境详细信息和 Web 角色详细信息。我正在使用 Service Management Rest API 和 Get Cloud Service Properties 方法:

https://management.core.windows.net//services/hostedservices/?embed-detail=true

上面的 URL 返回一个角色实例及其 IP 地址的列表。

但是当我尝试访问云服务 (Web API) 时,它会出现 404 错误。不确定我们是否可以使用 IP 访问托管在 IIS 上的 Web api 项目。

提前致谢, 贾什

【问题讨论】:

  • 使用 PowerShell,我相信您需要的命令是 Get-Deployment,它将为您的实例返回输入端点列表。 msdn.microsoft.com/en-us/library/azure/ee460804.aspx
  • @l19:GetDeployment 提供每个实例的实例端点详细信息。输入端点详细信息与 VIP 相关联,例如3389tcp 当我尝试在 URL 中使用实例端点时(ASP.NET WEB API) ,它给出了 504 错误。
  • 你想执行什么样的脚本?您可以通过 tcp 端点连接到它们中的每一个,但是您必须编写代码来处理那里的连接...

标签: azure azure-web-roles azure-management-api


【解决方案1】:

不完全确定您要达到的目标。但是,如果您有一个具有 Web/Worker 角色的云服务,则您无法直接从 Internet 访问每个单独的实例。部署前面有一个 Azure 负载均衡器,可将 Internet 请求路由到实例。 This would be useful for you to read.

但是,您可以做的是实现 RoleEntryPoint 类,就像您为 Worker 角色所做的那样。然后您可以定期检查触发器 - 例如容器中的 Blob、表存储中的记录等。发生这种情况时 - 决定做什么:从 Localhost 获取特殊 URL,直接使用 Process.Start() 执行脚本.您的选择,您拥有完全的控制权。您所要做的就是在您的 Web 项目中添加一个继承自 RoleEntryPoint 的新类。

有关在 WebRole 项目中使用 RoleEntryPoint 的更多信息,您可以参考此资源:

【讨论】:

  • 感谢您的回复。您是否有任何有关为 Web 角色实例创建输入端点的文档。另外,如果我们是一个 Web 应用程序,那么我们可以使用输入端点访问 Web 应用程序吗?
  • 好的,我可以看到我们的 csdef 文件中已经声明了 2 个输入端点。端点的名称分别是端口 80 和 443 上的 HTTP 和 HTTPs。现在在 GetDeployment() 的帮助下,我能够获取每个实例的 DIP (IP)。我现在应该如何构造 URL 来访问实例?
  • 例如IP/xyz.... 其中 IP - 实例的 IP 地址。现在这对我不起作用,所有请求都给出 504 http 错误
  • 如我的回答中所述 - 您无法从 Internet 访问单个角色实例。再次阅读我的回答,了解如何实现您的目标!
  • 可能我第一次读错了。道歉。使用 RoleEntryPoint 类的问题是,我们不确定何时需要运行脚本。在部署期间,我们希望在生产和暂存盒上运行此脚本。
猜你喜欢
  • 2016-09-30
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-03
  • 1970-01-01
相关资源
最近更新 更多