一般

問:什麼是 Amazon MSK?
Amazon Managed Streaming for Apache Kafka (Amazon MSK) 是一項 AWS 串流資料服務,可用來管理 Apache Kafka 的基礎設施和運作,讓開發人員和 DevOps 管理階層不必成為操作 Apache Kafka 方面的專家,也能輕鬆在 AWS 上執行 Apache Kafka 應用程式和 Kafka Connect 連接器。Amazon MSK 會運作、維護和擴展 Apache Kafka 叢集,提供立即可用的企業級安全功能,並且內建有 AWS 整合功能,可以加速串流資料應用程式的開發。若要開始使用,您可以將現有的 Apache Kafka 工作負載和 Kafka Connect 遷移到 Amazon MSK 之中,當然從頭新建也可以,這只需要按幾下滑鼠即可。就叢集內流量來說,不會產生數據傳輸費用,無需簽訂合約也沒有預付費用。使用多少資源就付多少費用。
 
問:什麼是 Apache Kafka?
Apache Kafka 是開放原始碼、高效能、容錯且具可擴展性的平台,用於建置即時串流資料管道和應用程式。Apache Kafka 是串流資料存放區,會將產生串流資料到資料存放區中的應用程式 (即所謂的生產者) 與消耗資料存放區中串流資料的應用程式 (即所謂的取用者) 分離開來。許多組織使用 Apache Kafka 做為應用程式持續分析並回應串流資料的資料來源。 進一步了解 Apache Kafka
 
問:什麼是 Kafka Connect?
Kafka Connect 是 Apache Kafka 的開放原始碼元件,是一個用於將 Apache Kafka 與外部系統 (如資料庫、機碼值存放區、搜尋索引和檔案系統) 連接的架構。
 
問:什麼是串流資料?
串流資料是一種小型記錄或事件 (記錄或事件通常為幾 KB 大小的記錄) 的持續串流,這類的記錄則由數千台機器、裝置、網站和應用程式所產生。串流資料包含各式各樣的資料,例如客戶使用您的行動或 Web 應用程式產生的日誌檔、電子商務採購、遊戲中的玩家活動、來自社交網路、金融交易所、地理空間服務、安全日誌、指標的資訊,以及來自連網裝置或資料中心儀器的遙測結果。Amazon MSK 和 Amazon Kinesis Data Streams 之類的串流資料服務,都可以讓持續收集、處理及交付串流資料等工作變得輕鬆。 進一步了解串流資料
 
問:Apache Kafka 有哪些主要功能?
Apache Kafka 有三大功能:
  • Apache Kafka 以容錯方式存放串流資料,在生產者和消費者之間提供緩衝。它將事件存放為一連串的記錄,並且會保留記錄產生的順序。
  • Apache Kafka 可讓許多資料生產者 (例如:網站、物聯網 (IoT) 裝置、Amazon Elastic Compute Cloud (Amazon EC2) 執行個體) 持續發佈串流資料,並使用 Apache Kafka 主題將這些資料分類。多個資料取用者 (例如:機器學習應用程式、AWS Lambda 函數或微型服務) 會以自己的速率讀取這些主題,這類似於訊息佇列或企業傳訊系統。
  • 資料取用者會以先進先出為原則,處理來自 Apache Kafka 主題的資料,並保留資料產生的順序。

問:Apache Kafka 的關鍵概念是什麼?
Apache Kafka 負責存放主題中的記錄。資料產生者將記錄寫入主題,而取用者則讀取主題中的記錄。Apache Kafka 中的每一筆記錄都是由索引鍵、值和時間戳記所組成,有時還包含標頭中繼資料。Apache Kafka 會在多個節點 (稱為代理程式) 之間分割主題並複寫這些分割區。Apache Kafka 會在一個或多個代理程式上執行一個叢集,代理程式可置於多個 AWS 可用區域中,以建立一個高可用叢集。Apache Kafka 靠 Apache ZooKeeper 協調叢集任務,並且可以維持資源與 Apache Kafka 叢集互動所需的狀態。
 
問:何時應該使用 Apache Kafka?
Apache Kafka 支援轉換、傳送及回應串流資料的即時應用程式,並可用於建置即時串流資料管道,以便在多個系統或應用程式之間可靠地傳送資料。
 
問:Amazon MSK 的運作方式為何?
Amazon MSK 可讓您輕鬆入門並在 AWS 上以高可用性和安全性執行開放原始碼版本的 Apache Kafka。Amazon MSK 還與 AWS 服務的整合,從而讓您省去執行 Apache Kafka 叢集的營運開銷。Amazon MSK 讓您可以使用 Apache Kafka 開放原始碼版本,這項服務同時還能管理 Apache Kafka 叢集的設定、佈建、AWS 整合,以及持續維護工作。

