微服務架構通常會在單一容器內封裝和部署每個微服務實例。 微服務的許多實例可能正在執行,每個實例都會在不同的容器中執行。 容器是輕量型且短暫的,可讓您輕鬆建立和終結,但難以協調和溝通。
本文討論在生產規模上執行容器化微服務架構的挑戰,以及容器協調流程如何協助。 本文提供數個 Azure 容器協調流程選項。
容器化微服務架構
在這個簡單的容器化 Azure Kubernetes Service (AKS) 叢集中:
- 一個微服務 A 實例是在節點 1 中執行,另一個實例是在節點 2 中執行,另一個實例是在節點 3 中執行。
- 微服務 B 的一個實例是在節點 1 中執行,另一個實例是在節點 3 中執行。
- 容器化 反向 Proxy 伺服器 在節點 1 和 2 中執行,以分散流量。
若要管理叢集,DevOps 小組必須:
- 在每個節點中執行多個容器實例。
- 平衡實例之間的流量負載。
- 管理不同節點中相依實例之間的通訊。
- 維護所需的 AKS 叢集狀態。
使用容器協調流程,DevOps 小組可以將叢集所需的狀態表示為組態。 容器協調流程引擎會強制執行所需的設定,並將所有管理工作自動化。
請考慮將簡單的三層式 Web 應用程式容器化:
- 容器會裝載前端元件。
- 另一個容器裝載仲介層或 REST API 層。
- 仲介層會與全域分散式資料庫通訊。
在單一開發計算機上執行這些容器可能不太困難。 不過,在生產叢集中大規模以高可用性模式執行應用程式會變得具有挑戰性。 容器協調流程對於大型和動態生產環境至關重要。
容器協調流程的優點
下列範例示範容器協調流程如何協助管理叢集部署、網路和調整。
容器協調器:
根據流量或資源使用率,自動調整微服務實例的數目。 在此範例中,協調器會自動新增另一個微服務 A 實例,以回應增加的流量。
管理容器以反映已設定的所需狀態。 在此範例中,微服務 B 已設定為有兩個實例。 一個實例已變成狀況不良,因此協調器會藉由建立另一個實例來維護所需的狀態。
將每個微服務的容器包裝在簡單的服務層中。 服務層:
- 將IP位址、埠和實例數目等複雜度抽象化。
- 負載平衡微服務實例之間的流量。
- 支援相依微服務實例之間的簡單通訊。
容器協調器也提供彈性和流量控制,以便:
- 發行新版本,或復原至舊版的微服務或微服務集合,而不需要停機。
- 啟用不同微服務版本的並存測試。
選擇 Azure 容器協調器
以下是在 Azure 中實作微服務容器協調流程的一些選項:
Azure Kubernetes Service (AKS) 是 Azure 中完全受控 Kubernetes 容器協調流程服務,可簡化容器化應用程式的部署和管理。 AKS 提供彈性布建、快速端對端部署,以及進階身分識別和存取管理。
Azure Service Fabric 是一個容器協調器,可用來跨機器叢集部署和管理微服務。 輕量型 Service Fabric 運行時間支援建置無狀態和具狀態微服務。
Service Fabric 區分器的關鍵是其強大的支援,可建置具狀態服務。 您可以使用內建具狀態服務程序設計模型,或執行以任何語言或程式代碼撰寫的容器化具狀態服務。
Azure 容器實例 (ACI) 是在 Azure 中執行容器的最快速且最簡單的方式。 使用ACI時,您不需要管理虛擬機或調整較高層級的服務。
針對簡單的協調流程案例,您可以使用 Docker Compose,在本機定義及執行多容器應用程式。 然後,將 Docker 容器部署為受控無伺服器 Azure 環境中的 ACI 容器群組。 針對完整的容器協調流程案例,ACI 可以與 AKS 整合,以建立 AKS 協調流程的虛擬節點。
Azure Spring Apps 是適用於 Spring Boot 應用程式的企業就緒完全受控服務。 透過 Spring Apps,您可以專注於建置和執行應用程式,而不需要管理基礎結構。 Spring Apps 隨附內建生命週期和協調流程管理、輕鬆監視,以及與 Azure 完全整合。
Azure Red Hat OpenShift (ARO) 支援在 Azure 上部署完全受控的 OpenShift 叢集。 執行 Kubernetes 生產容器需要與映像登錄、記憶體管理、監視和 DevOps 等架構和工具整合。 ARO 會將這些元件結合到單一容器平臺即服務 (PaaS) 來擴充 Kubernetes。
貢獻
本文由 Microsoft 維護。 它最初是由下列參與者所撰寫。
主體作者:
- Veerash Ayyagari |首席軟體工程師
若要查看非公用LinkedIn配置檔,請登入LinkedIn。
後續步驟
- Azure Kubernetes Service (AKS) 上的微服務架構
- 進階 Azure Kubernetes Service (AKS) 微服務架構
- 使用 Azure Pipelines
AKS 應用程式的 CI/CD - 在微服務中使用 API 閘道
- Azure Spring Apps 參考架構