媒體服務和點播視訊 (VOD) 的高可用性
警告
Azure 媒體服務將於 2024 年 6 月 30 日淘汰。 如需詳細資訊,請參閱 AMS淘汰指南。
VOD 的高可用性
Azure 架構文件中有一個名為 Geodes 的高可用性設計模式。 其中說明如何將重複的資源部署到不同的地理區域,以提供可擴縮性和復原能力。 您可以使用 Azure 服務來建立這種架構以涵蓋多種高可用性設計的考量因素,例如備援、狀況監控、負載平衡和資料備份與復原。 下文將說明其中一種此類架構,其中詳細說明解決方案中使用的各種服務,以及如何使用各種服務來為您的 VOD 應用程式建立高可用性架構。
範例
這邊提供一個範例來讓您熟悉媒體服務和點播視訊 (VOD) 的高可用性。 此範例也會更詳細地說明如何針對 VOD 案例使用服務。 此範例目前的形式不適合用於生產。 在整合至生產應用程式之前,請仔細檢閱範例程式碼和讀我檔案,尤其是失敗模式一節。 點播視訊 (VOD) 的高可用性生產實作也應該仔細檢閱其內容傳遞網路 (CDN) 策略。 查看 GitHub 上的程式碼。
服務概觀
此架構範例中使用的服務包括:
圖示 | 名稱 | 描述 |
---|---|---|
媒體服務帳戶 |
描述: 媒體服務帳戶是在 Azure 中管理、加密、編碼、分析和串流處理媒體內容的起點, 與 Azure 儲存體帳戶資源相關聯。 該帳戶和所有相關聯的儲存體必須位於相同的 Azure 訂用帳戶中。 VOD 使用: 這些是您用來編碼和傳遞視訊和音訊資產的服務。 為了實現高可用性,您至少需要設置兩個媒體服務帳戶,各帳戶分別位於不同的區域中。 深入了解 Azure 媒體服務。 |
|
儲存體帳戶 |
描述: Azure 儲存體帳戶包含您所有的 Azure 儲存體資料物件:Blob、檔案、佇列、資料表和磁碟。 您可以從世界各地透過 HTTP 或 HTTPS 存取資料。 每個區域中的個個媒體服務帳戶都會有位於相同區域的儲存體帳戶。 VOD 使用: 您可以儲存 VOD 處理和串流的輸入和輸出資料。 深入了解 Azure 儲存體。 |
|
Azure 儲存體佇列 |
描述: Azure 佇列儲存體是一項儲存大量訊息的服務,全球任何地方都可利用 HTTP 或 HTTPS 並透過驗證的呼叫來存取這些訊息。 VOD 使用: 佇列可用來傳送和接收訊息,以協調不同模組的活動。 此範例使用的是 Azure 儲存體佇列,但 Azure 也提供其他類型的佇列,例如服務匯流排和 Service Fabric 可靠佇列,這些佇列可能更符合您的需求。 深入了解 Azure 佇列。 |
|
Azure Cosmos DB |
描述: Azure Cosmos DB 是 Microsoft 的全域分散式、多模型資料庫服務,可以獨立地調整全球任意數量 Azure 區域之間的輸送量和儲存體。 VOD 使用: 資料表可用來儲存作業輸出狀態記錄和追蹤各媒體服務執行個體的健全狀態。 您也可以追蹤/記錄每次對媒體服務 API 呼叫的狀態。 深入了解 Azure Cosmos DB。 |
|
受控識別 |
描述: 受控識別是 Azure AD 的一項功能,可在 Azure AD 中提供自動受控識別。 您可以用它來完成任何支援 Azure AD 驗證的服務 (包括 Key Vault),而不需要在程式碼中儲存任何認證。 VOD 使用: Azure Functions 可以使用受控識別來驗證媒體服務執行個體,以連線至金鑰保存庫。 深入了解受控識別。 |
|
Key Vault |
描述: Azure Key Vault 可用來安全地儲存權杖、密碼、憑證、API 金鑰和其他祕密,並嚴密控制其存取。 它也可作為金鑰管理解決方案。 Azure Key Vault 可讓您輕鬆建立和控制用來加密資料的加密金鑰。 它可讓您輕鬆地佈建、管理及部署公用和私人傳輸層安全性/安全通訊端層 (TLS/SSL) 憑證,以便與 Azure 和您內部連線的資源搭配使用。 祕密和金鑰可受到軟體的保護,或由通過 FIPS 140-2 Level 2 驗證的 HSM 保護。 VOD 使用: 金鑰保存庫可用來為應用程式的服務主體設定存取原則。 可以用來將連接字串儲存至儲存體帳戶。 我們利用金鑰保存庫將連接字串儲存至儲存體帳戶和 cosmos db。 您也可以使用金鑰保存庫來儲存整體叢集設定。 針對各個媒體服務實例,您可以儲存訂用帳戶的識別碼、資源群組名稱和帳戶名稱。 如需詳細資訊,請查看它在此範例中的使用方式。 深入了解 Key Vault。 |
|
Azure Functions |
描述: Azure Functions 可讓您執行一小段程式碼 (稱為「函式」),而無須顧慮應用程式基礎結構。 深入了解 Azure Functions。 VOD 使用: Azure Functions 可用來儲存 VOD 應用程式的模組。 VOD 應用程式的模組可能包含: 作業排程模組 作業排程模組用於將新作業提交至媒體服務叢集 (不同區域中的兩個或多個執行個體)。 它會追蹤每個媒體服務執行個體的健全狀態,然後將新作業提交至下一個狀況良好的執行個體。 作業狀態模組 作業狀態模組會接聽來自 Azure 事件方格服務的作業輸出狀態事件。 它會將事件儲存至事件存放區,以將其餘模組對媒體服務 API 的呼叫次數降到最低。 執行個體健康情況模組 此課程模組會追蹤已提交的作業,並判斷每個媒體服務執行個體的健全狀態。 它會追蹤已完成的作業、失敗的作業和從未完成的作業。 佈建模組 此課程模組會佈建已處理的資產。 它會將資產數據複製到所有媒體服務實例,並設定 Azure Front Door 服務,以確保即使某些媒體服務實例無法使用,仍可串流處理資產。 另外也會設定串流定位器。 作業驗證模組 此課程模組會追蹤每個提交的作業、重新提交失敗的作業,並在作業成功完成後清除作業資料。 |
|
App Service (和方案) |
描述: Azure App Service 是 HTTP 型服務,用來裝載 Web 應用程式、REST API 和行動後端。 它支援 .NET、.NET Core、Java、Node.js、PHP 或 Python。 應用程式在 Windows 和 Linux 型環境中都可執行及調整。 VOD 使用: 每個模組都會裝載於 App Service。 深入了解 App Service。 |
|
Azure Front Door |
描述: Azure Front Door 可用以針對最佳效能和快速全域容錯移轉以獲得高可用性最佳化,定義、管理及監視網路流量的全域路由。 VOD 使用: Azure Front Door 可用來將流量路由傳送至串流端點。 深入了解 Azure Front Door。 |
|
Azure Event Grid |
描述: 事件方格專為以事件為基礎的架構建立,其中內建針對來自 Azure 服務 (例如儲存體 Blob 和資源群組) 之事件的支援。 也支援自訂主題事件。 您可以使用篩選器將特定事件路由傳送到不同的端點、多點傳送至多個端點,並確定事件會可靠地進行傳遞。 它會以原生方式分散到每個區域中的多個容錯網域,並分散到不同可用性區域,藉此來最大化可用性。 VOD 使用: 事件方格可用來追蹤所有應用程式事件並加以儲存,藉此保存作業狀態。 深入了解 Azure 事件方格。 |
|
Application Insights |
描述: Application Insights 是 Azure 監視器的一項功能,其為適用於開發人員和 DevOps 專業人員的可擴充應用程式效能管理 (APM) 服務。 它可用來監視即時應用程式。 它會偵測效能異常,其中包括分析工具,可協助您診斷問題,並了解使用者如何運用應用程式。 它是設計來協助您持續改善效能和可用性。 VOD 使用: 所有記錄都可以傳送至 Application Insights。 搜尋成功建立的作業訊息,即可查看處理各作業的執行個體。 它可以包含所有提交作業的中繼資料,包括唯一識別碼和執行個體名稱資訊。 深入了解 Application Insights。 |
架構
此高層級圖表顯示所提供範例的結構,可幫助您開始使用高可用性和媒體服務。
最佳作法
區域
- 建立兩個 (或更多) Azure 媒體服務帳戶。 這兩個帳戶必須位於不同區域。 如需詳細資訊,請參閱已部署 Azure 媒體服務的區域。
- 將您的媒體上傳至您打算提交作業的相同區域。
- 如果您接下來需要將作業重新提交至另一個區域,您可以使用
JobInputHttp
或Copy-Blob
,將資料從來源的資產容器複製到另一個區域中的資產容器。
監控
透過 Azure 事件方格訂閱每個帳戶中的
JobStateChange
訊息。- 使用 Microsoft.Azure.EventGrid SDK (可原生支援媒體服務事件)。
- 您也可以透過 Azure Functions 來取用事件方格事件。
其他資訊:
- 請參閱音訊分析範例,其中會示範如何使用 Azure 事件方格來監視作業,包括新增後援,以避免 Azure 事件方格訊息因為某些原因而延遲。
建立作業時:
- 從目前使用帳戶的清單中隨機選取帳戶一個帳戶 (此清單通常包含兩個帳戶,但如果偵測到問題,則可能只包含一個帳戶)。 如果清單是空的,請發出警示以便操作員調查。
- 建立記錄以追蹤每一個傳遞作業和所使用的區域/帳戶。
當您的
JobStateChange
處理常式收到作業已達到排程狀態的通知時,請記錄進入排程狀態的時間,以及所使用的區域/帳戶。當您的
JobStateChange
處理常式收到作業已達到處理狀態的通知時,請將該作業的記錄標示為處理中,並記錄進入處理狀態的時間。當您的
JobStateChange
處理常式收到作業已達到最終狀態 (已完成/錯誤/取消) 時,請適當地標示該作業的記錄。擁有可定期查看作業記錄的獨立流程
- 如果您在指定區域中有作業處於排程狀態,但沒有在合理時間內進入處理狀態,請從您目前使用帳戶的清單中移除該區域。 根據您的業務需求,您可以決定立即取消這些作業並重新提交至其他區域。 或者,您可以給它們更多時間以進入下一個狀態。
- 如果某個區域已從帳戶清單中移除,在將區域加回清單之前,請先監視其復原狀況。 區域健康情況可以透過該區域現有的作業來進行監視 (如果作業未取消和重新提交),方法是在一段時間後將帳戶加回列表,並且由操作員監視可能影響 Azure 媒體服務之中斷問題的相關 Azure 通訊。
取得說明及支援
您可以連絡媒體服務並詢問問題,或依照下列其中一種方法追蹤我們的更新:
- 問與答
-
Stack Overflow。 使用
azure-media-services
標記問題。 - @MSFTAzureMedia 或使用 @AzureSupport 來要求支援。
- 透過 Azure 入口網站 開啟支援票證。