只要在主控台按幾下滑鼠,就可以建立 Amazon MSK 叢集。然後,Amazon MSK 會換掉運作狀態不佳的代理程式、自動複寫資料以提供高可用性、管理 Apache ZooKeeper 節點、在必要時自動部署硬體修補程式、管理與 AWS 服務的整合、透過主控台顯示重要指標,並支援 Apache Kafka 版本升級,讓您可以充分利用 Apache Kafka 開放原始碼版本的改進功能。
 
問:Amazon MSK 支援哪些 Apache Kafka 版本?
對於支援的 Kafka 版本,請參閱 Amazon MSK 文件
 
問:Apache Kafka API 與 Amazon MSK 相容嗎?
是的,Amazon MSK 原生支援所有的資料層面和管理 API。
 
問:Amazon MSK 是否支援 Apache Kafka AdminClient?
是。
 
問:Amazon MSK 是否支援結構描述註冊?
是。Apache Kafka 用戶端可以免費使用 AWS Glue 結構描述登錄檔 (AWS Glue 的無伺服器功能)。請參閱結構描述登錄檔 使用者文件,以開始使用和進一步了解。
 
問:如何開始使用 M7g 叢集?
Amazon MSK 現在支援 Graviton 3 型的 M7g 執行個體,從「large」到「16xlarge」大小,以執行所有 Kafka 工作負載。Graviton 執行個體具有與 MSK 相同的可用性和耐久性優勢,與對應的 M5 執行個體相比,成本降低高達 24%。與 MSK 的 M5 執行個體相比,Graviton 執行個體提供超出 29% 的更高輸送量,讓客戶可以使用較少的代理程式或較小的執行個體執行 MSK 叢集。

MSK Serverless

問:什麼是 MSK Serverless?
MSK Serverless 是適用於 Amazon MSK 的叢集類型,讓您輕鬆執行 Apache Kafka 叢集,而無需管理運算和儲存容量。藉由 MSK Serverless,您可以執行應用程式,而無需佈建、設定和優化叢集,為串流和保留的資料磁碟區付費。

問:MSK Serverless 是否會自動平衡叢集內的分割區?
是。MSK Serverless 全面管理分割區,包括監控分割區,以及跨叢集將其移至均衡負載。

問:MSK Serverless 支援多大的資料輸送容量?
MSK Serverless 為每個叢集提供最高 200 Mbps 的寫入容量和 400 Mbps 的讀取容量。此外,為了確保叢集內所有分割區具有充足的輸送量可用性,MSK Serverless 可為每個分割區配置最高 5 Mbps 的即時寫入容量和 10 Mbps 的即時讀取容量。

問:MSK Serverless 提供什麼安全功能?
MSK Serverless 使用 AWS Key Management Service (KMS) 核發的服務受管金鑰對傳輸中的所有流量和所有靜態資料進行加密。用戶端使用 AWS PrivateLink 透過私有連線連接至 MSK Serverless,而無需將您的流量暴露給公有網際網路。此外,MSK Serverless 還提供 IAM Access Control,您可以用來管理對 Apache Kafka 資源 (例如主題) 的用戶端身分驗證和用戶端授權。

問:生產者和取用者如何存取我的 MSK Serverless 叢集?
建立 MSK Serverless 叢集時,您提供託管叢集用戶端的一或多個 Amazon Virtual Private Cloud (VPC) 的子網路。託管在任意這些 VPC 中的用戶端可以使用其代理程式自舉字串連線至 MSK Serverless 叢集。

問:MSK Serverless 在哪個區域中可用?
有關最新的區域可用性,請參閱 MSK 定價頁面

問:MSK Serverless 支援哪些身分驗證類型?
MSK Serverless 目前支援 AWS IAM 進行用戶端身分驗證和授權。您的用戶端可以擔任 AWS IAM 角色進行身分驗證,您可以使用關聯的 IAM 政策強制執行存取控制。

問:如何處理我的 MSK Serverless 叢集中的資料?
您可以使用任何 Apache Kafka 相容工具來處理 MSK Serverless 叢集主題中的資料。MSK Serverless 與 Amazon Managed Service for Apache Flink 整合以進行可設定狀態的串流處理,及與 AWS Lambda 整合以進行事件處理。您還可以使用 Kafka Connect 接收連接器將資料傳送至任何所需的目的地。

問:MSK Serverless 如何確保高可用性?
在您建立分割區時,MSK Serverless 會建立它的 2 個複本並將它們放在不同的可用區域中。此外,MSK Serverless 會自動偵測和復原失敗的後端資源以維護高可用性。

資料的產生與取用

