Azure计算仿真器:是否有可能控制单个实例的IP?(Azure Compute Emulator:

2019-06-27 01:46发布

与2012年6月Azure的SDK时,Visual Studio 2010和IIS快递的工作,我已经在127.255.0.2上运行的Web应用程序。 我使用ACS进行身份验证,并且我的应用程序被配置为在此IP依赖方。 我添加了一个新的工作角色,我的解决方案,并由于某种原因,这已经把我的web应用程序的IP回127.255.0.3。 这是第三次改变了解决方案的其他地方已经改变了这个IP,而我开始有点厌倦了添加新的依赖方设置并重新运行STS向导。

有没有控制任何正式的方式,也仿效角色绑定到哪个IP? 如果没有,则是启动的顺序/结合相同的项目,在角色文件夹的顺序,如果是的话会打电话给我的网站像土豚作用,确保它总是先绑定?

Answer 1:

你为什么要改变IP地址? 这是仅在内部使用,以避免IP /端口冲突。 您的所有角色都只能通过127.0.0.1:[port访问],这是你应该为你的依赖方应用程序的基址使用的地址。 该127.255.0.XX地址是活的计算仿真的仿真负载平衡器后面的内部地址。

还有就是要控制实例的用于计算仿真实例/角色IP地址没有正式的,也没有非正式的方式。 另外,即使有办法做到这一点,我不会建议使用它!

你总是可以得到正确的IP地址和任何端点的港口通过您的云服务配置RoleEnvironment.CurrentRoleInstance.InstanceEndpoints财产。

阅读关于IP地址和端口分配在这里 。

UPDATE

虽然您的应用程序绑定到127.255.0.XX(仿真直接IP地址,又名DIP)在IIS Express中,向您的应用程序的实际调用应通过127.0.0.1:81(仿真虚拟IP地址,又名VIP)(去哪里只有端口更改)。 这是在Visual Studio中启动您的应用默认加载页面。 开发面料(又名计算仿真)已经仿真负载平衡器,它侦听127.0.0.1:81(模拟VIP)和重定向traffinc到合适的情况下,这是跨越127.255.0.XX(仿真DIP)传播。 这就是为什么你总是使用127.0.0.1与计算仿真工作,并配置ACS依赖方时,时。 你还有什么做的是错的,而不是代表Azure的环境。

你可以通过阅读这个和那个博客条目了解reminology和网络withing的Windows Azure。



Answer 2:

我不知道如果我的经验严丝合缝descripted情况,但我认为它可以,至少,是一个鼓舞。

在我的解决方案我有四个不同的云计算服务,每一个有一个Web角色,每一个必须正确认识的其他服务工程的URL。 当在生产中我知道我的所有服务的完全的URL,我可以通过它的域名是指每个服务。 但是,当它的时间做调试这可以是一个噩梦,因为没有到云服务绑定到特定IP地址(和端口)和DevFabric不能保证一个特定的云服务维护两个不同的调试会话之间相同的地址选项。

我已经解决了一个简单的技术问题:

在我WebRoles我总是指域名就像debug.myservice.comdebug.myotherservice.com。

本地IP地址可以使用主机文件,你可以找到解决:

windows/system32/drivers/etc/hosts

通过添加一些简单的语句等,例如:

127.0.0.1 debug.myservice.com
127.0.0.2 debug.myotherservice.com

这解决了问题,但因为你需要手动更新主机文件,每次启动一个新的调试会话的时间可能会非常无聊。

但是有一个简单而强大的解决方案。 你知道你可以设置是每个云服务进行初始化时执行一个简单的启动脚本,你可以在这里找到详细信息:

http://msdn.microsoft.com/en-us/library/windowsazure/hh180155.aspx

你也可以当你在云上或者在模拟器中运行运行不同的脚本。

我要做的就是运行一个脚本,自动更新hosts文件,每一个我的云服务在模拟器初始化(只有在模拟器)环境中的时间。

这里的脚本:

IF "%ComputeEmulatorRunning%" == "true" (
    cd Startup
    UpdateDnsHostsOnDebugEnv.exe MyCompany.MyService.Site.WebRole debug.myservice.com
    cd..
)

在这里你需要添加到ServiceDefinition.csdef中才能运行的启动脚本是什么:

<Startup>
    <Task commandLine="Startup\UpdateDnsHosts.cmd" executionContext="elevated" taskType="foreground">
       <Environment>
           <Variable name="ComputeEmulatorRunning">
               <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
           </Variable> 
       </Environment>
     </Task>
</Startup>

注意使用UpdateDnsHostsOnDebugEnv.exe方案。 这是一个简单的控制台应用程序,我写的只是csrun.exe运行和分析结果,以提取角色的本地端点地址和更新主机文件。

希望这有助于。



文章来源: Azure Compute Emulator: Is it possible to control the IP of individual instances?