

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 端對端設定自訂網域名稱
<a name="custom-domain-setup"></a>

本主題會逐步解說自訂網域名稱的叢集端組態。網路層 (Network Load Balancer、DNS 和 TLS 憑證） 是您擁有的先決條件，詳細資訊請參閱 AWS 大數據部落格上的[設定 Amazon MSK 叢集的自訂網域名稱](https://aws.amazon.com/blogs/big-data/configure-a-custom-domain-name-for-your-amazon-msk-cluster/)。建立聯網後，下列步驟會涵蓋叢集端設定。

**套用組態之前，請先驗證聯網**  
當您套用 時`custom.advertised.listeners`，您的自訂網域名稱會取代覆寫接聽程式的預設地址。您的聯網層必須就地並經過驗證，才能套用組態。如果用戶端無法解析自訂網域，則會失去連線。

## 步驟 1：將自訂網域新增至您的 Amazon MSK 組態
<a name="custom-domain-setup-step1"></a>

建立或更新包含 `custom.advertised.listeners` 屬性的 Amazon MSK 組態，以符合您在 Network Load Balancer 上佈建的主機名稱和連接埠。對於連接埠為 9001–9003 的 Network Load Balancer 前方的三個代理程式 IAM 叢集，請將 屬性放入檔案中。

```
custom.advertised.listeners=CLIENT_IAM://b-{broker_id}.example.com:9000+{broker_id}
```

然後建立組態，將檔案做為伺服器屬性傳遞。

```
aws kafka create-configuration \
    --name "custom-domain-iam" \
    --description "Custom advertised listeners for CLIENT_IAM" \
    --server-properties fileb://custom-domain-config.txt
```

使用 `fileb://`（而非 `file://`)，讓 將檔案 AWS CLI 讀取為位元組，並對檔案進行 base64 編碼。由於`{broker_id}`大括號，內嵌傳遞值是脆弱的。將`{broker_id}`常值保留在 檔案中，因為 Amazon MSK 會在套用時解析每個代理程式。回應會傳回`LatestRevision.Revision`您在下一個步驟中使用的組態 `Arn`和 。

## 步驟 2：套用組態
<a name="custom-domain-setup-step2"></a>

使用 主控台`UpdateClusterConfiguration`、 AWS CLI AWS CloudFormation、 AWS CDK 或 Terraform，將組態套用至您的叢集。這是您已用於代理程式組態變更的相同工作流程。

```
aws kafka update-cluster-configuration \
    --cluster-arn {{your-cluster-arn}} \
    --configuration-info arn={{configuration-arn}},revision={{revision}} \
    --current-version {{current-cluster-version}}
```

使用 `DescribeCluster`操作來尋找叢集的目前版本。叢集版本不是簡單的整數。

Amazon MSK 會在套用任何內容之前同步驗證組態，因此格式不正確的值永遠不會到達您的代理程式。Amazon MSK 拒絕 HTTP 400 錯誤的無效組態。如需錯誤範例，請參閱 [自訂網域名稱組態錯誤](troubleshooting.md#troubleshoot-custom-domain-name-errors)。修正回報的問題並重新套用。

## 步驟 3：追蹤推展
<a name="custom-domain-setup-step3"></a>

```
aws kafka describe-cluster-operation-v2 \
    --cluster-operation-arn {{operation-arn}}
```

接受組態後，Amazon MSK 會透過滾動重新啟動來套用組態。等待操作報告 `UPDATE_COMPLETE`。如果報告 `UPDATE_FAILED`，代理程式就無法套用變更。推展停止在該代理程式，其餘代理程式會保留其先前的組態，而且您可以修正組態並重新套用以復原。

## 步驟 4：驗證
<a name="custom-domain-setup-step4"></a>

透過列出使用接聽程式身分驗證設定的用戶端主題，確認用戶端可以透過自訂網域連線。

如果您可以透過自訂網域端點列出主題，用戶端會透過您的自訂網域成功連線。如果 操作已回報`UPDATE_COMPLETE`但用戶端無法連線，則叢集端組態是正確的，但您的聯網層可能需要注意。請檢查以下內容：
+ **網路路徑**：確認用戶端正在使用的代理程式和連接埠存在 Network Load Balancer 接聽程式、目標群組和安全群組規則，以及可以從用戶端網路存取 Network Load Balancer。
+ **DNS 解析**：確認自訂網域從 Apache Kafka 用戶端執行的每個網路解析至 Network Load Balancer。
+ **憑證**：確認 Network Load Balancer 的 TLS 憑證涵蓋已解析的代理程式主機名稱 （透過通用名稱或主體替代名稱），以及用戶端信任 CA （私有 CA 的根和中繼）。

## 擴展和代理程式替換
<a name="custom-domain-setup-scaling"></a>

當您擴展叢集或在自動修復期間取代代理程式時，Amazon MSK 會自動將組態套用至新的代理程式。Amazon MSK `{broker_id}`會解析代理程式的 ID，叢集端不需要手動步驟。

**注意**  
新增任何新代理程式對應的 Network Load Balancer 接聽程式、目標群組和 DNS 記錄。網路層不會自動擴展。

## 移除自訂網域
<a name="custom-domain-setup-remove"></a>

若要還原至預設 Amazon MSK 產生的地址，請從 Amazon MSK 組態中移除 `custom.advertised.listeners` 屬性，並使用 套用更新後的組態`UpdateClusterConfiguration`。Amazon MSK 會執行滾動重新啟動，代理程式會還原為公告其原始地址。在移除自訂網域組態之前，請確定您的用戶端可以到達原始 Amazon MSK 產生的地址。