問:是否可以使用 Apache Kafka API 來傳入或傳出 Apache Kafka 中的資料?
可以,Amazon MSK 支援原生 Apache Kafka 生產者和取用者 API。當用戶端開始使用 Amazon MSK 內的叢集時,您不需要調整應用程式的程式碼。

問:是否可以將 Apache Kafka Connect、Apache Kafka Streams 或 Apache Kafka 的任何其他生態系統元件搭配 Amazon MSK 使用?
是,任何運用 Apache Kafka 生產者和取用者 API、以及 Apache Kafka AdminClient 的元件,您都可以使用。用於將 .jar 檔案上傳至 Apache Kafka 叢集的工具,目前與 Amazon MSK 不相容,這些工具包括 Confluent Control Center、Confluent Auto Data Balancer 和 Uber uReplicator

遷移至 Amazon MSK

問:是否可以將現有 Apache Kafka 叢集中的資料遷移至 Amazon MSK?
可以,您可以使用第三方工具或開放原始碼工具 (例如:由 Apache Kafka 提供支援的 MirrorMaker),將叢集中的資料複寫到 Amazon MSK 叢集。以下是 Amazon MSK 遷移實驗室,可協助您完成遷移。

版本升級

問:是否支援 Apache Kafka 版本升級?
是,Amazon MSK 支援全受管就地 Apache Kafka 版本升級,用於佈建叢集。要進一步了解升級 Apache Kafka 版本和高可用性最佳實務,請參閱版本升級文件

叢集

問:我如何建立自己的第一個 Amazon MSK 叢集?
在 AWS 管理主控台按幾下或使用 AWS 軟體開發套件即可建立您的第一個叢集。首先,請進入 Amazon MSK 主控台,然後選取 AWS 區域,以在該地區中建立 Amazon MSK 叢集。為您的叢集選擇名稱、執行叢集所要搭配使用的 Virtual Private Cloud (VPC),以及每個可用區域的子網路。如果正在建立佈建叢集,您還可以挑選代理程式執行個體類型、每個可用區域的代理程式數量和每個代理程式的儲存。
 
問:叢集內有哪些資源?
佈建叢集包含代理程式執行個體、佈建儲存和抽象化 Apache ZooKeeper 節點。無伺服器叢集其自身的資源,會抽離所有基礎資源。
 
問:在 Amazon MSK 叢集內,可以佈建哪些類型的代理程式執行個體?
對於佈建叢集,您可以選擇 EC2 T3.small 或 EC2 M7g 和 M5 執行個體系列中的任何執行個體。對於無伺服器叢集,會完全抽象化代理程式。
 
問︰Amazon MSK 是否提供預留執行個體定價?
否,目前不可以。
 
問:我需要佈建和支付代理程式啟動磁碟區的費用嗎?
不用,您所佈建的所有代理程式都包括使用 Amazon MSK 服務所管理的啟動磁碟區儲存。
 
問:當我建立 Apache Kafka 叢集時,其包含的基礎資源 (如 Amazon EC2 執行個體) 會顯示在我的 EC2 五控台中嗎?
有些資源,像是彈性網路介面 (ENI) 會顯示在您的 Amazon EC2 帳戶中。其他的 Amazon MSK 資源不會顯示在您的 EC2 帳戶中,因為這些是 Amazon MSK 服務所管理的資源。
 
問:我必須在 Amazon MSK 叢集中佈建什麼呢?
對於佈建叢集,每次建立叢集時,您都必須佈建代理程式執行個體和代理程式儲存。您可以選擇性地為儲存磁碟區佈建儲存輸送量,這可用於無縫擴展輸入/輸出,而無需佈建額外的代理程式。您無需佈建 Apache ZooKeeper 節點,因為每次建立叢集時,都會免費隨附這類資源。對於無伺服器叢集,您只建立叢集作為資源。
 
問:什麼是叢集的預設代理程式組態?
除非另有指定,否則 Amazon MSK 會使用 Apache Kafka 開放原始碼版本所指定的相同預設值。兩種叢集類型的預設設定在 此處記錄。
問:佈建代理程式時,是否不用將它們平均分散在可用區域中 (例如,將 3 個佈建在 us-east-1a,將 2 個佈建在 us-east-1b,將 1 個佈建在 us-east-1c 中)?
否,Amazon MSK 實施代理程式數量必須平均分布在叢集所有可用區域的最佳做法。

問:Amazon MSK 如何執行資料複寫作業?
Amazon MSK 採用 Apache Kafka 的領導者與追隨者複製方式,在代理程式之間複製資料。Amazon MSK 讓您輕鬆部署含異地同步備份複寫的叢集,並提供依主題使用自訂複寫策略的選擇。根據預設,針對每一個複寫選項,都會使用指定的複寫策略,對領導者與追隨者代理程式進行部署和隔離。例如,假設您選取三個 AZ 代理程式複寫策略,而每個可用區域叢集具有 1 個代理程式,則 Amazon MSK 將會建立一個含有三個代理程式的叢集 (在一個區域的三個可用區域中都有一個代理程式),並且根據預設 (除非您選擇覆寫主題複寫係數),主題複寫係數也會是三。

