假设我有一个包含3个实例的Azure Web角色。我有办法通过URL更改直接访问每个角色吗?
我试图单独测试实例的端点 - 因此我的询问。
修改
我不是在寻找如何关闭其中一个实例,我正在寻找如何在每个实例上单独ping一个端点。
答案 0 :(得分:1)
输入端点是负载平衡的,因此您无法真正将流量定向到单个实例。
话虽如此,有一些解决方法:
您可以为健身检查事件设置处理程序。在除了一个实例之外的所有实例中,您可以设置实例的busy-flag,将其从负载均衡器中取出。要实现这一点,您需要某种类型的pub / sub(服务总线队列?)机制来向实例广播消息,让他们知道是否要在负载均衡器中包含或排除自己。你会做类似的事情:
RoleEnvironment.StatusCheck += RoleEnvironment_StatusCheck;
则...
void RoleEnvironment_StatusCheck(object sender, RoleInstanceStatusCheckEventArgs e)
{
if(someMagicConditionToRemoveFromLB)
e.SetBusy();
}
另一种选择是在单独的Web角色实例中运行ARR,提供自定义负载平衡。
也许你可以提出其他的解决方法,但一般来说,没有为直接实例访问设置web / worker负载平衡。
答案 1 :(得分:0)
要添加David指出的内容,您还可以在角色上设置InstanceInput个端点。这将在另一个端口上创建一个端点,该端点将流量直接发送到一个实例。您可以执行此操作并将本地端点端口指向80,从而可以在外部处理单个实例;但是,这可能不是你想要保留的东西。您可以将此作为测试执行,然后使用刚刚删除了instanceinput端点的就地升级来删除端点。请注意,在此类升级过程中,您可能会在更新端点时断开连接。