本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
本教學會模擬具有兩個後端服務的微服務架構。第一個服務將使用 DNS 查詢來探索。第二個服務只能使用 AWS Cloud Map API 進行探索。
注意
在本教學課程中,資源詳細資訊,例如網域名稱和 IP 地址,僅供模擬使用。它們無法透過網際網路解析。
先決條件
必須滿足下列先決條件,才能成功完成本教學課程。
-
開始之前,請完成 設定 以使用 AWS Cloud Map 中的步驟。
-
如果您尚未安裝 AWS Command Line Interface,請依照安裝或更新最新版本 AWS CLI的步驟進行安裝。
本教學課程需使用命令列終端機或 Shell 來執行命令。在 Linux 和 macOS 中,使用您偏好的 Shell 和套件管理工具。
注意
在 Windows 中,作業系統的內建終端不支援您常與 Lambda 搭配使用的某些 Bash CLI 命令 (例如
zip
)。若要取得 Ubuntu 和 Bash 的 Windows 整合版本,請安裝適用於 Linux 的 Windows 子系統。 本教學課程需要具有
dig
DNS 查詢公用程式命令的本機環境。如需dig
命令的詳細資訊,請參閱挖掘 - DNS 查詢公用程式。
步驟 1:建立 AWS Cloud Map 命名空間
在此步驟中,您會建立公有 AWS Cloud Map 命名空間。 會代表您建立具有相同名稱 AWS Cloud Map 的 Route 53 託管區域。這可讓您探索在此命名空間中建立的服務執行個體,無論是使用公有 DNS 記錄或使用 AWS Cloud Map API 呼叫。
登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/cloudmap/
開啟 AWS Cloud Map 主控台。 -
選擇 Create namespace (建立命名空間)。
-
針對命名空間名稱,指定
cloudmap-tutorial.com
。注意
如果您要在生產環境中使用此名稱,則需確保指定您擁有或可存取的網域名稱。但是,基於此教學的目的,它不需要是正在使用的實際網域。
-
(選用) 針對命名空間描述,指定您要使用命名空間的描述。
-
針對執行個體探索,選取 API 呼叫和公有 DNS 查詢。
-
保留其餘的預設值,然後選擇建立命名空間。
步驟 2:建立 AWS Cloud Map 服務
在此步驟中,您會建立兩個 服務。第一個服務將使用公有 DNS 和 API 呼叫來探索。第二個服務只能使用 API 呼叫來探索。
登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/cloudmap/
開啟 AWS Cloud Map 主控台。 -
在左側導覽窗格中,選擇命名空間以列出您建立的命名空間。
-
從命名空間清單中,選取
cloudmap-tutorial.com
命名空間,然後選擇檢視詳細資訊。 -
在服務區段中,選擇建立服務,然後執行下列動作來建立第一個服務。
-
對於服務名稱,輸入
public-service
。服務名稱將套用至 AWS Cloud Map 建立的 DNS 記錄。使用的格式為
。<service-name>
.<namespace-name>
-
針對服務探索組態,選取 API 和 DNS。
-
在 DNS 組態區段中,針對路由政策,選取多值答案路由。
注意
選取後,主控台會將此項目轉換為 MULTIVALUE。如需可用路由選項的詳細資訊,請參閱 Route 53 開發人員指南中的選擇路由政策。
-
保留其餘的預設值,然後選擇建立服務,這會讓您返回命名空間詳細資訊頁面。
-
-
在服務區段中,選擇建立服務,然後執行下列動作來建立第二個服務。
-
對於服務名稱,輸入
backend-service
。 -
針對服務探索組態,僅選取 API。
-
保留其餘的預設值,然後選擇建立服務。
-
步驟 3:註冊 AWS Cloud Map 服務執行個體
在此步驟中,您會建立兩個服務執行個體,一個適用於我們命名空間中的每個服務。
登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/cloudmap/
開啟 AWS Cloud Map 主控台。 -
從命名空間清單中,選取您在步驟 1 中建立的命名空間,然後選擇檢視詳細資訊。
-
在命名空間詳細資訊頁面上,從服務清單中,選取
public-service
服務,然後選擇檢視詳細資訊。 -
在服務執行個體區段中,選擇註冊服務執行個體,然後執行下列動作來建立第一個服務執行個體。
-
針對服務執行個體 ID,指定
first
。 -
針對 IPv4 地址,指定
192.168.2.1
。 -
保留其餘的預設值,然後選擇註冊服務執行個體。
-
-
使用頁面頂端的導覽列,選取 cloudmap-tutorial.com 以導覽回命名空間詳細資訊頁面。
-
在命名空間詳細資訊頁面上,從服務清單中,選取後端服務,然後選擇檢視詳細資訊。
-
在服務執行個體區段中,選擇註冊服務執行個體,然後執行下列動作來建立第二個服務執行個體。
-
針對服務執行個體 ID,請指定 以
second
指出這是第二個服務執行個體。 -
針對執行個體類型,選取識別其他資源的資訊。
-
對於自訂屬性,將鍵/值對與 一起新增
service-name
為鍵,並將backend
作為值。 -
選擇 Register service instance (註冊服務執行個體)。
-
步驟 4:探索 AWS Cloud Map 服務執行個體
現在建立 AWS Cloud Map 了命名空間、服務和服務執行個體,您可以透過探索執行個體來驗證一切是否正常運作。使用 dig
命令來驗證公有 DNS 設定和 AWS Cloud Map API 來驗證後端服務。如需 dig
命令的詳細資訊,請參閱挖掘 - DNS 查詢公用程式
登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/route53/
開啟 Route 53 主控台。 -
在左側導覽窗格中,選擇 Hosted zones (託管區域)。
-
選取 cloudmap-tutorial.com 託管區域。這會在單獨的窗格中顯示託管區域詳細資訊。請記下與您的託管區域相關聯的名稱伺服器,因為我們會在下一個步驟中使用它們。
-
使用 dig 命令和託管區域的 Route 53 名稱伺服器之一,查詢服務執行個體的 DNS 記錄。
dig @
hosted-zone-nameserver
public-service.cloudmap-tutorial.com輸出
ANSWER SECTION
中的 應該會顯示您與服務相關聯的 IPv4 地址public-service
。;; ANSWER SECTION: public-service.cloudmap-tutorial.com. 300 IN A 192.168.2.1
-
使用 AWS CLI查詢第二個服務執行個體的屬性。
aws servicediscovery discover-instances --namespace-name cloudmap-tutorial.com --service-name backend-service --region
region
輸出會將您與服務相關聯的屬性顯示為鍵/值對。
{ "Instances": [ { "InstanceId": "second", "NamespaceName": "cloudmap-tutorial.com", "ServiceName": "backend-service", "HealthStatus": "UNKNOWN", "Attributes": { "service-name": "backend" } } ], "InstancesRevision": 71462688285136850 }
步驟 5:清除資源
完成教學課程後,您可以刪除 資源。 AWS Cloud Map 要求您以相反順序、服務執行個體、服務執行個體,最後是命名空間進行清理。 AWS Cloud Map 會在您完成這些步驟時代您清理 Route 53 資源。
登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/cloudmap/
開啟 AWS Cloud Map 主控台。 -
從命名空間清單中,選取
cloudmap-tutorial.com
命名空間,然後選擇檢視詳細資訊。 -
在命名空間詳細資訊頁面上,從服務清單中,選取
public-service
服務,然後選擇檢視詳細資訊。 -
在服務執行個體區段中,選取
first
執行個體,然後選擇取消註冊。 -
使用頁面頂端的導覽列,選取 cloudmap-tutorial.com 以導覽回命名空間詳細資訊頁面。
-
在命名空間詳細資訊頁面上,從服務清單中,選取公有服務,然後選擇刪除。
-
針對 重複步驟 3-6
backend-service
。 -
在左側導覽中,選擇命名空間。
-
選取
cloudmap-tutorial.com
命名空間,然後選擇刪除。注意
雖然 會代表您 AWS Cloud Map 清除 Route 53 資源,但您可以導覽至 Route 53 主控台,以確認
cloudmap-tutorial.com
託管區域已刪除。