本文章是由機器翻譯。

Windows Azure 內行人

在 Windows Azure 中計量和自動調整多租戶應用程式

Bruno Terkaly
Ricardo Villalobos

在以前的專欄 (msdn.microsoft.com/magazine/dn201743),我們介紹了有關創建多租戶的應用程式的概念涵蓋的四個支柱建立這種類型的系統時應考慮的兩個:標識與安全和資料的分離和隔離。這個月,我們集中都深感與否的其他兩個重要的領域:計量及自動縮放。計量允許公司收集資訊的不同元件之間所有住戶 ; 共用 自動縮放保障最終使用者的體驗不受影響的高流量,期間伺服器合同工資源需求較低時。

收集關於資源使用方式的資訊時常見故障排除的應用程式,尤其是在開發和測試流程。通過這樣做,可以設置閾值和硬體要求,以保證最佳性能的解決方案,並可以建議的最低硬體要求。在 Windows 中,通過使用效能計數器有助於確定系統瓶頸和錯誤條件完成此任務。

當運行多租戶的解決方案,雲計算,並不只在發展階段,計量就顯得尤為重要。支援多個使用者共用共同資源構成了具體挑戰,例如,如何強制配額的住戶,找出任何可能會消耗過多的資源,或者決定是否定價層需要重新定義的使用者。請記住,計量多租戶的解決方案不只只是確定或驗證使用條例草案從雲供應商 — — 在此情況下 Windows Azure — — 但也談優化您的部署中的資源,保證住戶期望的服務水準,通常表示在服務等級協定 (SLA)。

在本文中,我們會集中計量和自動縮放的計算部分多租戶的解決方案,該解決方案的類型,最受使用者訪問應用程式的數量的變化。現在,Windows Azure 支援多雲部署模型 (雲服務、 虛擬機器和 Web 網站),它是重要的是要瞭解不同的日誌記錄和診斷選項,每個提供的以及他們如何才能體自動縮放基於此資訊。如果你需要更好地瞭解基本的差異、 好處和這些部署模型的局限性,你會發現一個很好的指南,在 bit.ly/Z7YwX0

Windows Azure 雲計算服務的資料收集

雲服務 (基於平臺作為服務的概念),收集資料,通過 Windows Azure 診斷 (一團) 的基礎設施,這建立在追蹤 Windows 事件 (ETW) 框架。因為雲服務基於無狀態的虛擬機器 (Vm),一團允許您保存本地的資料,並基於排程,將它轉移到 Windows Azure 存儲使用 blob 和表中的中央存儲庫。一旦已從角色中的多個實例收集診斷資料,它可以分析並用於多種用途。圖 1 演示這一過程是如何工作的。


圖 1 Windows Azure 雲服務診斷

要啟用診斷為雲服務,應導入 (ServiceDefinition.csdef 檔),通過角色部署相應的模組,然後啟用通過一團設定檔 (diagnostics.wadcfg)。另一種方法是以程式設計方式配置的作用,在 OnStart 方法內的診斷,但使用的設定檔是首選的因為它第一次載入和啟動任務可以捕獲和記錄有關錯誤。此外,對配置的更改不需要重新生成的代碼。圖 2 顯示設定檔的最基本服務的定義和診斷程式的版本。

圖 2 基本服務的定義和診斷為雲服務的設定檔

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="MyHostedService" xmlns=
  "https://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"
  schemaVersion="2012-10.1.8">
  <WebRole name="WebRole1">
    <!--<Sites> ...
</Sites> -->
    <!-- <Endpoints> ...
</Endpoints> -->
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
  </WebRole>
</ServiceDefinition>
<?xml version="1.0" encoding="utf-8" ?>
<DiagnosticMonitorConfiguration xmlns=
  "https://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration"
  configurationChangePollInterval="PT1M"
  overallQuotaInMB="4096">
  <Directories bufferQuotaInMB="0" scheduledTransferPeriod="PT30M">
    <IISLogs container="wad-iis" directoryQuotaInMB="0" />
  </Directories>
</DiagnosticMonitorConfiguration>

ConfigurationChangePollInterval 屬性定義實例檢查頻率配置更改,而 scheduledTransferPeriod 指定的本地檔,轉到 Windows Azure 存儲的時間間隔 (在示例中所示圖 2,到"一團-iis"blob 容器)。考慮一分鐘 (PT1M) 是預設的最小值為預定轉讓的檔參數,但它可能是對於大多數方案矯枉過正。OverallQuotaInMB 屬性定義檔案系統存儲日誌緩衝區分配的總金額。每個資料來源的 bufferQuotaInMB 屬性也可以保留預設值為零 — — 這意味著它能小於 overallQuotaInMB 屬性 — — 或者它可以顯式設置。OverallQuotaInMB 必須小於 bufferQuotainMB 的所有屬性的總和。

