一般
Amazon Managed Streaming for Apache Kafka (Amazon MSK) 是一項 AWS 串流資料服務,可用來管理 Apache Kafka 的基礎設施和運作,讓開發人員和 DevOps 管理階層不必成為操作 Apache Kafka 方面的專家,也能輕鬆在 AWS 上執行 Apache Kafka 應用程式和 Apache Kafka Connect 連接器。Amazon MSK 會運作、維護和擴展 Apache Kafka 叢集,提供立即可用的企業級安全功能,並且內建有 AWS 整合功能,可以加速串流資料應用程式的開發。若要開始使用,您可以將現有的 Apache Kafka 工作負載和 Apache Kafka Connect 遷移到 Amazon MSK 之中,當然從頭新建也可以,這只需要按幾下滑鼠即可。就叢集內流量來說,不會產生數據傳輸費用,無需簽訂合約也沒有預付費用。使用多少資源就付多少費用。
Apache Kafka 是開放原始碼、高效能、容錯且具可擴展性的平台,用於建置即時串流資料管道和應用程式。Apache Kafka 是串流資料存放區,會將產生串流資料到資料存放區中的應用程式 (即所謂的生產者) 與消耗資料存放區中串流資料的應用程式 (即所謂的取用者) 分離開來。許多組織使用 Apache Kafka 做為應用程式持續分析並回應串流資料的資料來源。 進一步了解 Apache Kafka。
Apache Kafka Connect 是 Apache Kafka 的開放原始碼元件,是一個用於將 Apache Kafka 與外部系統 (如資料庫、機碼值存放區、搜尋索引和檔案系統) 連接的架構。
串流資料是一種小型記錄或事件 (記錄或事件通常為幾 KB 大小的記錄) 的持續串流,這類的記錄則由數千台機器、裝置、網站和應用程式所產生。串流資料包含各式各樣的資料,例如客戶使用您的行動或 Web 應用程式產生的日誌檔、電子商務採購、遊戲中的玩家活動、來自社交網路、金融交易所、地理空間服務、安全日誌、指標的資訊,以及來自連網裝置或資料中心儀器的遙測結果。Amazon MSK 和 Amazon Kinesis Data Streams 之類的串流資料服務,都可以讓持續收集、處理及交付串流資料等工作變得輕鬆。 進一步了解串流資料。
- Apache Kafka 以容錯方式存放串流資料,在生產者和消費者之間提供緩衝。它將事件存放為一連串的記錄,並且會保留記錄產生的順序。
- Apache Kafka 可讓許多資料生產者 (例如:網站、物聯網 (IoT) 裝置、Amazon Elastic Compute Cloud (Amazon EC2) 執行個體) 持續發佈串流資料,並使用 Apache Kafka 主題將這些資料分類。多個資料取用者 (例如:機器學習應用程式、AWS Lambda 函數或微型服務) 會以自己的速率讀取這些主題,這類似於訊息佇列或企業傳訊系統。
- 資料取用者會以先進先出為原則,處理來自 Apache Kafka 主題的資料,並保留資料產生的順序。
Apache Kafka 支援轉換、傳送及回應串流資料的即時應用程式,並可用於建置即時串流資料管道,以便在多個系統或應用程式之間可靠地傳送資料。
只要在主控台按幾下滑鼠,就可以建立 Amazon MSK 叢集。然後,Amazon MSK 會換掉運作狀態不佳的代理程式、自動複寫資料以提供高可用性、管理 Apache ZooKeeper 節點、在必要時自動部署硬體修補程式、管理與 AWS 服務的整合、透過主控台顯示重要指標,並支援 Apache Kafka 版本升級,讓您可以充分利用 Apache Kafka 開放原始碼版本的改進功能。
是的,Amazon MSK 原生支援所有的資料層面和管理 API。
是。
是。Apache Kafka 用戶端可以免費使用 AWS Glue 結構描述登錄檔 (AWS Glue 的無伺服器功能)。請參閱結構描述登錄檔 使用者文件,以開始使用和進一步了解。
Amazon MSK 現在支援 Graviton 3 型的 M7g 執行個體,從「large」到「16xlarge」大小,以執行所有 Apache 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 整合以進行事件處理。您還可以使用 Apache 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 提供支援的 MirrorMaker),將叢集中的資料複寫到 Amazon MSK 叢集。以下是 Amazon MSK 遷移實驗室,可協助您完成遷移。
版本升級
問:是否支援 Apache Kafka 版本升級?
是,Amazon MSK 支援全受管就地 Apache Kafka 版本升級,用於佈建叢集。要進一步了解升級 Apache Kafka 版本和高可用性最佳實務,請參閱版本升級文件。
叢集
在 AWS 管理主控台按幾下或使用 AWS 軟體開發套件即可建立您的第一個叢集。首先,請進入 Amazon MSK 主控台,然後選取 AWS 區域,以在該地區中建立 Amazon MSK 叢集。為您的叢集選擇名稱、執行叢集所要搭配使用的 Virtual Private Cloud (VPC),以及每個可用區域的子網路。如果正在建立佈建叢集,您還可以挑選代理程式執行個體類型、每個可用區域的代理程式數量和每個代理程式的儲存。
佈建叢集包含代理程式執行個體、佈建儲存和抽象化 Apache ZooKeeper 節點。無伺服器叢集其自身的資源,會抽離所有基礎資源。
對於佈建叢集,您可以選擇 EC2 T3.small 或 EC2 M7g 和 M5 執行個體系列中的任何執行個體。對於無伺服器叢集,會完全抽象化代理程式。
否,目前不可以。
不用,您所佈建的所有代理程式都包括使用 Amazon MSK 服務所管理的啟動磁碟區儲存。
有些資源,像是彈性網路介面 (ENI) 會顯示在您的 Amazon EC2 帳戶中。其他的 Amazon MSK 資源不會顯示在您的 EC2 帳戶中,因為這些是 Amazon MSK 服務所管理的資源。
對於佈建叢集,每次建立叢集時,您都必須佈建代理程式執行個體和代理程式儲存。您可以選擇性地為儲存磁碟區佈建儲存輸送量,這可用於無縫擴展輸入/輸出,而無需佈建額外的代理程式。您無需佈建 Apache ZooKeeper 節點,因為每次建立叢集時,都會免費隨附這類資源。對於無伺服器叢集,您只建立叢集作為資源。
除非另有指定,否則 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 叢集,支援 Apache 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 帳戶中,向 Apache Kafka 用戶端提供跨帳户存取權,以私下連線至 Amazon MSK 叢集?
您可以將叢集政策連接至 Amazon MSK 叢集,以提供跨帳戶 Apache Kafka 用戶端許可,從而設定與 Amazon MSK 叢集的私有連線。使用 IAM 用戶端身分驗證時,您也可以使用叢集政策精細地定義連線用戶端的 Apache Kafka 資料平面許可。若要進一步了解叢集政策,請參閱叢集政策文件。
監控、指標、記錄和標記
您可以利用 Amazon MSK 主控台、Amazon CloudWatch 主控台來監控叢集的效能,也可以利用 Prometheus (一種開放原始碼監控解決方案) 進行開放式監控存取 JMX 和主機指標來監控。
問:不同 CloudWatch 監控等級的費用是多少?
使用 Amazon CloudWatch 監控叢集的費用取決於監控層級和 Apache Kafka 叢集的大小。Amazon CloudWatch 按月按指標收費,包括免費方案;如需詳細資訊,請參閱 Amazon CloudWatch 定價。如需每個監控層級公開的指標數詳細資訊,請參閱 Amazon MSK 監控文件。
問:哪些監控工具與 Open Monitoring with Prometheus 相容?
設計從 Prometheus 匯出程式讀取資料的工具與開放式監控相容,例如: Datadog、 Lenses、 New Relic、 Sumo 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 伺服器從叢集中的代理程式捕獲分割層級指標。消費者滯後指標和其他 Apache 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 Logs 和 Kinesis Data Firehose 定價頁面。
問:代理程式日誌的記錄層級是什麼?
Amazon MSK 為佈建叢集中的所有代理程式提供 INFO 層級的日誌。
問:如何存取 Apache ZooKeeper 日誌?
您可以透過支援工單來請求 Apache ZooKeeper 日誌。
問:是否可以記錄 Apache Kafka 資源 API 的使用,例如,建立主題?
是,如果您使用 IAM Access Control,則 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 節點。
問:什麼是 KRaft
KRaft (Apache Kafka Raft) 是一種共識協定,可將 Apache Kafka 叢集中的中繼資料管理,從外部 Apache ZooKeeper 節點轉移至 Apache Kafka 內的控制器群組。此變更允許存放中繼資料並複寫為 Apache Kafka 代理程式內的主題,從而加速傳播中繼資料。 瀏覽開發人員指南。
問:在 Amazon MSK 與 ZooKeeper 模式下使用 KRaft 模式是否需要任何 API 變更?
在 Amazon MSK 上使用 KRaft 模式無需做出任何 API 變更。不過,如果您的用戶端今天仍使用 --zookeeper 連線字串,則應更新用戶端以使用 --bootstrap-server 連線字串,來連線至您的叢集並執行管理員動作。在 Apache Kafka 2.5 版中,--zookeeper 旗標已棄用,並從 Apache Kafka 3.0 開始移除。因此,建議您使用最新的 Apache Kafka 用戶端版本和--bootstrap 服務器連線字串。
問:我有連線至 ZooKeeper 的工具;這些工具如何在沒有 ZooKeeper 連線的情況下執行 KRaft 叢集?
您應檢查使用的任何工具,是否能夠在沒有 ZooKeeper 連線連接的情況下使用 Apache Kafka 管理員 API。例如,請參閱我們有關針對 KRaft 模式下的叢集使用 Cruise Control 的更新文件。Cruise Control 還發佈了在沒有 ZooKeeper 連線的情況下執行 Apache Kafka 的步驟。
問︰相較於以 ZooKeeper 為基礎的叢集,在以 KRaft 為基礎的叢集上,每個代理程式是否可託管更多分割區?
在以 KRaft 和 ZooKeeper 為基礎的叢集上,每個代理程式的分割區數量相同。不過,KRaft 允許您在叢集中佈建更多代理程式,讓每個叢集可託管更多分割區。
整合
- Amazon S3,使用 Kinesis Data Firehose 以簡單且無程式碼的方式將資料從 MSK 交付到 Amazon S3。
- Amazon Virtual Private Cloud (Amazon VPC) (用於網路隔離與安全)
- Amazon CloudWatch (用於提供指標)
- 用於儲存磁碟區加密的 AWS Key Management Service (AWS KMS)。
- Amazon IAM (用於身分驗證和授權 Apache Kafka 和 服務 API)
- AWS Lambda (用於 MSK 事件來源)
- AWS IoT (用於 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 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 文件。您也可以使用 Apache Kafka Admin API kafka-reassign-partitions.sh 來跨代理程式重新指派分割區。在無伺服器叢集中,Amazon MSK 會自動平衡分割區。
定價和可用性
問:Amazon MSK 採用何種定價方式?
定價取決於您建立的資源。您可以造訪定價頁面進一步了解。
問:我是否要針對資料複寫產生的資料傳輸支付費用?
否,服務內含所有叢集內的資料傳輸,不會另外收費。
問:哪些 AWS 區域提供 Amazon MSK?
此處記錄了 Amazon MSK 區域可用性。
問:資料傳輸的定價方式為何?
藉由佈建叢集,您會針對傳入和傳出 Amazon MSK 叢集的資料支付標準 AWS 數據傳輸費。在同一區域的叢集內進行的資料傳輸將不會收費,包括不同代理程式之間的資料傳輸,以及代理程式與 Apache ZooKeeper 節點之間的資料傳輸。
藉由無伺服器叢集,您會為傳輸至另一個區域或從另一個區域傳輸來的資料和傳出至公有網際網路的資料支付標準 AWS 數據傳輸費。
合規
- HIPAA 合格
- PCI
- ISO
- SOC 1、2、3
如需 AWS 服務和合規計劃的完整清單,請參閱合規計劃的 AWS 服務範圍。
服務水準協議
複寫
問︰什麼是 Amazon MSK Replicator?
Amazon MSK Replicator 是 Amazon MSK 的一項功能,可讓客戶在不同 AWS 區域 (跨區域複寫) 或同一 AWS 區域 (同一區域複寫) 的 Amazon MSK 叢集中可靠地複寫資料,而無需編寫程式碼或管理基礎設施。您可以使用跨區域複寫 (CRR) 來建置高可用性、可容錯的多區域串流應用程式,以提高彈性。您也可以使用 CRR 為不同地理區域的取用者提供更低延遲的存取。您可以使用 SRR 將資料從一個叢集分配到許多叢集,以便與您的合作夥伴和團隊共用資料。您還可以使用 SRR 或 CRR,將多個叢集中的資料彙總到一個以進行分析。
問:如何使用 MSK Replicator?
若要在一對來源與目標 MSK 叢集之間設定複寫,您需要在目的地 AWS 區域中建立 Replicator。若要建立 Replicator,請指定詳細資訊,其中包括來源與目標 MSK 叢集的 Amazon Resource Name (ARN),以及 MSK Replicator 可用於存取叢集的 AWS Identity and Access Management (IAM) 角色。如果目標 MSK 叢集尚未存在,則需要建立目標 MSK 叢集。您還可以選擇設定其他設定,包括主題名稱組態和 Replicator 的起始位置。
問: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 將資料從一個叢集複寫至多個叢集,或將資料從多個叢集複寫至一個叢集?
是。您只需針對每個來源和目標叢集對建立不同的 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 可讓您在建立新的 Replicator 時,於“Prefix” 和 “Identical” 之間選取主題名稱組態。依預設,MSK Replicator 會在目標叢集中建立新主題,並將自動產生的前綴新增至主題名稱。例如,MSK Replicator 將 “topic” 中的資料從來源叢集複寫到目標叢集中名為 “<sourceKafkaClusterAlias>.topic” 的新主題。您可以在 MSK 主控台,使用 DescribeReplicator API 或 Replicator 詳細資訊頁面,在 “sourceKafkaClusterAlias” 欄位下的目標叢集中找到新增至主題名稱的前綴。如果想要在保留原始名稱的同時將主題複製到目標叢集,只需將主題名稱組態設定為 “Identical” 即可。
問:為什麼我應該使用 “Identical” 主題名稱組態?
您應該使用相同的主題名稱組態,來簡化跨 AWS 區域建置高可用性、彈性的串流資料架構。透過將 Kafka 主題複寫到其他 Amazon MSK 叢集,同時保留原始主題名稱,此組態可減少複寫設定或容錯移轉事件期間重新設定用戶端應用程式的需求。這使您可以更輕鬆地建立跨多個區域的主動-被動叢集組態,以提高彈性和可用性。它還可簡化使用案例,例如跨叢集的資料彙總、MSK 叢集之間的遷移,以及將資料分發到多個地理區域。如果在有其他中繼資料新增至 Kafka 記錄標頭時,您的用戶端無法處理資料,則您不應使用此組態。
問:是否存在無限複寫迴圈具有 “Identical” 主題名稱組態的風險?
否,MSK Replicator 會自動防止記錄複寫回其源自的 Kafka 主題,從而避免無限複寫迴圈。為了實現這一點,作為複寫的一部分,MSK Replicator 會將中繼資料新增至記錄的標頭。
問:我是否可以更新現有的 Replicator,以使用相同的主題名稱組態?
否,在建立了 Replicator 之後,無法變更主題名稱組態。
問:如何使用複寫來提高跨區域串流應用程式的彈性?
您可以使用 MSK Replicator 來設定主動-主動或主動-被動叢集拓樸,以提高跨區域 Kafka 應用程式的彈性。在主動-主動設定中,兩個 MSK 叢集都會主動提供讀取和寫入。相較之下,在主動-被動設定中,一次只有一個 MSK 叢集主動提供串流資料,而另一個叢集則處於待機狀態。我們建議您使用 “Identical” 主題名稱組態,進行主動-被動設定,以及使用 “Prefix” 組態,進行主動-主動設定。不過,使用 “Prefix” 組態將要求您重新設定取用者以讀取複寫的主題。如果您想避免重新設定用戶端,也可以使用 “Identical” 組態進行主動-主動設定。不過,您將為每個 Replicator 支付額外的資料處理和資料傳輸費用,因為每個 Replicator 將需要處理一般數量的資料兩次,一次進行複寫,另一次則是為了防止無限迴圈。
問:哪些 Kafka 版本支援相同的主題名稱組態?
在 Kafka 2.8.1 版及更高版本上執行的所有 MSK 叢集都支援該組態。
問:是否可以複寫來源叢集上的現有資料?
是。依預設,當您建立新的 Replicator 時,它會開始從來源叢集的串流尖端 (最新偏移) 複寫資料。或者,如果要複寫現有資料,您可設定新的 Replicator,以開始從來源叢集主題分割區中的最早偏移複寫資料。
問:複寫是否會導致來源叢集上取用者限流?
由於 MSK Replicator 充當來源叢集的取用者,因此複寫可能會導致其他取用者在來源叢集上遭到限流。這取決於來源叢集擁有多少讀取容量,以及正在複寫的資料輸送量。建議您在計算所需容量時,針對來源和目標叢集佈建相同的容量,並考慮複寫輸送量。您還可以在來源和目標叢集上為 Replicator 設定 Kafka 配額,以控制 Replicator 可使用的容量。
問:是否可以在寫入目標叢集之前壓縮資料?
是,您可以在 None、GZIP、Snappy、LZ4 和 ZSTD 之間建立 Replicator 時,指定您選擇的壓縮編解碼器。
開始使用 Amazon MSK
造訪 Amazon MSK 定價頁面。
在此逐步指南中了解如何在 Amazon MSK 設定 Apache Kafka 叢集。
開始在 Amazon MSK 上執行 Apache Kafka 叢集。登入 Amazon MSK 主控台。