2010-08-22 18 views
18

這是可能有一堆web應用程序運行在一個Windows Azure小型計算實例嗎?您可以在一個Windows Azure實例上部署多個Web應用程序嗎?

我正在使用Azure作爲一個地方坐在一堆開發和非生產準備好的項目(網絡應用程序)。有些實際上是飛蛾,但我想在某個地方有一個活躍的實例。我不想爲每個應用程序支付單獨的計算時間,這只是90%的時間。

我正在考慮爲這些項目獲取共享託管帳戶的其他選項。

回答

18

是的,現在可以與發佈2010年年底

你必須使你的Azure項目的服務定義文件中的相應配置的變化最新的Azure平臺的更新。以下是同一個域中多個網站的示例。註冊站點正在使用https端點(您還必須配置您的證書),其餘的正在使用http。公共站點沒有指定主機頭,並會捕獲任何未明確指定的東西。當你有一個應用程序需要處理多個子域名(如shopify)時,這非常棒。爲了使這項工作,你需要有一個允許通配符的DNS(GoDaddy DNS不)。顯然,您還需要一個cname記錄,指向其他每個子域的azure。在這個例子中另外需要注意的是應用程序的物理目錄是相對於Azure項目的。希望這可以幫助!

這裏有一個鏈接,可以幫助:http://msdn.microsoft.com/en-us/library/gg433110.aspx

<?xml version="1.0" encoding="utf-8"?> 
<ServiceDefinition name="SampleAzureProject" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"> 
    <WebRole name="RegisterSite_WebRole"> 
    <Sites> 
     <Site name="RegisterSite" physicalDirectory="..\RegisterSite"> 
     <Bindings> 
      <Binding name="RegisterBinding" endpointName="Endpoint1" hostHeader="register.sample.com" /> 
     </Bindings> 
     </Site> 
     <Site name="PublicSite" physicalDirectory="..\PublicSite"> 
     <Bindings> 
      <Binding name="PublicBinding" endpointName="Endpoint2" hostHeader="" /> 
     </Bindings> 
     </Site> 
     <Site name="ManageSite" physicalDirectory="..\ManageSite"> 
     <Bindings> 
      <Binding name="ManageBinding" endpointName="Endpoint2" hostHeader="manage.sample.com" /> 
     </Bindings> 
     </Site> 
     <Site name="MarketingSite" physicalDirectory="..\MarketingSite"> 
     <Bindings> 
      <Binding name="MarketingBinding" endpointName="Endpoint2" hostHeader="www.sample.com" /> 
     </Bindings> 
     </Site> 
    </Sites> 
    <Endpoints> 
     <InputEndpoint name="Endpoint1" protocol="https" port="443" certificate="SampleReg" /> 
     <InputEndpoint name="Endpoint2" protocol="http" port="80" /> 
    </Endpoints> 
    <Imports> 
     <Import moduleName="Diagnostics" /> 
    </Imports> 
    <Certificates> 
     <Certificate name="SampleReg" storeLocation="LocalMachine" storeName="My" /> 
    </Certificates> 
    </WebRole> 
</ServiceDefinition> 
3

這取決於你的意思是由Windows Azure實例。

單個Azure帳戶可以容納多個服務和部署。部署(寫作時)可能包含多個工作者和Web角色(實質上是項目)。

單個Web角色可以部署在多個部署實例中。

鑑於此,您可以通過輕鬆地將多個Web應用程序託管在單個Windows Azure帳戶中,甚至可以單個部署

如果您有意將成本降至最低,並在單個Web角色實例下保留多個測試Web應用程序,則會變得棘手 - 您需要將它們集中到一個項目中並立即進行部署。

注意:最後一種情況可能會很快看到劇烈的改進,所以Windows Azure是一個相當安全的選擇。

+0

我指的是Windows Azure的小型計算實例。更新 – 2010-08-22 19:28:17

+0

所以基本上沒有,除非我把它們全部放在一個解決方案。但是,您預計未來會發生這種變化。 – 2010-08-22 19:29:16

3

Azure在其當前狀態(2010年8月)中將只爲每個VM實例運行一個應用程序(「服務」,「角色」)。

因此,對於您的問題的簡單答案是否定的,在這個時候。

現在,考慮到平臺的所有功能,您可以想出一些創造性的方式來提供這種類型的沙箱。藉助服務管理API,您可以將部署放在Azure存儲中,並在請求時將角色聯機,然後在不再需要時將其關閉(「刪除部署」)。由於架構將虛擬機聯網,部署將會有一些滯後..但根據使用情況,這可能會使您節省一些重大費用。

+3

+1。如果你想有多個部署沒有$$$影響,最簡單的辦法是設置您的服務配置(名稱,網址,親和力,證書等),但沒有任何代碼部署。讓您的應用程序坐落在blob存儲中,並使用特定於版本的名稱(可能是每個應用程序的容器?)。然後使用一些簡單的PowerShell腳本(使用Azure cmdlet)在需要時部署應用程序,並在完成時拆除。平均而言,部署可能需要15分鐘,更不用說拆卸和刪除。 – 2010-08-23 14:24:57

1

基本上,你僅限於每個角色一個應用程序。

不確定這是否會因爲Windows Azure以這種方式託管背後的原因而發生變化。

從閱讀你的問題,這聽起來像雲目前可能不適合你。特別是如果你有沒有使用「90%」的東西。這是浪費大量工作時間讓角色閒置,同時支付$$。

我的建議是使用共享主機或其他東西,直到網站要求更高的正常運行時間,可擴展性和其他雲特性。

1

Azure可能不是最適合這種用例 - 一個虛擬機只允許一個應用程序,其他所有選項的實現都有些複雜(比如在一個Web角色中有多個應用程序或按需部署和拆除) Azure在時鐘小時內收費,所以我不確定如果您啓動一個實例,將其關閉並在一小時內再次啓動它,會發生什麼情況)。

另一個雲供應商,像Rackspace公司或亞馬遜可能會更好,你可以創建Windows VM和IIS託管的應用程序,你會正常的服務器上。在這種情況下,唯一的好處將是服務器和沒有基礎設施的管理更容易配置(您仍然需要管理的操作系統和其他依賴雖然不像天青)。

3

有一個Azure的實例中運行多個web應用程序的唯一方法是將多個應用程序合併到一個WebRole項目。 Azure每個Web角色實例需要一個Web應用程序。

這可能不是太硬,如果你的Web應用程序是相當簡單的,或只是ASPX生成的HTML頁 - 把每一個應用程序在其自己的URL子目錄保持的名稱從其他應用分開的頁面。由於同一個應用程序中的頁面之間的鏈接通常與主目錄相關,因此這不應該讓您的鏈接變得更加糟糕。您可以使用url路徑訪問每個「subapp」:http://mydomain.com/app1/default.html,http://mydomain.com/app2/...

隨着每個Web應用程序複雜性的增加,您將看到收益遞減。將多個複雜的應用程序捆綁到一個普通的主應用程序中會更困難。

但對實驗和概念類型的工作證明,一旦啓動主應用模式應該是很容易繼續下去了今後的工作。無論最新的實驗是什麼,您都會將您的Azure Web角色實例用作工作組合,而不是一次性便箋簿。

+0

愛工作理念組合 - 合理 – 2010-08-25 17:59:50

相關問題