儘管不同的資料來源可以用於收集診斷資訊的雲服務,使用它們來確定哪些特定租戶消耗的計算資源的大部分並不容易。由 IIS 全球資訊網協會 (W3C) 日誌,假設交通從不同的使用者提供可以用於此目的的最接近公制和租戶跟蹤通過 URL 參數或特定的虛擬目錄。為了啟動它,您可以添加 IISLogs XML 節點診斷程式的設定檔 (也包括在圖 2),但警告這些 IIS 日誌可以快速獲取巨大。請記住診斷資訊都存儲在 Windows Azure 存儲帳戶,並可以更改配置上部署和運行服務。

若要瞭解更多關於其他類型的資料來源,通過設定檔 — — 包括 Windows 事件日誌和效能計數器,除其他外的 — — 您可以查看在 Windows Azure 文檔 bit.ly/GTXAvo。另外,2.0 版的 Windows Azure sdk,配置診斷程式在 Visual Studio 中的過程從開始已大大提高。診斷部分現在提供了一個自訂計畫,可以進行修改以包括一個或多個資料來源,可以記錄並轉移到指定的 Windows Azure 存儲帳戶 (圖 3)。


圖 3 新診斷程式配置選項在 Windows Azure SDK 2.0

通過按一下編輯按鈕,您可以定義具體的資料收集,包括 Windows 效能計數器、 事件日誌和日誌目錄 (圖 4)。在此示例中,將收集診斷資訊為正在使用的處理器時間可用百萬位元組的記憶體和每秒的請求數的百分比,和轉到 Windows 存儲帳戶每 30 分鐘 (轉讓期間設置)。這種新介面簡化了配置診斷為雲服務並獲得計量資料供以後使用的過程。


圖 4 配置效能計數器在 Visual Studio 中與 Windows Azure SDK 2.0

除了監控選項 Windows Azure 平臺提供的雲服務,可能要看一看雲忍者計量塊釋放由 Windows Azure 孵化團隊,其中包括許多便於使用的庫中的這些功能。它是可利用的在 cnmb.codeplex.com

收集的資料,從 Windows Azure 的虛擬機器

虛擬機器在 Windows Azure 平臺上運行的有狀態實例可以單獨部署或通過虛擬網路連接到雲服務。這些實例運行完整的 Windows 和 Linux 版本,因為收集診斷資訊是類似于為房地上的機器,使用效能計數器,並堅持到本機存放區的過程。此資訊提取的過程各不相同,但它通常通過當地的代理商,將此資訊傳遞到外部服務安裝成功。

從 Windows Azure 網站收集資料

現在讓我們把注意力放到 Windows Azure 網站。收集診斷資訊的 Web 網站是一個簡單的過程,可直接在監管中心中啟用。為監測多租戶的應用程式,應啟動 Web 服務器日誌記錄 (W3C 擴展的日誌檔案格式),並通過 FTP 下載的日誌檔。在這裡是要遵循的步驟:

  1. 訪問 manage.windowsazure.com
  2. 選擇 Web 網站,然後在需要配置的特定網站。
  3. 按一下配置,然後向下滾動到"網站診斷程式"一節。打開 Web 服務器日誌記錄。
  4. 您可以從 /LogFiles/HTTP/RawLogs 下載日誌。日誌分析器 2.2,可從 Microsoft 下載中心 (bit.ly/119mefJ),可以用於分析和查詢 IIS 日誌。

作為與 Windows Azure 雲服務,從日誌檔的資訊可用於確定資源使用由不同的商戶,通過跟蹤各個虛擬目錄或 URL 參數。

作為一種服務計量

本機由 Windows Azure 提供診斷選項,幾個公司提供 Windows Azure 的計量服務。例如,戴爾公司創造了一種叫做霧燈,提供即時資料的應用程式和它回到 UX.的關係健康產品它還包括一項通知服務,提醒開發人員的關鍵問題。今天,霧­光支援雲服務和 Windows Azure SQL 資料庫,基於一團的基礎設施,如圖所示,在圖 5


圖 5 監測門戶戴爾霧燈

自動縮放選項

一旦已收集的計量和效能計數器資料,它可以用於確定所需滿足的性能要求的應用程式的資源調配的水準。在 Windows Azure 的自動縮放是指添加或減去從具體部署 (橫向擴展),想法保持解決方案和盡可能低的成本為運行的實例的行為。即使有可能擴大規模 (增加一台機器的資源),這通常意味著應用程式宕機時間,這是不可取。基本上有三種方式向 Windows Azure 部署自動縮放。

