2011-11-22 73 views
5

對於概念文件的證明,我收集了有關Windows Azure的事實。還有2個主題我找不到明確的答案。的Windows Azure,解決實例和粘性會話

  1. 粘性會話/粘負載均衡是不可能的,對嗎?也許在Azure流量管理器(WATM)的幫助下有可能?

  2. 可以單來解決部署的情況下,或者是他們一切的背後Azure中的這種非透明的牆?或者至少,運行時的實例可以確定自己的id或類似的東西,以便將其寫入日誌?

回答

1

請找到答案吼叫:

  1. 粘性會話/粘負載均衡是不可能的,對嗎?也許有可能在Azure流量管理器 (WATM)的幫助下?

你是對的。與Windows Azure沒有粘性會話。不,您不能使用流量管理器來幫助您瞭解粘性。流量管理器只會幫助您分配負載,而不是實例。請在角色和實例之間做出區別。請參閱this question以獲取有關角色和實例的更多信息。

2.可以單來解決部署的情況下,或者是他們一切的背後Azure中的這種非透明的牆?或者至少,運行時實例是否可以在運行時確定其自己的ID或類似 中的ID以便將其寫入日誌?

您無法尋址特定實例。所有都在Windows Azure負載平衡器和FireWall之後。但是,您可以從代碼中發現哪些是您當前的角色實例。使用RoleEnvironment類的CurrentRoleInstance屬性。這將是RoleInstance類型的對象,它具有ID屬性。

+0

這件事聲稱執行粘滯會話http://archive.msdn.microsoft.com/stickyrouter – sharptooth

+0

感謝您指出這一點。然而這件事使用額外的工作者角色。雖然我是優化的粉絲,並且可能會將「工人代碼」放在「網絡角色」中,但我仍然認爲這是不必要的練習。我寧願將我的代碼改爲無狀態和不粘的方向。 – astaykov

+0

好的,到目前爲止,謝謝。任何人都可以解釋如果Azure的尖銳會話路由器(銳利鏈接)能夠工作,如果它不可能處理實例? – alapeno

1

正如astaykov指出,角色實例總是在防火牆後,你有沒有從部署外部訪問特定實例的能力。

實現粘性會話的唯一途徑是建立一個請求路由器。運行完畢後(例如,在其自身的Web或Worker角色中,如同一個部署中的銳利指向的示例),該角色就可以訪問部署中其他角色的內部端點。

雖然內部端點沒有負載平衡,請求路由器可以列舉內部端點的所有實例(獲取IP:端口一個),然後做自己的負載平衡或路由。

對於使用內部端點的角色間通信的例子,看看this msdn article.

+0

謝謝你,讓我的事情更清晰 – alapeno

0

沒有一個明確的答案,但三個最好的選擇是:

  1. 狀態服務器 - 這將允許您在網絡外部從服務器到服務器獲取加密數據。您可以通過在Web應用程序或服務器的每個實例上實施狀態服務器來執行此操作。

  2. SQL服務器(在內存中,這僅是可在2014年及更高版本)

  3. Redis的緩存在Azure上

的三個選項都處理幾乎任何會議的問題,我已經在過去三年遇到。

+0

謝謝納撒尼爾! – JaxCoder