我正在研究工作者角色故障转移解决方案,我需要能够通过关闭或重新启动实例以及创建新实例来测试和调试故障转移机制。
如何在本地 Azure 模拟器上重新启动或关闭特定实例?我正在使用 1.7 SDK
谢谢,
我正在研究工作者角色故障转移解决方案,我需要能够通过关闭或重新启动实例以及创建新实例来测试和调试故障转移机制。
如何在本地 Azure 模拟器上重新启动或关闭特定实例?我正在使用 1.7 SDK
谢谢,
我不得不在这里不同意大卫的回答。您可以执行一些操作来关闭实例或创建新实例。
当您在模拟器中运行应用程序时,它会为每个实例启动 1 个 Web 角色 (WaIISHost.exe) / Worker Role (WaWorkerHost.exe) 进程:
当您杀死其中一个进程时,就好像您杀死了一个实例。切换回模拟器后,您会看到您杀死的特定实例的图标颜色发生了变化,并且日志将显示该实例的状态为未知/已销毁:
附加调试器后,您会看到这种情况发生并且实例永远不会重新启动,从而允许您测试突然丢失一个或多个实例的场景。如果未附加调试器,这一切都会发生得非常快,并且实例将立即重新启动(在 Visual Studio 中,您可以选择不调试就启动)。
使用csrun.exe(通常位于C:\Program Files\Microsoft SDKs\Windows Azure\Emulator中),您可以更新模拟器中服务的配置,包括实例数。假设我想在我目前拥有的 4 个实例中添加 6 个实例。
我打开位于 Azure 项目的 Debug 文件夹中的ServiceConfiguration.cscfg文件 (..\Some\Path\MultipleInstancesDemo\MultipleInstancesDemo\bin\Debug),并将实例数更改为 10:
<ServiceConfiguration serviceName="MultipleInstancesDemo" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*" schemaVersion="2012-05.1.7">
<Role name="MyWebRole">
<Instances count="10" />
<ConfigurationSettings>
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" />
</ConfigurationSettings>
</Role>
</ServiceConfiguration>
然后可以通过向 csrun.exe 提供部署 ID 和配置文件的路径来将其推送到模拟器。您将在模拟器中找到部署 ID。在上一个屏幕截图中,您将看到deployment17(20),这意味着部署 ID 是20。这就是调用 csrun.exe 的方式: csrun /update:20;"..\Some\Path\MultipleInstancesDemo\MultipleInstancesDemo\bin\Debug\ServiceConfiguration.cscfg"
几秒钟后,您将在模拟器中看到新实例:
注意!:这里似乎仅在您启动项目而不进行调试时才有效。
您无法关闭特定实例;您只能缩减正在运行的实例的总数。
如果要重启正在运行的实例,可以调用:
RoleEnvironment.RequestRecycle();