【问题标题】:How to manually change the worker role files on cloud by doing RDP?如何通过 RDP 手动更改云上的工作者角色文件?
【发布时间】:2013-08-26 14:45:31
【问题描述】:

将完整的云服务项目推送到云上非常耗时,因此,如果它有一些小的更改并且我希望它们立即反映,那么我将 RDP 转换为 Web 角色并进行这些更改并重新启动 IIS。也可以为工人角色做这样的事情吗?我可以 RDP 并替换 dll 文件,但我不知道如何重新启动辅助角色,因为它不在 IIS 上运行。我不确定工人角色的作用是什么?我知道这不是一个好的做法,但由于我仍处于开发阶段,这将极大地加快我的测试过程。

有什么简单的方法可以在云端更新工作者角色而不是完全推送?

【问题讨论】:

    标签: c# iis azure azure-web-roles azure-worker-roles


    【解决方案1】:

    布伦特是 100% 正确的,我赞成他的回答。您应该注意不要通过 RDP 对生产服务进行任何更改。话虽如此,您确实提到这只是为了在您的开发阶段进行测试,并且能够更新单个 DLL 文件并进行测试而无需重新部署整个云服务有很多价值。在 Azure VM 上进行故障排除时,我总是这样做。

    检查http://blogs.msdn.com/b/kwill/archive/2011/05/05/windows-azure-role-architecture.aspx 以了解 VM 上进程的体系结构。特别要注意的是,WaHostBootstrapper 是工作角色和 Web 角色的父进程。要在 Web 或辅助角色中替换 DLL,最好的方法是:

    1. 终止 WaHostBootstrapper。您可以通过任务管理器执行此操作。
    2. 替换 DLL。请注意,执行此操作时需要快速,因为 Azure 会在您终止 WaHostBootstrapper* 后不久自动重新启动所有内容。
    3. 等待 WaHostBootstrapper 自动重启,然后会自动重启 WaWorkerHost/WaIISHost。

    *如果您需要更长的时间来进行更改,那么您可以将 WinDBG 等调试器附加到 WindowsAzureGuestAgent 并将其留在进程中。这将阻止 Azure 自动重新启动主机引导程序进程。进行更改后,您可以分离调试器并让 WindowsAzureGuestAgent 继续运行。请注意,如果您让 WindowsAzureGuestAgent 处于停止状态超过 10 分钟,则主机代理将检测到 VM 无响应并重新启动 VM。

    *编辑:http://blogs.msdn.com/b/kwill/archive/2013/09/05/how-to-modify-a-running-azure-service.aspx 提供了更详细的说明。

    【讨论】:

    • 非常感谢,这正是我想要的!但我无法在任务管理器进程中找到 WaHostBootstrapper。但是有一个 WindowsAzureGuestAgent 进程,它会启动辅助角色吗?
    • 如果您看到 WindowsAzureGuestAgent,但没有看到 WaHostBootstrapper,那么您的角色很可能正在回收。查看blogs.msdn.com/b/kwill/archive/2013/08/20/… 的故障排除工作流程。
    • 如果您需要停止它超过几秒钟,请停止 WindowsAzureGuestAgentService,然后终止 WaHostBootstrapper 任务。然后你有 10 分钟的时间来重启虚拟机。
    【解决方案2】:

    简单地说,你不知道。这样做与 Windows Azure PaaS 云服务的“无状态”性质直接冲突。如果需要移动角色的实例,它将始终恢复到其最初部署的状态,从而使您所做的任何更改无效。并且角色实例可能随时移动。因此,任何尝试 RDP 并进行更改都会给您带来巨大的痛苦。

    如果您确实需要这种类型的动态部署,您可以创建一个启动脚本,该脚本从外部存储(例如 Windows Azure Blob 存储)中提取内容文件,并在启动之前将它们拉入角色实例。

    worker 本身只是一个长时间运行的控制台程序,其初始进程由来宾 VM 中的 Windows Azure 代理进程调用角色实例的“OnStart”方法启动。

    【讨论】:

    • 补充一点,Brent 所说的无国籍状态也适用于 Web 角色。您为更新 Web 角色所做的工作可能适用于您的开发或测试,但您不应该为生产系统这样做。这些更改不会在角色更新、操作系统补丁等中得到维护。布伦特指出的一切。
    • 感谢您的提醒,但我不会在生产服务器上进行任何此类更改。由于仍处于开发阶段,重新部署所有内容只是为了看到一些小的变化是相当痛苦的,因此正在寻找一些解决方法。我希望 Kwill 的回答能解决问题。
    • 这里有没有本地模拟器无法满足的需求?
    猜你喜欢
    • 1970-01-01
    • 2013-12-14
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多