問:我是否可以變更預設代理程式組態,或將叢集組態上傳至 Amazon MSK?
是,Amazon MSK 可讓您建立自訂組態,並將其套用至全新和現有的叢集。若需自訂組態的詳細資訊,請參閱組態說明

問:我能夠自訂哪些組態內容?
您可以自訂的組態內容記載於此處

問:新主題的預設組態為何?
Amazon MSK 會使用 Apache Kafka 的預設組態,除非此處另有指定。

主題

問:如何建立主題?
當您建立好 Apache Kafka 叢集後,即可使用 Apache Kafka API 來建立主題。所有主題和分割層級的動作與組態都是使用 Apache Kafka API 來執行。以下命令是使用 Apache Kafka API 建立主題的範例以及您叢集的組態詳細資訊:

bin/kafka-topics.sh --create —bootstrap-server <BootstrapBrokerString> --replication-factor 3 --partitions 1 --topic TopicName

聯網

問:Amazon MSK 是否在 Amazon VPC 中執行?
是,Amazon MSK 一律在 Amazon MSK 服務所管理的 Amazon VPC 中執行。Amazon MSK 資源會提供給您在設定叢集時所選取的自有 Amazon VPC、子網路和安全群組使用。VPC 的 IP 地址會透過彈性網路介面 (ENI) 連接到您的 Amazon MSK 資源,而且依預設所有網路流量都不會離開 AWS 網路,也無法從網際網路存取。

問:是否可以讓 VPC 中的用戶端存取 Amazon MSK 叢集中的代理程式?
您 VPC 中的用戶端將可以透過您帳戶中顯示的 ENI 存取您叢集中的代理程式。ENI 上的安全群組會指定代理程式允許之輸入和輸出流量的來源與類型。

問:是否可以透過公有網際網路連線到我的叢集?
是,Amazon MSK 提供了一個選項,可以透過網際網路安全地連接至執行 Apache Kafka 2.6.0 或更新版本的 Amazon MSK 叢集的代理程式。透過啟用公有存取權,私有 Amazon Virtual Private Cloud (VPC) 外部的授權用戶端可以將加密資料串流入和串流出特定的 Amazon MSK 叢集。您可以在建立叢集後為 MSK 叢集啟用公有存取權,無需額外成本,但需支付適用於叢集輸入和輸出的標準 AWS 資料傳輸成本。若要進一步了解如何開啟公有存取權,請參閱公有存取文件

問:我的用戶端與 Amazon MSK 叢集之間的連線是否為私有?
依預設,從 Amazon MSK 叢集產生並取用資料的唯一方式,是透過 VPC 中的用戶端與 Amazon MSK 叢集之間的專用連線。但是,如果您為 Amazon MSK 叢集開啟公有存取權並使用公有 bootstrap-brokers 字串連接至您的 MSK 叢集,則連接雖然經過身分驗證、授權和加密,但不再視為私有。我們建議您將叢集的安全群組設定為具有允許來自受信任 IP 地址的公有存取的入站 TCP 規則,並在您開啟公有存取權時盡可能限制這些規則。

連接至 VPC

問:如何透過網際網路連線到 Amazon MSK 叢集?
最簡單的方法是透過網際網路開啟與執行 Apache Kafka 2.6.0 或更新版本的 MSK 叢集代理程式的公有連線。出於安全考慮,在建立 MSK 叢集時,您無法開啟公有存取權。但是,您可以更新現有叢集以使其可公開存取。您也可以建立一個新叢集,然後進行更新以使其可公開存取。若要進一步了解如何開啟公有存取權,請參閱公有存取文件

問:如何從 AWS 網路內部和叢集的 Amazon VPC 外部連接至我的 Amazon MSK 叢集?
您可以透過為執行 Apache Kafka 2.7.1 版或更新版本的 MSK 叢集開啟多 VPC 私有連線功能,從與 MSK 叢集不同的任何 VPC 或 AWS 帳戶連線至 MSK 叢集。您只能在針對任何支援的身分驗證方案 (IAM 身分驗證、SASL SCRAM 和 MTL 身分驗證) 建立叢集之後開啟私有連線。您應該將用戶端設定為使用 Amazon MSK 受管 VPC 連線 (使用 AWS PrivateLink 技術啟用私有連線) 私有連線至叢集。若要進一步了解如何設定私有連線,請參閱從 AWS 內存取文件。

加密

