如何通过执行RDP手动更改云上的工作者角色文件?

时间:2013-08-26 14:45:32

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

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

任何简单的方法来更新云上的辅助角色而不是全力推动?

2 个答案:

答案 0 :(得分:12)

布伦特是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。
  4. *如果您需要更长的时间进行更改,那么您可以将一个调试器(如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提供了更详细的说明。

答案 1 :(得分:6)

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

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

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