我正在开发一个辅助角色故障转移解决方案,我需要能够通过关闭或重新启动实例以及创建新实例来测试和调试故障转移机制。
如何在本地Azure模拟器上重新启动或关闭特定实例?我正在使用1.7 SDK
谢谢,
答案 0 :(得分:9)
我不得不在这里不同意大卫的回答。您可以执行一些操作来关闭实例或创建新实例。
在模拟器中运行应用程序时,每个实例启动1个Web角色(WaIISHost.exe)/辅助角色(WaWorkerHost.exe)进程:
当你杀死其中一个进程时,就好像你杀了一个实例一样。切换回模拟器后,您将看到您杀死的特定实例的图标改变了颜色,日志将显示实例的状态为Unknown / Destroyed:
当连接调试器时,您会看到这种情况发生,实例将永远不会重新启动,允许您测试突然松开一个或多个实例的情况。如果没有连接调试器,这一切都会很快发生,实例将立即重启(在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 \ SeviceConfiguration.cscfg”
几秒钟后,您将在模拟器中看到新实例:
注意!:此处似乎只有在没有调试的情况下启动项目时才会有效。
答案 1 :(得分:0)
您无法关闭特定实例;您只能缩减正在运行的实例总数。
如果要重新启动正在运行的实例,可以调用:
RoleEnvironment.RequestRecycle();