問:我可以對 Amazon MSK 叢集中的資料加密嗎?
可以,Amazon MSK 使用 Amazon Elastic Block Store (Amazon EBS) 伺服器端加密AWS Key Management Service (AWS KMS) 金鑰來加密保護儲存磁碟區。

問:Amazon MSK 叢集內的代理程式之間資料是否會在傳輸時加密?
是,依據預設,新叢集會透過 TLS 針對代理程式間的通訊啟用傳輸時加密。對於佈建叢集,建立叢集時,您可以選擇不使用傳輸時加密。

問:我可以對 Apache Kafka 用戶端與 Amazon MSK 服務之間的資料進行傳輸時加密嗎?
是,依據預設,僅針對從 CLI 或 AWS 管理主控台建立的叢集對 TLS 設定傳輸時加密。用戶端需要其他組態才能使用 TLS 加密與叢集通訊。對於佈建叢集,您可以選取 TLS/純文字或純文字設定,來變更預設加密設定。閱讀其他資訊︰關於 MSK 加密

問:移動 Amazon MSK 叢集內代理程式與 Apache ZooKeeper 節點之間的資料時,是否會對資料進行傳輸時加密?
是,執行 Apache Kafka 2.5.1 或更高版本的 Amazon MSK 叢集,支援 Kafka 代理程式與 ZooKeeper 節點之間的 TLS 傳輸中加密。

存取管理

問:我如何控制叢集身分驗證和 Apache Kafka API 授權?
對於無伺服器叢集,您可以使用 IAM Access Control 進行身分驗證和授權。對於佈建叢集,您有三個選項:1) AWS Identity and Access Management (IAM) Access Control,適用於 AuthN/Z (建議), 2) 適用於 AuthN 的 TLS 憑證身分驗證 (CA),適用於 AuthZ 的存取控制清單,以及 3) 適用於 AuthN 的 SASL/SCRAM 和適用於 AuthZ 的存取控制清單。Amazon MSK 建議使用 IAM Access Control。這是最容易的方式,且由於預設為最低權限存取,因此,是最安全的選項。

問:Amazon MSK 如何執行授權作業?
如果您使用 IAM Access Control,Amazon MSK 使用您編寫的專長及其自己的授權方來授權動作。如果您使用 TLS 憑證驗證或 SASL/SCRAM,Apache Kafka 使用存取控制清單 (ACL) 進行授權。若要啟用 ACL,您必須使用 TLS 憑證或 SASL/SCRAM 啟用用戶端身份驗證。

問:如何同時驗證和授權用戶端?
如果您使用 IAM Access Control,Amazon MSK 將為您驗證和授權,而無需進行任何額外的設定。如果使用 TLS 驗證,您可以使用用戶端 TLS 憑證的 Dname 作為 ACL 的主體,授權用戶端請求。如果使用 SASL/SCRAM,則可以使用者名稱作為 ACL 的主體,授權用戶端請求。

問:我如何控制服務 API 動作?
您可以使用 AWS Identity and Access Management (IAM) 控制服務 API 操作。

問:是否可以為現有叢集啟用 IAM Access Control?
可以,您可以從 AWS 主控台或透過使用 UpdateSecurity API 為現有叢集啟用 IAM Access Control。

問:是否可以在 Amazon MSK 之外使用 IAM Access Control?
不可以,IAM Access Control 僅可用於 Amazon MSK 叢集。

問:如何在與 Amazon MSK 不同的 AWS 帳戶中向 Kafka 用戶端提供跨帳戶存取許可,以私有連線至 Amazon MSK 叢集?
您可以將叢集政策連接至 Amazon MSK 叢集,以提供跨帳戶 Kafka 用戶端許可,從而設定與 Amazon MSK 叢集的私有連線。使用 IAM 用戶端身分驗證時,您也可以使用叢集政策精細地定義連線用戶端的 Kafka 資料平面許可。若要進一步了解叢集政策,請參閱叢集政策文件。

監控、指標、記錄和標記

問:如何監控叢集或主題的效能?
您可以利用 Amazon MSK 主控台、Amazon CloudWatch 主控台來監控叢集的效能,也可以利用 Prometheus (一種開放原始碼監控解決方案) 進行開放式監控存取 JMX 和主機指標來監控。

問:不同 CloudWatch 監控等級的費用是多少?
使用 Amazon CloudWatch 監控叢集的費用取決於監控層級和 Apache Kafka 叢集的大小。Amazon CloudWatch 按月按指標收費,包括免費方案;如需詳細資訊,請參閱 Amazon CloudWatch 定價。如需每個監控層級公開的指標數詳細資訊,請參閱 Amazon MSK 監控文件

問:哪些監控工具與 Open Monitoring with Prometheus 相容?
設計從 Prometheus 匯出程式讀取資料的工具與開放式監控相容,例如: DatadogLensesNew RelicSumo Logic 或 Prometheus 伺服器。如需開放式監控的詳細資訊,請參閱 Amazon MSK 開放式監控文件