使用自動縮放塊 Windows Azure 的部署,特別適用于 Windows Azure 雲計算服務,自動縮放到的一種辦法是向解決方案中添加自動縮放應用程式塊。為此目的有幾個用準備好的圖書館。一個庫是企業整合包的 Windows Azure 的一部分,它使用使用者定義的規則,設置角色實例部署基於計數器或測量收集的一團中最小和最大數目的限制的集合。這種方法已廣泛地記錄了微軟模式 & 和做法的團隊,可以發現在 bit.ly/18cr5mD圖 6 顯示基本的多租戶架構與自動縮放塊添加到解決方案中。


圖 6 使用自動縮放應用程式塊雲服務的方法

使用外部服務有一些擴展服務供 Windows Azure 的部署,作為外部自動縮放應用程式塊。微軟最近收購了 MetricsHub (metricshub.com),其中免費提供監測和自動縮放服務為 Windows Azure 訂戶。外擴的邏輯基於持續的平均值、 領先指標、 尾隨資料和具體的時程表。您可以直接從監管中心 (Windows Azure 存儲) 的載入項一節中添加該服務。MetricsHub 支援 Windows Azure 雲服務和 Windows Azure 的虛擬機器,基於體系結構,從一團中提取資訊和接收資訊,從單一的狀態實例上安裝代理 (請參見圖 7)。


圖 7 MetricsHub 建築學

一旦成立了服務,MetricsHub 入口網站提供不同的閾值,維持健康的雲環境中,基於 CPU 的範圍目標這樣的參數和佇列中的消息數。它還提供了之前預測成本和應用自動縮放選項之後, 真正自動調配過程中最聰明的方式盡可能平衡成本與性能 (見圖 8)。


圖 8 MetricsHub 建築自動縮放門戶

使用自動化的 Windows 第三種方法基於 Windows PowerShell 腳本手動創建和直接針對 Windows Azure 管理 API 執行的 PowerShell 腳本。這種方法提供了高水準的控制和靈活性,因為這些腳本可用於自訂應用程式或持續集成框架內。此外,Windows Azure 為 Windows PowerShell Cmdlet 支援三種部署模型,包括用於 Windows Azure 網站資源調配過程的自動化。例如,更改為特定部署的實例的數量是一樣容易執行以下命令:

PS C:\> Set-AzureWebsite –Name {WebSiteName} –NumberOfWorkers {Instances}

有關如何設置和安裝 Windows Azure Cmdlet 的說明,請參閱 bit.ly/QqctsU。 您可以找到有關如何使用每個 Cmdlet 在文檔 bit.ly/U0vOEp

總結

這篇文章的結論我們兩部分的系列建築多租戶解決方案在 Windows Azure 上。 除了第一條中的身份和資料隔離,我們向您介紹配置和性能資訊提取的每個 Windows Azure 部署模型的過程 — — 雲服務、 虛擬機器和 Web 網站。 同時,我們分析了三種不同方式的自動縮放部署通過內部和外部元件和服務。 通過利用雲經濟模型 — — 基於的使用成本和共用資源池 — — 更多的公司正在釋放的解決方案,可以有效地適應他們的需要。

Bruno Terkaly 是微軟開發者福音傳教士。他淵博的知識是來自在該領域使用眾多平台、語言、架構、SDK、程式庫和 API 撰寫程式碼的多年經驗。他花時間寫代碼,博客,給現場演示構建基於雲計算的應用程式,專門使用的 Windows Azure 平臺。您可以閱讀他的博客,在 blogs.msdn.com/b/brunoterkaly

Ricardo Villalobos 是經驗豐富的軟體架構設計師,在為供應鏈管理產業的公司設計和建立應用程式擁有 15 以上的經驗。他從達拉斯大學工商管理持有不同的技術認證,以及碩士學位,為微軟工作作為 Windows Azure CSV 孵化組中雲建築師。您可以閱讀他的博客,在 blog.ricardovillalobos.com

Terkaly 和比利亞洛沃斯聯合目前在逃的行業會議。 他們鼓勵讀者的 Windows Azure 內幕交易與他們聯繫的可用性。 也可以撥打 Terkaly bterkaly@microsoft.com 和比利亞洛沃斯也可以撥打 Ricardo.Villalobos@microsoft.com

感謝以下技術專家對本文的審閱:特倫特 Swanson (滿量程 180)
特倫特斯文森是一個軟體架構師和校長在全規模 180 雲與大資料技術工作。 我一直與 Windows Azure 自一開始就説明客戶周圍的世界生成、 部署和管理其對 Windows Azure 的雲計算解決方案。 無論它移動到雲或建立新的現有應用程式,Windows Azure 上交付可伸縮的、 可靠的和可控的雲計算解決方案的整個生命週期開心 不工作時有趣和富有挑戰性的專案上,我也喜歡花時間在健身房裡,混雜的武術,支援當地的小企業,並正在積極的在我的教會。