此範例架構示範汽車原始設備製造商 (OEM) 的端對端方法,並包含參考架構和數個已發佈的支持開放原始碼連結庫,可重複使用。 Microsoft將車隊控制軟體重新架構為高可用性、異地備援和廠商中性,並在混合式雲端內容中執行。
架構
99.9% 可用性和災害復原的零停機時間故障轉移異地備援
工作流程
- 後端的實例,包含下列元件,會部署到兩個 Azure 區域:Azure IoT 中樞、擷取、RabbitMQ、Mission State、Vehicle State、Job Manager 和 Geo DB。 IoT 中樞 會連線到一組使用微服務架構建置的應用程式,此架構可以使用 Azure App 服務、Web App for Containers 或 Kubernetes 的 Web Apps 功能,在 Azure App 服務 上部署。
- 領導者選舉系統會決定哪些後端控制在任何指定時間點的店面上的 AGV。 如果負責的後端失敗,則領導者選舉會立即將控制權轉移到其他地區的後端。
- 由於此異地備援和零停機故障轉移架構,在 Azure 中執行的 AGV 控制軟體可達到 99.9% 的可用性,前提是因特網聯機和外部子系統,例如 SAP,並不限制因素。
適用於數據中心無關部署的 Kubernetes 和 RabbitMQ
在生產工廠與 Azure 之間的因特網連線是限制因素的情況下,我們的 AGV 控制軟體也可以部署到內部部署計算節點。 藉由使用 Kubernetes 和 RabbitMQ 作為平臺無關的技術,上一節所述的應用層會部署在 Azure IoT Edge 裝置上。
適用於 AGV 廠商無關通訊的 VDA 5050 規格實作
由於符合 VDA 5050 車輛連接器規格,我們的 AGV 控制軟體可以與不同廠商的所有類型的 AGV 通訊,這些 AGV 也符合 VDA 5050。
工作流程
在此架構中,您可以看到在 Azure 中執行後端 AGV 車隊控制解決方案的不同服務和元件概觀:
- 當開發人員認可新程序代碼時, GitHub Actions 會自動掃描程序代碼,以快速找出弱點和編碼錯誤。 它也可以用來自動部署應用程式和基礎結構元件。
- 容器登錄會儲存用於 AGV 車隊控制後端不同服務的容器映像。
- 後端服務會 部署到適用於容器的 Web 應用程式。
- 這些後端服務可以使用 VDA 5050 通訊協定連線到外部系統。 它們也可以連線到受控串流平臺,例如 Kafka,也可以將車輛資訊儲存在 Azure SQL 資料庫中。
- Azure 金鑰保存庫 會儲存密碼、金鑰和憑證。
- Application Insights 會針對以後端服務執行的應用程式實作記錄和監視。
- 受控識別 會連線到 Azure 中的不同服務和資源,而不需要開發人員管理認證。 它們提供身分識別,讓應用程式在連線到支援Microsoft Entra 驗證的資源時使用。
元件
Azure App 服務 是一種平臺即服務(PaaS),用於在受控虛擬機器(VM)中建置和裝載應用程式。 它會管理應用程式執行所在的基礎計算基礎結構。 App Service 會根據計量來監視資源使用量配額和應用程式計量、診斷信息的記錄,以及警示。
Azure 虛擬網路 是私人網路在 Azure 中的基本建置組塊。 此服務可讓許多類型的 Azure 資源,例如 Azure 虛擬機器,安全地彼此通訊、因特網和內部部署網路。
IoT 中樞 是裝載於雲端的 PaaS 受控服務,可作為 IoT 應用程式和所管理裝置之間雙向通訊的中央訊息中樞。
Azure Container Apps 是完全受控的無伺服器容器服務,可大規模建置和部署容器。
Azure Container Registry 是以開放原始碼 Docker Registry 2.0 為基礎的受控私人 Docker 登錄服務。 您可以使用 Azure 容器登錄搭配現有的容器開發和部署管線,或使用 Azure Container Registry 工作在 Azure 中建置容器映像。 視需要建置,或使用觸發程式完全自動化組建,例如原始程式碼認可和基底映像更新。
Microsoft Entra 識別碼 是雲端式身分識別和存取管理服務,可驗證用戶、服務和應用程式。
Azure 儲存體 提供持久、高可用性且可大幅調整的雲端記憶體解決方案。 它包含物件、檔案、磁碟、佇列和數據表記憶體功能。
RabbitMQ 是一種開放原始碼訊息代理程序軟體,原本實作進階消息佇列通訊協議,此後已使用外掛程式架構擴充,以支援串流文字導向傳訊通訊協定、MQ 遙測傳輸和其他通訊協定。
Azure 虛擬機器 提供隨選、可調整的運算資源,讓您擁有虛擬化的彈性,而不需要購買和維護實體硬體。
Azure SQL 資料庫 是完全受控的 PaaS 資料庫引擎,可處理大部分的資料庫管理功能,例如升級、修補、備份和監視,而不需要使用者介入。
Azure 金鑰保存庫 是雲端服務,可安全地儲存和存取秘密。 秘密是您想要嚴格控制存取的任何專案,例如 API 金鑰、密碼、憑證或密碼編譯密鑰。
Application Insights 是 Azure 監視器的一項功能,是適用於開發人員和 DevOps 專業人員的可延伸應用程式效能管理 (APM) 服務。 您可以使用它來監視即時應用程式。 它會自動偵測效能異常,並包含功能強大的分析工具,可協助您診斷問題,並瞭解用戶實際使用您的應用程式。
替代項目
此架構會使用 Azure App 服務 的 Kubernetes 和 Web Apps 功能來執行此解決方案的應用程式。 或者,您可以在 Azure 容器執行個體 中執行這些微服務,其提供在 Azure 中執行容器的最快速且最簡單的方式,而不需要採用更高層級的服務,例如 Azure Kubernetes Service (AKS)。
內部部署範例使用 Azure 虛擬機,也可以由容器技術取代。
執行這些服務的另一個選項是在 Azure Kubernetes Service (AKS) 中。 這提供無伺服器 Kubernetes 來執行微服務、整合式持續整合和持續部署 (CI/CD) 體驗,以及企業級安全性和治理。
也請考慮搭配Application Insights使用 Azure 監視器 來分析和優化應用程式、容器、資料庫和其他資源的效能,以及監視和診斷網路問題。
此架構使用RabbitMQ作為訊息代理程式。 Microsoft Azure 也支援傳訊解決方案,例如 Azure 佇列記憶體或 Azure 服務匯流排。 如需比較,請參閱 Azure 儲存體 佇列和 服務匯流排 佇列 - 比較和對比。
Azure 中的應用程式和服務會使用 Terraform 腳本來部署。 請考慮使用 Azure 原生 Azure Resource Manager 範本 (ARM 範本) 或 Bicep 來建立腳本。
案例詳細資料
汽車製造依賴自動化引導式車輛(AGV)將零件交付到組裝線。 AGV 是 Just-In-Time 製造和自動化店面物流的關鍵部分。 使用 AGV 的商店地板通常面臨三個挑戰:
- 可用性。 任何服務中斷都中斷生產環境。
- 連線能力。 商店樓層經常缺乏與公用雲端的可靠連線。
- 廠商鎖定。 傳統的 AGV 解決方案依賴專屬通訊協定。
此範例架構分為三個作業區域:
- Azure 型車隊控制參考架構,具有異地備援、零停機故障轉移、99.9% 的可用性,以及有效率的災害復原。
- 以 Kubernetes 和 RabbitMQ 為基礎的數據中心無關和內部部署部署。
- 以通用 VDA 5050 規格為基礎建置的廠商中性 AGV 通訊。
潛在使用案例
此解決方案適用於製造、汽車和運輸產業。 適用於下列案例:
- 客戶目前在其製造過程中使用 AGV。
- 使用 AGV 的客戶體驗較低,這會影響其投資報酬率(ROI)。
- 店面與公用雲端有不一致的連線。
- 客戶是開放式製造平臺 (OMP) 的成員。
- 客戶是 OMP 自發運輸系統 (OMP ATS) 工作組的成員。
關鍵問題
低成本的貨物生產依賴自動化製造流程,並即時將零件交付到組裝線。 通過自動將零件運輸到裝配線,自動化引導式車輛既有助於實時製造,也有助於車間物流的自動化。 例如,在一家典型的乘用車大規模生產工廠中,每分鐘推出一輛客車。 因此,每分鐘在生產工廠的組裝線中斷都會造成財務損失,以數萬美元的順序排列。 汽車 OEM 對其自動化系統需要高度的可靠性與可用性,而且面臨許多挑戰:
- 可用性問題。 現有的 AGV 車隊控制軟體無法滿足 99.9% 的可用性需求。
- 線上問題。 某些生產工廠沒有足夠的足夠穩定的因特網連線與所需的頻寬,以啟用裝載於 Azure 公用雲端的 AGV 車隊控制軟體與店面 AGV 之間的通訊。 因此,將AGV車隊控制軟體裝載在這類生產工廠內部網路外的數據中心並不是一個選項。
- AGV 廠商鎖定問題。 無法將現有的 AGV 與來自不同廠商的新 AGV 交換,因為 AGV 車隊控制軟體相依於現有 AGV 的專屬通訊協定。
支援99.9%可用性和災害復原之零停機故障轉移異地備援的架構可以解決這些問題。
考量
這些考量能實作 Azure Well-Architected Framework 的要素,其為一組指導原則,可以用來改善工作負載的品質。 如需詳細資訊,請參閱 Microsoft Azure Well-Architected Framework (部分機器翻譯)。
可用性與可調整性
組成 AGV 車隊控制解決方案的應用程式和服務會使用 可用性區域部署到兩個 Azure 區域,這些區域是 Azure 區域內的獨特實體位置,可協助保護 VM、應用程式和數據免於數據中心失敗。 Azure App 服務和AKS 也可以部署在可用性區域中。 IoT 中樞 幾乎在所有服務層中實作備援,以提供區域內部高可用性。
安全性
安全性可提供保證,以避免刻意攻擊和濫用您寶貴的資料和系統。 如需詳細資訊,請參閱安全性要素的概觀。
使用 Microsoft Entra 識別碼進行身分識別和訪問控制,並使用 Azure 金鑰保存庫 來管理密鑰和秘密。
DevOps
若要將微服務部署至 Kubernetes 或自動 Azure App 服務,最好使用 CI/CD 程式。 請考慮使用 Azure DevOps 或 GitHub Actions 等解決方案。
成本最佳化
成本最佳化是關於考慮如何減少不必要的費用,並提升營運效率。 如需詳細資訊,請參閱成本最佳化要素的概觀。
一般而言,使用 Azure 定價計算機 來預估成本,並使用 AKS 計算機 來估計在 Azure 中執行 AKS 的成本。 若要瞭解其他考慮,請參閱 Microsoft Azure Well-Architected Framework 中的一節。
參與者
本文由 Microsoft 維護。 原始投稿人如下。
主體作者:
- Gürcan Güleşir |資深項目經理
下一步
產品檔案:
- Application Insights
- Microsoft Entra ID
- Azure App Service
- Azure 容器執行個體
- Azure Container Registry
- Azure IoT 中樞
- Azure Kubernetes Service
- Azure Key Vault
- Azure 監視器
- Azure SQL Database
- Azure 虛擬機器
- Azure 虛擬網路
- GitHub
Microsoft學習路徑:
- Azure IoT 簡介
- Azure 上的 Kubernetes 簡介
- 容器 Azure 中的容器
- 使用 .NET 和 ASP.NET Core 建立微服務
- 管理 Azure 系統管理員的身分識別與治理
相關資源
Azure 架構中心概觀文章:
- 微服務架構樣式
- 選擇微服務的 Azure 計算選項
- 基準區域備援 Web 應用程式
- 高可用性多區域 Web 應用程式
- 進階 Azure Kubernetes Service (AKS) 微服務架構
- 使用 Azure Pipelines 的 AKS 應用程式 CI/CD
相關架構: