- 分析›
- Amazon MSK›
- 常見問答集
Amazon Managed Streaming for Apache Kafka 常見問答集
一般問題
什麼是 Amazon Managed Streaming for Apache Kafka (Amazon MSK)?
Amazon MSK (英文簡稱 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 做為應用程式持續分析並回應串流資料的資料來源。
什麼是串流資料?
串流資料是一種小型記錄或事件 (記錄或事件通常為幾 KB 大小的記錄) 的持續串流,這類的記錄則由數千台機器、裝置、網站和應用程式所產生。串流資料包含各式各樣的資料,例如客戶使用您的行動或 Web 應用程式產生的日誌檔案、電子商務採購、遊戲中的玩家活動、來自社交網路、金融交易所、地理空間服務、安全日誌、指標的資訊,以及來自連網裝置或資料中心儀器的遙測結果。Amazon MSK 和 Amazon Kinesis Data Streams 之類的串流資料服務,都可以讓持續收集、處理及交付串流資料等工作變得輕鬆。
什麼是 Kafka Connect?
Kafka Connect 是 Apache Kafka 的開放原始碼元件,是一個用於將 Apache Kafka 與外部系統 (如資料庫、機碼值存放區、搜尋索引和檔案系統) 連接的架構。
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 Raft (KRaft) 來維護叢集中繼資料。
何時應該使用 Apache Kafka?
Apache Kafka 支援轉換、傳送及回應串流資料的即時應用程式,並可用於建置即時串流資料管道,以便在多個系統或應用程式之間可靠地傳送資料。
Amazon MSK 是否支援結構描述註冊?
是,Apache Kafka 用戶端可以免費使用 AWS Glue 結構描述登錄檔 (AWS Glue 的無伺服器功能)。請造訪 AWS Glue 結構描述登錄檔使用者指南來開始使用並了解更多資訊。 |
Amazon MSK 的運作方式為何?
Amazon MSK 可讓您輕鬆入門並在 AWS 上以高可用性和安全性執行 Apache Kafka。Amazon MSK 還提供與 AWS 服務的整合,從而讓您省去執行 Apache Kafka 叢集的營運開銷。Amazon MSK 讓您可以使用 Apache Kafka 開放原始碼版本,這項服務同時還能管理 Apache Kafka 叢集的設定、佈建、AWS 整合,以及持續維護工作。
僅需在主控台中執行幾個步驟,就可以建立 Amazon MSK 叢集。然後,Amazon MSK 會換掉運作狀態不佳的代理程式、自動複寫資料以提供高可用性、管理中繼資料節點、在必要時自動部署硬體修補程式、管理與 AWS 服務的整合、透過主控台顯示重要指標,並支援 Apache Kafka 版本升級,讓您可以充分利用 Apache Kafka 開放原始碼版本的改進功能。
資源
我如何建立自己的第一個 MSK 叢集?
您可以按照 Amazon MSK 入門指南設定叢集,並從中產生和取用資料。總之,您可以透過在 AWS 管理主控台中執行幾個步驟或使用 AWS SDK 建立自己的第一個叢集。首先,請進入 Amazon MSK 主控台,然後選取 AWS 區域,以在該區域中建立 MSK 叢集。為您的叢集選擇名稱、執行叢集所要搭配使用的虛擬私有雲端 (VPC),以及每個可用區域的子網路。如果您要建立已佈建的叢集,也可以選取代理程式執行個體類型和每個可用區域的代理程式數量。
叢集內有哪些資源?
佈建叢集包含代理程式執行個體和抽象化的中繼資料節點。無伺服器叢集是其自身的資源,會抽離所有基礎資源。
什麼是代理程式?
在 Apache Kafka 中,代理程式是組成 Apache Kafka 叢集的個別伺服器。這些伺服器負責儲存和複寫發佈到 Kafka 主題的資料,管理這些主題中的分割區,處理用戶端請求 (產生和取用訊息),以及彼此協調以維持 Kafka 部署的整體狀態。代理程式是啟用 Kafka 分散式、可擴展和容錯架構的核心元件。
我可以在 MSK 叢集上佈建哪些代理程式執行個體大小?
對於佈建叢集,您可以選擇 EC2 T3.small 執行個體或 EC2 M7g 和 M5 執行個體系列中的任何執行個體。對於無伺服器叢集,會完全抽象化代理程式。 MSK 還提供標準和快速代理程式類型。
我需要佈建和支付代理程式啟動磁碟區的費用嗎?
不用,您所佈建的所有代理程式都包括使用 Amazon MSK 服務所管理的啟動磁碟區儲存。
當我建立 Apache Kafka 叢集時,其包含的基礎資源 (如 Amazon EC2 執行個體) 會顯示在我的 Amazon EC2 主控台中嗎?
有些資源,例如彈性網路介面 (ENI),會顯示在您的 Amazon EC2 帳戶中。其他的 Amazon MSK 資源不會顯示在您的 Amazon EC2 帳戶中,因為這些是 Amazon MSK 服務所管理的資源。
我需要在 MSK 叢集中佈建哪些內容?
對於佈建叢集,您需要對每個建立的叢集佈建代理程式執行個體。在標準代理程式上,您將佈建儲存空間,並選擇性地為儲存磁碟區啟用佈建的儲存輸送量,從而可擴展 I/O,而無需佈建其他代理程式。使用快速代理程式,您無需佈建或管理儲存。對於所有叢集類型,您均無需佈建中繼資料節點,例如 Apache ZooKeeper 或 KRaft 節點,因為對於您建立的每個叢集,都會免費隨附這些資源。對於無伺服器叢集,您只建立叢集作為資源。
Amazon MSK 如何執行資料複寫作業?
Amazon MSK 採用 Apache Kafka 的領導者與追隨者複製方式,在代理程式之間複製資料。Amazon MSK 使用多可用區域複寫功能輕鬆部署叢集。藉助標準代理程式,您可以選擇依主題使用自訂複寫策略。快速代理程式透過始終在三個可用區域之間複寫您的資料來保證更高的可用性。使用指定的代理程式類型和複寫策略對領導者和追隨者代理程式進行部署和隔離。例如,假設您選取帶三個可用區域代理程式複寫策略的標準代理程式,並且每個可用區域叢集具有一個個代理程式,則 Amazon MSK 將會建立一個含有三個代理程式的叢集 (在一個區域的三個可用區域中都有一個代理程式),並且根據預設 (除非您選擇覆寫主題複寫係數),主題複寫係數也會是三。若要進一步了解用戶端容錯移轉期間發生的情況,請參閱我們的用戶端容錯移轉文件。
我是否可以變更預設代理程式組態,或將叢集組態上傳至 Amazon MSK?
是,Amazon MSK 可讓您建立自訂組態,並將其套用至全新和現有的叢集。快速代理程式可以保護更多組態免受次優值的影響,這些值可能會影響可用性和耐久性。由於 Amazon MSK 完全管理儲存層,因此快速代理程式還透過免除與儲存有關的組態來提供更簡單的體驗。若需自訂組態的詳細資訊,請參閱組態文件。
如何建立主題?
當您建立好 Apache Kafka 叢集後,即可使用 Apache Kafka API 來建立主題。所有主題和分割層級的動作與組態都是使用 Apache Kafka API 來執行。以下命令是使用 Apache Kafka API 建立主題的範例以及您叢集的組態詳細資訊:
<path-to-your-kafka-installation>/bin/kafka-topics.sh --create — bootstrap-server <BootstrapBrokerString> --replication-factor 3 --partitions 1 -- topic TopicName
Amazon MSK 有哪些部署選項?
Amazon MSK 為 Apache Kafka 叢集提供兩種部署選項:Amazon MSK Provisioned 和 Amazon MSK Serverless。MSK Provisioned 提供針對叢集的不同層級控制權,同時消除管理 Apache Kafka 叢集所帶來的大部分營運開銷。藉助 MSK Provisioned,您可以按代理程式單位擴展叢集。您可以從各種代理程式類型中進行選擇,包括標準和快速代理程式。相比之下,MSK Serverless 是一種叢集類型,可完全免除叢集擴展和管理任務。藉由 MSK Serverless,您可以執行應用程式,而無需佈建、設定和優化叢集,為串流和保留的資料磁碟區付費。Amazon MSK 還提供多種選項以簡化連線至您的 MSK 叢集。這些選項包括 Amazon MSK Connect、Amazon MSK Replicator 和其他原生 AWS 整合。如需詳細資訊,請參閱後續部分。
Amazon MSK Provisioned
什麼是 MSK Provisioned?
MSK Provisioned 是一種 MSK 叢集部署選項,可讓您手動設定和擴展 Apache Kafka 叢集。這可讓您對支援 Apache Kafka 環境的基礎設施進行各種層級的控制。
使用 MSK Provisioned,您可以選擇組成 Kafka 叢集的執行個體類型、標準代理程式類型上的儲存磁碟區以及代理程式節點數目。您也可以隨著資料處理需求的發展透過新增或移除代理程式來擴展叢集。這種靈活性可讓您根據特定工作負載要求最佳化叢集,無論是最大化輸送量、保留容量或其他效能特性。
除了基礎設施組態選項之外,MSK Provisioned 還提供企業級安全性、監控和營運優勢。這包括各種功能,例如 Apache Kafka 版本升級、透過加密和存取控制的內建安全性,以及與其他 AWS 服務 (如 Amazon CloudWatch) 進行監控整合。MSK Provisioned 提供兩種主要代理程式類型:標準和快速。
標準代理程式提供設定叢集的最大靈活性,快速代理程式則為執行高效能串流應用程式提供更高的彈性、輸送量、恢復能力和易用性。有關每種類型的更多詳細資訊,請參閱下面的子部分。如下資料表還顯示了標準代理程式和快遞代理程式之間的關鍵功能比較。
功能 | 標準 | 快速 |
儲存管理 | 客戶受管 (功能包括 EBS 儲存、分層儲存、佈建儲存輸送量、自動擴擴展、儲存容量提醒) | 完全 MSK 受管 |
支援的執行個體 | T3、M5、M7g | M7g |
調整大小和擴展考量 | 輸送量、連線、分割區、儲存 | 輸送量,連線、分割區 |
代理程式擴展 | 垂直和水平擴展 | 垂直和水平擴展 |
Kafka 版本 | 請參閱文件 | 從版本 3.6 開始 |
Apache Kafka 組態 | 更加可設定 | 主要是 MSK 受管,以提供更高的恢復能力 |
安全性 | 加密、私有/公有存取、身分驗證和授權 - IAM、SASL/SCRAM、mTLS、純文字、Kafka ACL | 加密、私有/公有存取、身分驗證和授權 - IAM、SASL/SCRAM、mTLS、純文字、Kafka ACL |
監控 | CloudWatch、開放監控 | CloudWatch、開放監控 |
Amazon MSK 是否支援 M7g 叢集?
是,Amazon MSK 現在支援 AWS Graviton 3 型的 M7g 執行個體,從 .large 到 .16xlarge 大小,以執行所有 Apache Kafka 工作負載。Graviton 執行個體具有與 Amazon MSK 相同的可用性和耐久性優勢,與對應的 M5 執行個體相比,成本降低高達 24%。與 Amazon MSK M5 執行個體相比,Graviton 執行個體提供超出 29% 的更高輸送量,讓客戶可以使用較少的代理程式或較小的執行個體執行 MSK 叢集。
標準代理程式
什麼是標準代理程式?
MSK Provisioned 的標準代理程式提供最大的靈活性來設定叢集效能。您可以從廣泛的叢集組態中進行選擇,以實現應用程式所需的可用性、耐久性、輸送量和延遲特性。您也可以佈建儲存容量,並根據需要增加該容量。Amazon MSK 會處理標準代理程式和已連接儲存資源的硬體維護,並且自動修復可能出現的硬體問題。
快速代理程式
什麼是快速代理程式?
藉助 MSK Provisioned 的快速代理程式,Apache Kafka 的管理工作得到簡化,在大規模執行時更加經濟高效,恢復能力得以提升,並且具有符合預期的低延遲。代理程式包括依用量付費的儲存,該儲存可自動擴展,且不需要調整大小、佈建或主動監控。根據所選取執行個體大小,與標準 Apache Kafka 代理程式相比,每個代理程式節點都可以提供每個代理程式高達 3 倍的輸送量,擴展速度提升高達 20 倍,並且復原速度加快 90%。快速代理程式已預先設定 Amazon MSK 的最佳實務預設值,並強制執行用戶端輸送量配額,以最大限度地減少客戶與 Kafka 後台操作之間的資源爭用。
快速代理程式有哪些主要優勢?
- 無需管理儲存:快速代理程式可避免佈建或管理任何儲存資源。您可以取得彈性、幾乎無限制、依用量付費和全受管的儲存。對於高輸送量使用案例,您不需要考慮運算執行個體與儲存磁碟區之間的互動以及相關聯的輸送量瓶頸。這些功能簡化叢集管理,並消除儲存管理營運負擔。
- 更快速擴展:快速代理程式可讓您相比於標準代理程式更快速地擴展叢集和移動分割區。當您需要橫向擴展叢集以處理即將到來的負載峰值或者縮減叢集以降低成本時,此功能就非常重要。請參閱有關擴展叢集、移除代理程式、重新指派分割區以及設定 LinkedIn 的 Cruise Control 以進行重新平衡的部分,以取得擴展叢集的更多詳細資訊。
- 更高的輸送量:相比於標準代理程式,快速代理程式提供每個代理程式最高 3 倍的輸送量。例如,您可以在每個 m7g.16xlarge 大小的快速代理程式上以高達 500 MBps 的速度安全地寫入資料,而同等標準代理程式上的速度則為 153.8 MBps (這兩個數字均假設為後台操作 (例如複寫和重新平衡) 配置充分的頻寬)。
- 設定以提供高恢復能力:快速代理程式會自動提供預先設定的各種最佳實務,以提高叢集的恢復能力。這些最佳實務包括針對關鍵 Apache Kafka 組態的防護機制、輸送量配額以及針對後台操作和計劃外修復的容量保留。藉助這些功能,可以更加安全、輕鬆地執行大規模 Apache Kafka 應用程式。請參閱有關快速代理程式組態和 Amazon MSK 快速代理程式配額的部分以取得更多詳細資訊。
- 沒有維護時段:快速代理程式沒有維護時段。Amazon MSK 會持續自動更新您的叢集硬體。請參閱 Amazon MSK 快速代理程式以取得更多詳細資訊。
如何使用快速代理程式最佳化成本?
快速代理程式提供每個代理程式更高的輸送量,因此您可以為相同工作負載建立具有較少代理程式的叢集。此外,叢集啟動並執行後,您就可以相比於標準代理程式更快速地監控叢集資源的使用和適當調整容量。因此,您可以佈建適合自身所需容量的資源,並更快地擴展以滿足需求的任何變更。
我可以將哪些 Apache Kafka API 和工具與快速代理程式搭配使用?
具有快速代理程式的叢集可與使用標準 Apache Kafka 用戶端的 Apache Kafka API 和工具搭配使用。
我需要為快速代理程式自訂哪些 Kafka 組態?
快速代理程式已預先設定 Amazon MSK 最佳實務預設值,這些預設值最佳化可用性和耐久性。您可以自訂其中一些組態,進一步微調叢集的效能。在《Amazon MSK 開發人員指南》中閱讀解有關快速代理程式組態的更多資訊。
快速代理程式可以使用哪些加密選項?
就像標準代理程式一樣,Amazon MSK 與 AWS Key Management Service (AWS KMS) 整合,為快速代理程式中的儲存提供透明的伺服器端加密。使用快速代理程式建立 MSK 叢集時,您可以指定希望 Amazon MSK 用於加密靜態資料的 AWS KMS 金鑰。如果您未指定 KMS 金鑰,Amazon MSK 會為您建立 AWS 受管金鑰,並代表您使用該金鑰。與標準代理程式一樣,Amazon MSK 還使用 TLS 加密快速代理程式的傳輸中資料。
Amazon MSK 功能在標準代理程式和快遞代理程式之間有什麼區別?
適用於標準代理程式的大多數 MSK Provisioned 特性和功能也適用於使用快速代理程式的叢集。一些差異包括:儲存管理、執行個體類型可用性和支援的版本。請參閱比較 MSK Provisioned 下標準代理程式和快速代理程式的資料表,其中突出了一些主要相似之處和差異。
我是否可以將現有的 Kafka 工作負載移轉至快速代理程式?
是,您可以使用 MirrorMaker 2 或 Amazon MSK Replicator 將 Kafka 叢集中的資料移轉至由快速代理程式組成的叢集,這些工具將叢集的資料和中繼資料複製到新叢集中。您可以在《Amazon MSK 開發人員指南》中進一步了解使用 MirrorMaker 2 和 MSK Replicator。
我應該如何在標準和快速 MSK Provisioned 代理程式類型之間進行選擇?
快速代理程式可以提高您的價格效能,提供更高的恢復能力並降低營運開銷,使其成為 MSK Provisioned 上所有 Apache Kafka 工作負載的理想選擇。但是,如果您想控制更多代理程式的組態和設定,則可以選擇標準代理程式類型。使用標準代理程式,您可以自訂更廣泛的 Kafka 組態,包括複寫因子、日誌檔案的大小和領導人選舉政策,從而讓您更加靈活地設定叢集。
Amazon 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 KMS 核發的服務受管金鑰對傳輸中的所有流量和所有靜態資料進行加密。用戶端使用 AWS PrivateLink 透過私有連線連接至 MSK Serverless,而無需將您的流量暴露給公有網際網路。此外,MSK Serverless 還提供 AWS Identity and Access Management (IAM) 存取控制,您可以用來管理對 Apache Kafka 資源 (例如主題) 的用戶端身分驗證和用戶端授權。
生產者和取用者如何存取我的 MSK Serverless 叢集?
建立 MSK Serverless 叢集時,您提供託管叢集用戶端的一或多個 Amazon Virtual Private Cloud (Amazon VPC) 的子網路。託管在任意這些 Amazon VPC 中的用戶端可以使用其引導代理程式字串連線至 MSK Serverless 叢集。
MSK Serverless 在哪些區域中可用?
有關最新的區域可用性,請參閱 Amazon MSK 定價頁面。
MSK Serverless 支援哪些身分驗證類型?
MSK Serverless 目前支援使用 IAM (Identity Access Management) 進行用戶端身分驗證和授權。您的用戶端可以擔任 IAM 角色進行身分驗證,您可以使用關聯的 IAM 政策強制執行存取控制。
如何處理我的 MSK Serverless 叢集中的資料?
您可以使用任何 Apache Kafka 相容工具來處理 MSK Serverless 叢集主題中的資料。MSK Serverless 與 Amazon Managed Service for Apache Flink 整合以進行可設定狀態的串流處理,及與 AWS Lambda 整合以進行事件處理。您還可以使用 Apache Kafka Connect 接收連接器將資料傳送至任何所需的目的地。
MSK Serverless 如何確保高可用性?
在您建立分割區時,MSK Serverless 會建立它的兩個複本並將它們放在不同的可用區域中。此外,MSK Serverless 會自動偵測和復原失敗的後端資源以維護高可用性。
移轉至 Amazon MSK
是否可以將現有 Apache Kafka 叢集中的資料移轉至 Amazon MSK?
是,您可以使用第三方或開放原始碼工具 (例如:由 Apache Kafka 提供支援的 MirrorMaker2),將叢集中的資料複寫到 MSK 叢集。請查閱此 Amazon MSK 移轉實驗室,協助您規劃移轉。
聯網
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 叢集之間的專用連線。但是,如果您為 MSK 叢集開啟公有存取權並使用公有引導代理程式字串連線至您的 MSK 叢集,則連線雖然經過身分驗證、授權和加密,但不再視為私有。我們建議您將叢集的安全群組設定為具有允許來自受信任 IP 地址的公有存取的入站 TCP 規則,並在您開啟公有存取權時盡可能限制這些規則。
如何從 AWS 網路內部和叢集的 Amazon VPC 外部連線至我的 Amazon MSK 叢集?
您可以透過為執行 Apache Kafka 2.7.1 版或更新版本的 MSK 叢集開啟多 VPC 私有連線功能,從與 MSK 叢集 Amazon VPC 不同的任何 VPC 或 AWS 帳戶連線至 MSK 叢集。您只能在針對任何支援的身分驗證方案 (IAM 身分驗證、SASL SCRAM 和 MTL 身分驗證) 建立叢集之後開啟私有連線。您應該將用戶端設定為使用 Amazon MSK 受管 VPC 連線 (使用 PrivateLink 技術啟用私有連線) 私有連線至叢集。若要進一步了解如何設定私有連線,請參閱從 AWS 內存取文件。
加密
我是否可以對 MSK 叢集中的資料加密?
是,Amazon MSK 使用 Amazon Elastic Block Store (Amazon EBS) 伺服器端加密和 AWS KMS 金鑰來加密儲存磁碟區。
MSK 叢集內代理程式之間的資料是否會進行傳輸中加密?
是,依預設,新叢集會透過 TLS 針對代理程式間的通訊啟用傳輸中加密。對於佈建叢集,建立叢集時,您可以選擇不使用傳輸中加密。
是否會對 Apache Kafka 用戶端與 Amazon MSK 之間的資料進行傳輸中加密?
是,依預設,僅針對從 AWS CLI 或 AWS 管理主控台建立的叢集對 TLS 設定傳輸中加密。用戶端需要其他組態才能使用 TLS 加密與叢集通訊。對於佈建叢集,您可以選取 TLS/純文字或純文字設定,來變更預設加密設定。閱讀有關 Amazon MSK 加密的更多資訊。
移動 Amazon MSK 叢集內代理程式與中繼資料節點之間的資料時,是否會對資料進行傳輸時加密?
是,MSK 叢集支援 Kafka 代理程式中繼資料節點之間的 TLS 傳輸中加密。
存取管理
我如何控制叢集身分驗證和 Apache Kafka API 授權?
對於無伺服器叢集,您可以使用 IAM 存取控制進行身分驗證和授權。對於佈建的叢集,您有下列選項:
- 同時用於 AuthN/AuthZ 的 IAM 存取控制 (建議)
- 用於 AuthN 的 TLS 憑證身分驗證和用於 AuthZ 的存取控制清單
- 用於 AuthN 的 SASL/SCRAM 和用於 AuthZ 的存取控制清單
Amazon MSK 建議使用 IAM 存取控制。這是最容易的方式,且由於預設為最低權限存取,因此,是最安全的選項。
Amazon MSK 如何執行授權作業?
如果您使用 IAM 存取控制,Amazon MSK 使用您編寫的專長及其自己的授權方來授權動作。如果您使用 TLS 憑證驗證或 SASL/SCRAM,Apache Kafka 使用存取控制清單 (ACL) 進行授權。若要啟用 ACL,您必須使用 TLS 憑證或 SASL/SCRAM 啟用用戶端身分驗證。
如何同時驗證和授權用戶端?
如果您使用 IAM 存取控制l,Amazon MSK 將為您驗證和授權,而無需進行任何額外的設定。如果使用 TLS 驗證,您可以使用用戶端 TLS 憑證的 Dname 作為 ACL 的主體,授權用戶端請求。如果使用 SASL/SCRAM,則可以使用者名稱作為 ACL 的主體,授權用戶端請求。
我如何控制服務 API 動作?
您可以使用 IAM 控制服務 API 動作。
是否可以為現有叢集啟用 IAM 存取控制?
是,您可以從 AWS 管理主控台或透過使用 UpdateSecurity API 為現有叢集啟用 IAM 存取控制。
是否可以在 Amazon MSK 之外使用 IAM 存取控制?
否,IAM 存取控制僅可用於 MSK 叢集。
如何在與 Amazon MSK 帳戶不同的 AWS 帳戶中向 Kafka 用戶端提供跨帳戶存取許可,以私有連線至 MSK 叢集?
您可以將叢集政策連接至 Amazon MSK 叢集,以提供跨帳戶 Kafka 用戶端許可,從而設定與 Amazon MSK 叢集的私有連線。使用 IAM 用戶端身分驗證時,您也可以使用叢集政策精細地定義連線用戶端的 Kafka 資料平面許可。若要進一步了解叢集政策,請參閱叢集政策文件。
監控、指標、記錄和標記
如何監控叢集或主題的效能?
您可以利用 Amazon MSK 主控台、Amazon CloudWatch 主控台來監控叢集的效能,也可以利用 Prometheus (一種開放原始碼監控解決方案) 進行開放式監控存取 JMX 和主機指標來監控。
不同 CloudWatch 監控層級的費用是多少?
使用 CloudWatch 監控叢集的費用取決於監控層級和 Apache Kafka 叢集的大小。CloudWatch 每月按指標收費,並包括 AWS 免費方案。如需詳細資訊,請參閱 Amazon CloudWatch 定價。如需每個監控層級公開的指標數詳細資訊,請參閱 Amazon MSK 監控文件。
哪些監控工具與 Open Monitoring with Prometheus 相容?
設計從 Prometheus 匯出程式讀取資料的工具與開放式監控相容,例如 Datadog、Lenses、New Relic、Sumo Logic 或 Prometheus 伺服器。如需開放式監控的詳細資訊,請參閱 Amazon MSK 開放式監控文件。
如何監控用戶端的運作狀態和效能?
您可以使用所用 Apache Kafka 版本支援的任何用戶端監控功能。
我是否可以標記 Amazon MSK 資源?
是,您可以從 AWS CLI 或 AWS 管理主控台標記 Amazon MSK 叢集。
如何監控消費者滯後?
主題層級的消費者滯後指標包含在 Amazon MSK 發佈到 CloudWatch 的所有叢集預設指標集之中。無需其他設定即可取得這些指標。
將消費者滯後指標發佈到 CloudWatch 需要多少費用?
主題層級指標包含在預設的 Amazon MSK 指標集中,這些指標是免費的。分割層級指標根據 Amazon CloudWatch 定價收費。
如何存取 Apache Kafka 代理程式日誌?
您可以為佈建叢集啟用代理程式日誌交付。您可以將代理程式日誌傳遞至 Amazon CloudWatch Logs、Amazon Simple Storage Service (Amazon S3) 和 Amazon Data Firehose。Firehose 在其他目的地中支援 Amazon OpenSearch Service。若要了解如何啟用此功能,請參閱 Amazon MSK 日誌記錄文件。若要了解有關定價的資訊,請參閱 Amazon CloudWatch Logs 和 Amazon Data Firehose 定價頁面。
代理程式日誌的記錄層級是什麼?
Amazon MSK 為佈建叢集中的所有代理程式提供 INFO 層級的日誌。
是否可以記錄 Apache Kafka 資源 API 的使用,如建立主題?
是,如果您使用 IAM 存取控制,則 Apache Kafka 資源 API 的使用會記錄至 AWS CloudTrail。
中繼資料管理
什麼是 Apache ZooKeeper?
取自 https://zookeeper.apache.org 網站:「Apache ZooKeeper 是一種集中式服務,可讓您維護組態資訊、名稱,提供分散式同步,以及提供群組服務。所有這類服務以某種形式由分散式應用程式所使用」,其中包括 Apache Kafka。
Amazon MSK 是否會使用 Apache ZooKeeper?
是,Amazon MSK 使用 Apache ZooKeeper 進行中繼資料管理。此外,從 Apache Kafka 3.7 版開始,您可在 ZooKeeper 模式或 KRaft 模式中建立叢集。使用 KRaft 模式建立的叢集會使用 KRaft 控制器管理中繼資料,而不是 ZooKeeper 節點。
什麼是 Apache KRaft?
Apache KRaft 是一種共識協定,可將 Kafka 叢集中的中繼資料管理,從外部 Apache ZooKeeper 節點轉移至 Kafka 內的控制器群組。此變更允許存放中繼資料並複寫為 Kafka 代理程式內的主題,從而加速傳播中繼資料。 如需進一步了解,請參閱我們的 Apache KRaft 文件。
相比於 ZooKeeper 模式,在 Amazon MSK 上使用 KRaft 模式是否需要任何 API 變更?
在 Amazon MSK 上使用 KRaft 模式無需做出任何 API 變更。不過,如果您的用戶端今天仍使用 --zookeeper 連線字串,則應更新用戶端以使用 --bootstrap-server 連線字串,來連線至您的叢集並執行管理員動作。在 Apache Kafka 2.5 版中,--zookeeper 旗標已停用,並從 Kafka 3.0 以上版本移除。因此,我們建議您使用最新的 Apache Kafka 用戶端版本和 --bootstrap-server 連線字串。
我有連線至 ZooKeeper 的工具;這些工具如何在沒有 ZooKeeper 連線的情況下執行 KRaft 叢集?
您應檢查使用的任何工具,是否能夠在沒有 ZooKeeper 連線的情況下使用 Kafka 管理員 API。例如,請參閱我們有關針對 KRaft 模式下的叢集使用 Cruise Control 的更新文件。Cruise Control 還發佈了在沒有 ZooKeeper 連線的情況下執行 Kafka 的步驟。
相較於以 ZooKeeper 為基礎的叢集,在以 KRaft 為基礎的叢集上,每個代理程式是否可託管更多分割區?
在以 KRaft 和 ZooKeeper 為基礎的叢集上,每個代理程式的分割區數量相同。不過,KRaft 允許您在叢集中佈建更多代理程式,讓每個叢集可託管更多分割區。
整合
Amazon MSK 整合了哪些 AWS 服務?
AWS MSK 與下列 AWS 服務整合:
- Amazon S3 (用於使用 Firehose 以無程式碼的方式將資料從Amazon MSK 交付至 Amazon S3)
- Amazon VPC (用於網路隔離與安全)
- Amazon CloudWatch (用於提供指標)
- AWS KMS (用於儲存磁碟區加密)
- IAM (用於身分驗證和授權 Apache Kafka 與服務 API)
- AWS Lambda (用於 Amazon MSK 事件來源)
- AWS IoT Core (用於 IoT 事件來源)
- AWS Glue Schema Registry (用於控制 Apache Kafka 應用程式使用的結構描述的演進)
- AWS CloudTrail (用於 AWS API 日誌)
- AWS Certificate Manager (用於用戶端 TLS 身分驗證的私有 CA)
- AWS CloudFormation (用於使用程式碼描述和佈建 Amazon MSK 叢集)
- Amazon Managed Service for Apache Flink (用於全受管 Apache Flink 應用程式,可處理串流資料)
- Amazon Managed Service for Apache Flink Studio (用於在 Apache Kafka 上互動式串流 SQL)
- AWS Secrets Manager (用於作為 SASL/SCRAM 身分驗證的用戶端憑證)
Amazon MSK Serverless 與下列 AWS 服務整合:
- Amazon S3 (用於使用 Firehose 以無程式碼的方式將資料從 MSK 交付至 Amazon S3)
- Amazon VPC (用於網路隔離與安全)
- Amazon CloudWatch (用於提供指標)
- IAM (用於身分驗證和授權 Apache Kafka 與服務 API)
- AWS Glue Schema Registry (用於控制 Apache Kafka 應用程式使用的結構描述的演進)
- AWS CloudTrail (用於 AWS API 日誌)
- AWS PrivateLink (用於私有連線)
複寫
什麼是 Amazon MSK Replicator?
Amazon MSK Replicator 是 Amazon MSK 的一項功能,可協助客戶在不同 AWS 區域 (跨區域複寫) 或同一 AWS 區域 (同一區域複寫) 的 MSK 叢集中可靠地複寫資料,而無需編寫程式碼或管理基礎設施。您可以使用跨區域複寫來建置高可用性、可容錯的多區域串流應用程式,以提高恢復能力。您也可以使用跨區域複寫為不同地理區域的取用者提供更低延遲的存取。您可以使用同一區域複寫將資料從一個叢集分發到許多叢集,以便與您的合作夥伴和團隊共用資料。您還可以使用 同一區域複寫,將多個叢集中的資料彙總到一個以進行分析。
如何使用 MSK Replicator?
若要在一對來源與目標 MSK 叢集之間設定複寫,您需要在目的地區域中建立 Replicator。若要建立 Replicator,請指定詳細資訊,其中包括來源與目標 MSK 叢集的 Amazon Resource Name (ARN),以及 MSK Replicator 可用於存取叢集的 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 叢集進行複寫。
如何監控複寫?
您可以使用目的地區域中的 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 叢集的區域之間的網路距離、來源與目標叢集的輸送容量,以及來源與目標叢集上的分割區數目。
是否可以與 MSK Replicator 保持相同的主題名稱?
否,MSK Replicator 會在目標叢集中建立新主題,並將自動產生的前綴新增至主題名稱。例如,MSK Replicator 將主題中的資料從來源叢集複寫到目標叢集中名為 <sourceKafkaClusterAlias>.topic 的新主題。MSK Replicator 之所以這樣做,是為了區分來源叢集中包含複寫資料的主題與目標叢集中的其他主題,以避免資料在叢集之間循環複寫。您可以在 Amazon MSK 主控台,使用 DescribeReplicator API 或 Replicator 詳細資訊頁面,在 sourceKafkaClusterAlias 欄位下的目標叢集中找到新增至主題名稱的字首。
是否可以複寫來源叢集上的現有資料?
是。依預設,當您建立新的 Replicator 時,它會開始從來源叢集的串流尖端 (最新偏移) 複寫資料。或者,如果要複寫現有資料,您可設定新的 Replicator,以開始從來源叢集主題分割區中的最早偏移複寫資料。
複寫是否會導致來源叢集上取用者限流?
由於 MSK Replicator 充當來源叢集的取用者,因此複寫可能會導致其他取用者在來源叢集上遭到限流。這取決於來源叢集擁有多少讀取容量,以及正在複寫的資料輸送量。建議您在計算所需容量時,針對來源和目標叢集佈建相同的容量,並考慮複寫輸送量。您還可以在來源和目標叢集上為 Replicator 設定 Kafka 配額,以控制 Replicator 可使用的容量。
是否可以在寫入目標叢集之前壓縮資料?
是,您可以在 None、GZIP、Snappy、LZ4 和 ZSTD 之間建立 Replicator 時,指定您選擇的壓縮編解碼器。
是否可以在寫入目標叢集之前壓縮資料?
是,您可以在 None、GZIP、Snappy、LZ4 和 ZSTD 之間建立 Replicator 時,指定您選擇的壓縮編解碼器。
擴展
如何向上擴展我叢集中的儲存?
您可以使用 AWS 管理主控台或 AWS CLI,向上擴展標准代理程式上所執行佈建叢集中的儲存。您還可以使用 AWS 管理主控台,或透過使用 AWS CLI 或 API 建立 AWS Application Auto Scaling 政策,來建立自動擴展儲存政策。標準代理程式上的分層儲存可讓您在叢集上以虛擬方式儲存無限資料,而無須新增代理程式進行儲存。藉助快速代理程式,您無需佈建或管理儲存,並且可以存取幾乎無限制的儲存。在無伺服器叢集中,儲存會根據用量無縫擴展。
分層儲存如何運作?
Apache Kafka 將資料儲存在稱為日誌區段的檔案中。每個區段完成後,根據在叢集或主題層級設定的大小,將其複製到低成本儲存方案。資料在效能最佳化儲存體中以指定的保留時間或大小進行保存,然後會被刪除。低成本儲存具有單獨的時間和大小限制設定,這比主要儲存方案時間更長。如果用戶端從存放在低成本方案中的區段請求資料,代理程式將從中讀取資料,且提供資料的方式與從主儲存中提供資料相同。
我是否可以擴展現有叢集中的代理數量?
是,您可選擇擴大或縮小佈建 MSK 叢集的規模,或增加其代理程式數量。
我可以在現有叢集中擴展代理程式大小嗎?
是,您可以選擇擴展至佈建 MSK 叢集上更小或更大的代理程式類型。
我如何跨代理程式平衡分割區?
您可以使用 Cruise Control 來自動重新平衡分割區,以管理輸入/輸出熱度。如需詳細資訊,請參閱 Cruise Control 文件。您也可以使用 Kafka Admin API kafka-reassign-partitions.sh 來跨代理程式重新指派分割區。在無伺服器叢集中,Amazon MSK 會自動平衡分割區。
定價和可用性
Amazon MSK 採用何種定價方式?
定價取決於您建立的資源。您可以前往 Amazon MSK 定價進一步了解。
我是否要針對資料複寫產生的資料傳輸支付費用?
否,服務內含叢集內的資料傳輸,不會另外收費。
哪些區域可以使用 Amazon MSK?
如需在其中提供 Amazon MSK 的區域的資訊,請造訪 AWS 區域資料表。
資料傳輸的定價方式為何?
藉由佈建叢集,您會針對傳入和傳出 MSK 叢集的資料支付標準 AWS 資料傳輸費。在同一區域的叢集內進行的資料傳輸將不會收費,包括不同代理程式之間的資料傳輸,以及代理程式與中繼資料管理節點之間的資料傳輸。
藉由無伺服器叢集,您會為傳輸至另一個區域或從另一個區域傳輸來的資料和傳出至公有網際網路的資料支付標準 AWS 資料傳輸費。
Amazon MSK 是否提供預留執行個體定價?
否,目前未提供。
合規
哪些合規計劃在 Amazon MSK 的適用範圍內?
服務水準協議
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 頁面。