問:如何監控用戶端的運作狀態和效能?
您可以使用所用 Apache Kafka 版本支援的任何用戶端監控功能。

問:我可以標記 Amazon MSK 資源嗎?
是,您可以從 AWS Command Line Interface (AWS CLI) 或主控台標記 Amazon MSK 叢集。

問:如何監控消費者滯後?
主題層級的消費者滯後指標包含在 Amazon MSK 發佈到 Amazon CloudWatch 的所有叢集預設指標集之中。無需其他設定即可取得這些指標。對於佈建叢集,您也可以取得分割層級取用者滯後指標 (分割區尺寸)。為了這樣做,請在您的叢集上啟用增強型監控 (PER_PARTITION_PER_TOPIC)。或者,您可以在叢集上啟用「開放式監控」,並使用 Prometheus 伺服器從叢集中的代理程式捕獲分割層級指標。消費者滯後指標和其他 Kafka 指標一樣,可在連接埠 11001 取得。

問:將消費者滯後指標發佈到 Amazon CloudWatch 需要多少費用?
主題層級指標包含在預設的 Amazon MSK 指標集中,這些指標是免費的。分割層級指標按 Amazon CloudWatch 定價收費。

問:如何存取 Apache Kafka 代理程式日誌?
您可以為佈建叢集啟用代理程式日誌交付。您可以將代理程式日誌傳遞至 Amazon CloudWatch Logs、Amazon Simple Storage Service (S3) 和 Amazon Kinesis Data Firehose。Kinesis Data Firehose 在其他目的地中支援 Amazon OpenSearch Service。若要了解如何啟用此功能,請參閱 Amazon MSK 日誌記錄文件。若要了解有關定價的資訊,請參閱 CloudWatch LogsKinesis Data Firehose 定價頁面。

問:代理程式日誌的記錄層級是什麼?
Amazon MSK 為佈建叢集中的所有代理程式提供 INFO 層級的日誌。

問:如何存取 Apache ZooKeeper 日誌?
您可以透過支援工單來請求 Apache ZooKeeper 日誌。

問:是否可以記錄 Apache Kafka 資源 API 的使用,例如,建立主題?
是,如果您使用 IAM Access Control,則 Apache Kafka 資源 API 的使用會記錄至 AWS CloudTrail。

Apache ZooKeeper

問:什麼是 Apache ZooKeeper?
取自 https://zookeeper.apache.org 網站:「Apache ZooKeeper 是一種集中式服務,用於維護組態資訊、命名、提供分散式同步,以及提供群組服務。所有這類服務以某種形式由分散式應用程式所使用」,其中包括 Apache Kafka。

問:Amazon MSK 是否會使用 Apache ZooKeeper?
是,Amazon MSK 會使用 Apache ZooKeeper 並且會在每個叢集中管理 Apache ZooKeeper 做為 Amazon MSK 服務的一部分。每個叢集均免費隨附 Apache ZooKeeper 節點。

整合

問:Amazon MSK 整合了哪些 AWS 服務?
Amazon MSK 整合了以下項目:

 

Amazon MSK Serverless 整合了:
  • Amazon S3,使用 Kinesis Data Firehose 以簡單且無程式碼的方式將資料從 MSK 交付到 Amazon S3。
  • Amazon VPC (用於網路隔離與安全)
  • Amazon CloudWatch (用於提供指標)
  • Amazon IAM (用於身分驗證和授權 Apache Kafka 和服務 API)
  • AWS Glue Schema Registry (用於控制 Apache Kafka 應用程式使用的結構描述的演進)
  • AWS CloudTrail (用於 AWS API 日誌)
  • AWS PrivateLink (用於私有連線)

擴展

問:如何可以為我叢集中的儲存擴充規模?
您可以使用 AWS 管理主控台或 AWS CLI,縱向擴展佈建叢集中的儲存。您還可以使用分層儲存,在叢集上以虛擬方式儲存無限資料,而無須心臟代理程式進行儲存。在無伺服器叢集中,儲存會根據用量無縫擴展。
 
問:分層儲存如何運作?
Apache Kafka 將資料儲存在稱為日誌區段的檔案中。每個區段完成後,根據在叢集或主題層級設定的大小,將其複製到低成本儲存方案。資料在效能最佳化儲存體中以指定的保留時間或大小進行保存,然後會被刪除。低成本儲存具有單獨的時間和大小限制設定,這會比主要儲存方案時間更長。如果用戶端從存放在低成本方案中的區段請求資料,代理程式將從中讀取資料,且提供資料的方式與從主儲存中提供資料相同。

