2011-04-18 57 views
9

通常,通過服務定義中定義的端點來訪問Azure工作人員。這些端點必須是TCP或HTTP(S),通過負載均衡器傳遞,然後連接到Azure計算機的實際IP /端口。直接訪問Azure工作人員;繞過負載平衡器

我的應用程序將從UDP的使用中受益匪淺,因爲我從蜂窩設備進行連接,其中字節計數用於計費,SYN/ACK/FIN的開銷使我發送的8字節數據包變矮。我甚至考慮過將數據直接放入ICMP消息頭中。但是,負載平衡器不支持這一點。

我知道,你可以啓用Azure上的虛擬機ping和然後平他們 - http://weblogs.thinktecture.com/cweyer/2010/12/enabling-ping-aka-icmp-on-windows-azure-roles.html

是否有任何東西阻止我使用基於TCP的服務(通過負載均衡器公開)僅僅分發Azure虛擬機地址的IP地址和端口,然後讓應用程序直接與該工作者通信? (我必須自己處理負載平衡。)如果工作人員關閉或移動,我的應用程序將足夠聰明,可以重新連接到TCP端點並請求一個新的地方發送數據。

請問這個概念的工作,或者是有什麼,以防止這種直接訪問?

回答

3

你必須運行你自己的路由器,其暴露的輸入(外部)端點,然後路線服務的內部端點,無論是在相同的角色還是不同的(這實際上桌面如何遠程工作原理是) 。您不能通過選擇直接連接到特定的實例。

BenjaminGuinebertière撰寫了一個由兩部分組成的博客系列,描述IIS應用程序請求路由以提供粘性會話(part 1,part 2)。這可能是一個很好的起點。

瑞恩·鄧恩也談到了對雲顯示HTTP會話路由,與後續blog post一起。

我意識到這兩個例子都是你做的不完全是,因爲他們在路由HTTP,但它們有着相似的前提。

+0

難道作用不具有外部訪問的IP地址? – 2011-04-18 14:50:39

+0

IOW,即使負載均衡器不支持UDP,我可以以某種方式打開一個UDP端口,然後連接它嗎? (雖然處於非負載平衡的方式) – 2011-04-18 14:51:29

+1

不使用Windows Azure Connect不支持UDP。所以你只有幾個選擇可靠地到達一個特定的實例:1)編寫一個套接字轉發器(請參閱我的博客示例),2)使用ARR - HTTP的好選擇,或3)使用Windows Azure Connect。但只有最後一個例子才支持UDP。如果UDP是你唯一的目標,那麼這是你今天的唯一選擇。 – dunnry 2011-04-18 22:04:14

0

有一個叫InstanceInputEndpoint的東西,你可以使用的公網IP,這將被定向到一個本地端口上的特定虛擬機實例定義的端口。所以你將有一個特定的端口+ IP組合,可以直接訪問特定的虛擬機。

<InstanceInputEndpoint name="HttpInstanceEndpoint" protocol="tcp" localPort="80"> 
    <AllocatePublicPortFrom> 
     <FixedPortRange max="8089" min="8081" /> 
    </AllocatePublicPortFrom> 
    </InstanceInputEndpoint> 

更多信息: http://msdn.microsoft.com/en-us/library/windowsazure/gg557552.aspx