EDAS支持使用ECS環境和K8s環境部署應用,您可以根據應用本身的特性來選擇合適的部署環境。當您需要分離不同形態的應用或者做應用架構遷移時,可以將服務的提供者與消費者分別部署到同一VPC的ECS環境和K8s環境,他們提供的服務也是可以相互發現和調用的。
前提條件
請確保您混合部署應用的ECS集群和K8s集群屬于同一個VPC,且在EDAS的同一個微服務空間下。
如果未創建集群,請在相同的VPC和EDAS微服務空間下創建ECS集群和K8s集群。具體操作,請參見使用控制臺創建ECS集群和創建K8s集群。
背景信息
混合部署應用主要用于分離不同形態的應用和應用架構遷移。在這些需求場景下,需要保證混合部署的應用彼此間能相互發現與調用,而阿里云容器服務Kubernetes版提供的容器網絡CNI則保證了這一點,讓滿足在同一個VPC和EDAS同一個微服務空間下的混合部署應用可以相互發現與調用。
處于ECS環境中的服務,注冊的服務地址為VPC內的私網IP; 處于K8s環境中的服務,注冊的服務地址為Pod IP。在配置正確的安全組后即可實現ECS環境和K8s環境的服務相互發現與調用。
部署應用
本示例以微服務的服務提供者部署在ECS環境,服務消費者部署在K8s環境為例。
在ECS環境部署服務提供者。
在ECS環境部署服務的具體操作,請參見應用托管概述(ECS)。
在K8s環境部署服務消費者。
在K8s環境部署服務的具體操作,請參見應用托管概述(K8s)。
結果驗證
服務消費者包含Web服務,服務端應用和客戶端應用都部署完成后,可以訪問客戶端應用的Web頁面,驗證調用結果。
在應用總覽頁面訪問方式配置區域,單擊負載均衡(公網)右側的圖標。
在負載均衡(公網)對話框中設置SLB和監聽參數,然后單擊確認。
在選擇SLB右側列表中選擇新建SLB。
如果您有SLB實例,可以在列表中選擇SLB實例。
在TCP | HTTP 協議右側單擊添加新的監聽,然后將SLB端口和容器端口分別設置為80和18082。
單擊確認。
添加公網SLB大概需要30秒。添加完成后,訪問方式配置區域的負載均衡(公網)右側會顯示公網SLB的地址,格式為
SLB實例IP:端口
。復制公網SLB地址,在瀏覽器中地址欄粘貼并訪問該地址。
進入到客戶端應用的Web頁面。
在Echo this string文本框中輸入任意字符串,如Hello EDAS,然后單擊點擊此處,查看頁面下方是否成功返回調用之后的數據。
調用之后數據返回區域顯示客戶端應用(Consumer)調用服務端應用(Provider)的過程,并且包含輸入的字符串,則說明調用成功,即微服務Demo應用部署成功。
2020-08-25T10:00:01.866Z : Consumer received. 2020-08-25T10:00:01.878Z : Provider received. Provider processed after sleep 1 second! Echo String: "Hello EDAS" 2020-08-25T10:00:02.878Z : Provider Return 2020-08-25T10:00:02.882Z : Consumer Return
常見問題
如果ECS應用和K8s應用處于不同的VPC中,是否可以實現服務互通?
不可以,即使處于同一個EDAS微服務空間下,不同VPC下的服務也無法互通。
創建應用前,需要提前做好網絡規劃,集群的VPC一旦確定是無法更改的。
如果ECS應用和K8s應用處于不同的EDAS微服務空間中,是否可以實現服務互通?
如果應用使用的是EDAS微服務注冊中心(默認情況),是不能互通的,服務發現和調用是根據微服務空間隔離的。如果應用使用的是自定義的注冊中心,當應用處于同一個VPC內是可以互通的。
當ECS應用和K8s應用混合部署時,應用是否可以同名?
混合部署到同一個EDAS微服務空間時,應用不允許同名;部署到不同的EDAS微服務空間時,可以同名。
應用名稱應區分大小寫,如test和TEST判定為同名。
當ECS應用和K8s應用處于同一個EDAS微服務空間,且在同一個VPC中,服務無法互通,可能是什么原因?如何排查?
可以分別按照以下步驟排查問題:
確認服務提供者已經正常注冊,對于使用了EDAS微服務注冊中心的應用,可以使用EDAS的服務查詢功能。
以查詢SpringCloud服務為例,請參見查詢Spring Cloud服務。
確認服務提供者與服務消費者之間安全組規則放通了指定的服務端口。
ECS應用安全組,即部署應用的ECS實例對應的安全組;K8s應用安全組,即節點安全組(節點安全組和集群安全組不是同一個時,建議節點安全組包含K8s集群安全組)。
當安全組處于以下狀態時,服務可以互通。
服務提供者和服務消費者處于同一個安全組。
服務提供者和服務消費者的安全組有交集(當ECS應用和K8s應用混合部署時,推薦此模式來配置安全組)。
服務提供者在安全組入方向的規則中允許了來自服務消費者到服務端口的訪問;且服務消費者在出方向的規則中未禁止到服務提供者的服務端口的訪問。
確認服務正常注冊且安全組配置正確后,登錄到服務消費者實例,使用telnet命令檢查服務提供者的連通性。
telnet 服務提供者IP 端口