問:如何在叢集中自動擴展儲存?
您可以使用 AWS 管理主控台,或透過使用 AWS CLI 或 API 建立 AWS Application Auto Scaling 政策,來建立自動調整儲存規模政策。
 
問:我是否可以擴展現有叢集中的代理程式數量?
是。您可以水平擴展佈建 Amazon MSK 叢集的規模,或增加其代理程式數量。

問:我可以在現有叢集中擴展代理程式大小嗎?
是。您可以選擇擴展至佈建 Amazon MSK 叢集上更小或更大的代理程式類型。

問:我如何跨代理程式平衡分割區?
您可以使用 Cruise Control 來自動重新平衡分割區,以管理輸入/輸出熱度。如需詳細資訊,請參閱 Cruise Control 文件。您也可以使用 Kafka Admin API kafka-reassign-partitions.sh 來跨代理程式重新指派分割區。在無伺服器叢集中,Amazon MSK 會自動平衡分割區。

定價和可用性

問:Amazon MSK 採用何種定價方式?
定價取決於您建立的資源。您可以造訪定價頁面進一步了解。

問:我是否要針對資料複寫產生的資料傳輸支付費用?
否,服務內含所有叢集內的資料傳輸,不會另外收費。

問:哪些 AWS 區域提供 Amazon MSK?
此處記錄了 Amazon MSK 區域可用性。

問:資料傳輸的定價方式為何?
藉由佈建叢集,您會針對傳入和傳出 Amazon MSK 叢集的資料支付標準 AWS 數據傳輸費。在同一區域的叢集內進行的資料傳輸將不會收費,包括不同代理程式之間的資料傳輸,以及代理程式與 Apache ZooKeeper 節點之間的資料傳輸。

藉由無伺服器叢集,您會為傳輸至另一個區域或從另一個區域傳輸來的資料和傳出至公有網際網路的資料支付標準 AWS 數據傳輸費。

合規

問:哪些合規計劃在 Amazon MSK 的適用範圍內?
Amazon MSK 符合或適用於以下計劃:

  • HIPAA 合格
  • PCI
  • ISO
  • SOC 1、2、3

如需 AWS 服務和合規計劃的完整清單,請參閱合規計劃的 AWS 服務範圍

服務水準協議

問:Amazon MSK SLA 能保證什麼?
Amazon MSK SLA 保證 Amazon MSK (包括 Serverless 和 MSK Connect) 每個月正常執行時間百分比至少為 99.9%。
 
問:如何知道自己是否符合 SLA 服務抵扣的資格?
如果 Amazon MSK 上的異地同步備份部署在任何每月帳單週期的每月正常執行時間百分比低於 99.9%,您即符合 Amazon MSK SLA 下 Amazon MSK 的 SLA 抵扣資格。
 
如需 SLA 所有條款與條件的完整詳細資訊,以及如何提交索賠的詳細資訊,請參閱 Amazon MSK SLA 詳細資訊頁面

複寫

問︰什麼是 Amazon MSK Replicator?
Amazon MSK Replicator 是 Amazon MSK 的一項功能,可讓客戶在不同 AWS 區域 (跨區域複寫) 或同一 AWS 區域 (同一區域複寫) 的 Amazon MSK 叢集中可靠地複寫資料,而無需編寫程式碼或管理基礎設施。您可以使用跨區域複寫 (CRR) 來建置高可用性、可容錯的多區域串流應用程式,以提高彈性。您可以使用 CRR 在不同的地理區域提供低延遲的資料取用。您可以使用 SRR 將資料從一個叢集分配到許多叢集,以便與您的合作夥伴和團隊共用資料。您還可以使用 SRR 將多個叢集的資料彙總到一個以進行分析。

問:如何使用 MSK Replicator?
若要在一對來源與目標 MSK 叢集之間設定複寫,您需要在目的地 AWS 區域中建立 Replicator。若要建立 Replicator,請指定詳細資訊,其中包括來源與目標 MSK 叢集的 Amazon Resource Name (ARN),以及 MSK Replicator 可用於存取叢集的 AWS Identity and Access Management (IAM) 角色。如果目標 MSK 叢集尚未存在,則需要建立目標 MSK 叢集。

問:MSK Replicator 支援哪種類型的 Kafka 叢集?
MSK Replicator 僅支援跨 MSK 叢集複寫。支援佈建和無伺服器類型的 MSK 叢集。您還可以使用 MSK Replicator,從佈建類型移至無伺服器類型,反之亦然。不支援其他 Kafka 叢集。

問:是否可以指定要複寫哪些主題?
是,您可以在建立 Replicator 時使用允許和拒絕清單,來指定要複寫哪些主題。

問:MSK Replicator 是否會複寫主題設定和取用者群組偏移?
是。MSK Replicator 會自動複寫必要的 Kafka 中繼資料,例如主題組態、存取控制清單 (ACL) 和取用者群組偏移,以便取用的應用程式在容錯移轉後順暢地繼續處理。如果您只想要複寫資料,可以選擇關閉其中一個或多個設定。您還可以在建立 Replicator 時使用允許或拒絕清單,來指定要複寫哪些使用者群組。

問:當我的輸入輸送量變更時,是否需要擴展複寫?
否,MSK Replicator 會自動部署、佈建和調整基礎複寫基礎設施,以支援您的輸入輸送量變更。

問:是否可在不同的 AWS 帳戶中跨 MSK 叢集複寫資料?
否,MSK Replicator 僅支援在同一 AWS 帳戶中跨 MSK 叢集進行複寫。

問:如何監控複寫?
您可以使用目的地區域中的 Amazon CloudWatch,針對每個 Replicator,在主題和彙總層級檢視「ReplicationLatency、
MessageLag 和 ReplicatorThroughput」的指標,無需額外費用。指標會顯示在 “AWS/Kafka” 命名空間的 ReplicatorName 下。您還可以查看 “ReplicatorFailure、AuthError 和 ThrottleTime” 指標,以檢查 Replicator 是否遇到任何問題。

問:如何使用複寫來提高跨區域串流應用程式的彈性?
您可以使用 MSK Replicator 來設定主動-主動或主動-被動叢集拓樸,以提高跨區域 Kafka 應用程式的彈性。在主動-主動設定中,兩個 MSK 叢集都會主動提供讀取和寫入。相較之下,在主動-被動設定中,一次只有一個 MSK 叢集主動提供串流資料,而另一個叢集則處於待機狀態。

問:是否可以使用 MSK Replicator 將資料從一個叢集複寫至多個叢集,或將資料從多個叢集複寫至一個叢集?
是。您只需針對每個來源和目標叢集對建立不同的 Replicator。

問:MSK Replicator 如何連線來源和目標 MSK 叢集?
MSK Replicator 使用 IAM 存取控制,來連線至您的來源和目標叢集。您需要針對 IAM 存取控制,開啟來源與目標 MSK 叢集,以便建立 Replicator。同時,您可以繼續針對用戶端使用其他驗證方法,包括 SASL/SCRAM 和 MTL,因為 Amazon MSK 同時支援多種驗證方法。

問:使用 MSK Replicator 應預期多長時間的複寫延遲?
MSK Replicator 會以非同步方式複寫資料。複寫延遲會因眾多因素而有所差異,包括 MSK 叢集的 AWS 區域之間的網路距離、來源與目標叢集的輸送容量,以及來源與目標叢集上的分割區數目

問:是否可以與 MSK Replicator 保持相同的主題名稱?
否,MSK Replicator 會在目標叢集中建立新主題,並將自動產生的前綴新增至主題名稱。例如,MSK Replicator 將 “topic” 中的資料從來源叢集複寫到目標叢集中名為 “<sourceKafkaClusterAlias>.topic” 的新主題。MSK Replicator 之所以這樣做,是為了區分來源叢集中包含複寫資料的主題與目標叢集中的其他主題,並避免資料在叢集之間循環複寫。您可以在 MSK 主控台,使用 DescribeReplicator API 或 Replicator 詳細資訊頁面,在 “sourceKafkaClusterAlias” 欄位下的目標叢集中找到新增至主題名稱的前綴。

問:是否可以複寫來源叢集上的現有資料?
否。當您建立新的 Replicator 時,它會開始從來源叢集的串流尖端 (最新偏移) 複寫資料。

問:複寫是否會導致來源叢集上取用者限流?
由於 MSK Replicator 充當來源叢集的取用者,因此複寫可能會導致其他取用者在來源叢集上遭到限流。這取決於來源叢集擁有多少讀取容量,以及正在複寫的資料輸送量。建議您在計算所需容量時,針對來源和目標叢集佈建相同的容量,並考慮複寫輸送量。您還可以在來源和目標叢集上為 Replicator 設定 Kafka 配額,以控制 Replicator 可使用的容量。

問:是否可以在寫入目標叢集之前壓縮資料?
是,您可以在 None、GZIP、Snappy、LZ4 和 ZSTD 之間建立 Replicator 時,指定您選擇的壓縮編解碼器。

開始使用 Amazon MSK

計算您的成本
計算您的成本

造訪 Amazon MSK 定價頁面

Read the documentation
檢閱入門指南

在此逐步指南中了解如何在 Amazon MSK 設定 Apache Kafka 叢集。

執行 Apache Kafka 叢集
執行 Apache Kafka 叢集

開始在 Amazon MSK 上執行 Apache Kafka 叢集。登入 Amazon MSK 主控台