一般問題

問:什麼是 Amazon MSK?
Amazon MSK (英文簡稱 Amazon MSK) 是一項新的 AWS 串流資料服務,可用來管理 Apache Kafka 的基礎設施和運作,讓開發人員和 DevOps 管理階層不必成為操作 Apache Kafka 叢集方面的專家,也能輕鬆在 AWS 上執行 Apache Kafka 應用程式。Amazon MSK 是執行 AWS 中現有或全新 Apache Kafka 應用程式的理想平台。Amazon MSK 會運作並維護 Apache Kafka 叢集,提供立即可用的企業級安全功能,並且內建有 AWS 整合功能,可以加速串流資料應用程式的開發。若要開始使用,您可以將現有的 Apache Kafka 工作負載移轉到 Amazon MSK 之中,當然從頭新建也可以,這只需要幾分鐘並按幾下滑鼠即可。就叢集內流量來說,不會產生資料傳輸費用,無須簽訂合約也沒有預付費用。使用多少資源就付多少費用。
 
問:什麼是 Apache Kafka?
Apache Kafka 是開放原始碼、高效能、容錯且具可擴展性的平台,用於建立即時串流資料管道和應用程式。Apache Kafka 是串流資料存放區,會將產生串流資料到資料存放區中的應用程式 (即所謂的生產者) 與消耗資料存放區中串流資料的應用程式 (即所謂的取用者) 分離開來。許多組織使用 Apache Kafka 做為應用程式持續分析並回應串流資料的資料來源。 進一步了解 Apache Kafka
 
問:什麼是串流資料?
串流資料是一種小型記錄或事件 (記錄或事件通常為幾 KB 大小的記錄) 的持續串流,這類的記錄則由數千台機器、裝置、網站和應用程式所產生。串流資料包含各式各樣的資料,例如客戶使用您的行動或 Web 應用程式產生的日誌檔、電子商務採購、遊戲中的玩家活動、來自社交網路、金融交易所、地理空間服務的資訊,以及來自連線裝置或資料中心儀器的遙測結果。Amazon MSK 和 Amazon Kinesis Data Streams 之類的串流資料服務,都可以讓持續收集、處理及交付串流資料等工作變得輕鬆。 進一步了解串流資料
 
問:Apache Kafka 有哪些主要功能?
Apache Kafka 有三大功能:
  • Apache Kafka 會以容錯的方式,將串流資料存成一連串的記錄,並且會保留記錄產生的順序。
  • Apache Kafka 是資料生產者與資料取用者之間的緩衝。Apache Kafka 可以讓眾多的資料生產者 (例如:網站、IoT 裝置、Amazon EC2 執行個體) 持續發佈串流資料,並使用 Apache Kafka 主題將這類資料分門別類。多個資料取用者 (例如:機器學習應用程式、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 開放原始碼版本,而且能兼顧高可用性和安全性,同時還提供整合 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?
是。

資料的產生與取用

問:是否可以使用 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 和 LinkedIn  Cruise Control

移轉至 Amazon MSK

問:是否可以將現有 Apache Kafka 叢集中的資料移轉至 Amazon MSK?
可以,您可以使用第三方工具或開放原始碼工具 (例如:開放原始碼 Apache Kafka 隨附的 MirrorMaker),將叢集中的資料複寫到 Amazon MSK 叢集中。

版本升級

問:是否支援 Apache Kafka 版本升級?
叢集版本設計目前不受支援,但我們計劃不久支援版本升級。 
 
問:升級程序是如何運作的?
當您部署新 Apache Kafka 版本時,Amazon MSK 會採用滾動升級處理程序,一次升級一個中介裝置或 Apache ZooKeeper 節點,然後再往前移到下一個資源。在整個升級過程中,您的叢集會處於「更新中」狀態,並在完成更新時轉換至「作用中」狀態。請務必注意,如果您選擇在叢集升級過程中不將資料複寫到多個代理程式,那麼您的叢集將會停機。

叢集

問:我如何建立自己的第一個 Amazon MSK 叢集?
在 AWS 管理主控台按幾下或使用 AWS 軟體開發套件即可建立您的第一個叢集。首先,請進入 Amazon MSK 主控台,然後選取 AWS 地區,以在該地區中建立 Amazon MSK 叢集。為您的叢集取一個名稱,選擇執行叢集所要搭配使用的 VPC、叢集的資料複寫策略,以及每個可用區域的子網路。接著,選取代理程式執行個體類型,以及每個可用區域的代理程式數量,然後按一下「建立」。

問:叢集內有哪些資源?
每一個叢集都包含中介裝置執行個體、已佈建的儲存空間,以及 Apache ZooKeeper 節點。

問:在 Amazon MSK 叢集內,可以部署哪些類型的代理程式執行個體?
您可以選擇 EC2 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 讓您輕鬆部署含異地同步備份複寫的叢集,並提供依主題使用自訂複寫策略的選擇。根據預設,針對每一個複寫選項,都會使用指定的複寫策略,對領導者與追隨者代理程式進行部署和隔離。例如,假設您選取 3 AZ 代理程式複寫策略,而每個可用區域叢集具有 1 個代理程式,則 Amazon MSK 將會建立一個含有三個代理程式的叢集 (在一個地區的三個可用區域中都有 1 個代理程式),並且根據預設 (除非您選擇覆寫主題複寫係數),主題複寫係數也會是三。

問:我是否可以變更預設代理程式組態或將叢集組態上傳至 Amazon MSK?
是,Amazon MSK 可讓您建立自訂組態並將其套用至新叢集。可以使用 AWS CLI 或主控台建立自訂組態。對現有叢集的自訂組態支援將於 2019 年 6 月可用。

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

問:新主題的預設組態為何?
Amazon MSK 會使用 Apache Kafka 的預設組態,除非另有指定以下項目:

複寫係數

叢集預設值

Min.Insync.Replicas

2

主題

問:如何建立主題?
當您建立好 Apache Kafka 叢集後,即可使用 Apache Kafka API 來建立主題。所有主題和分割層級的動作與組態都是使用 Apache Kafka API 來執行。以下命令為使用 Apache Kafka API 建立主題的範例:
 
bin/kafka-topics.sh --create —bootstrap-server ConnectionString:9092 --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 網路,也無法從網際網路存取。
 
問:我的用戶端和 Amazon MSK 叢集之間的連線是否始終保持不公開狀態?
是,從 Amazon MSK 叢集產生並取用資料的唯一方式,是透過 VPC 中的用戶端與 Amazon MSK 叢集之間的專用連線。Amazon MSK 不支援公用端點。

問:是否可以讓 VPC 中的用戶端存取 Amazon MSK 叢集中的代理程式?
您叢集中的代理程式可以透過在您帳戶中將出現的彈性網路介面 (ENI),設成可供 VPC 中的用戶端存取。 ENI 上的安全群組會指定代理程式允許之輸入和輸出流量的來源與類型。

問:如何為執行於不同 AWS 帳戶中的用戶端提供我的叢集存取權?
您可以使用 VPC 對等功能,為執行於不同 AWS 帳戶中的用戶端提供您的叢集存取權。

連接至 VPC

問:在 VPC 之外時,我如何連接至 AWS MSK 叢集?

在您的 VPC 之外時,有數種方式可以連接至您的 AWS MSK 叢集。

加密

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

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

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

問:移動 Amazon MSK 叢集內中介裝置與 Apache ZooKeeper 節點之間的資料時,是否會對資料進行傳輸時加密?
否,Apache Kafka 捆綁的預設 Apache Zookeeper 版本不支援加密。但是,務請注意,Apache Zookeeper 和 Apache Kafka 代理程式之間的通訊限制為代理程式、主題和分割狀態資訊。

身份驗證和授權

問:我如何將連線範圍限制為我 VPC 中多個用戶端中的 Amazon MSK 叢集?
Amazon MSK 支援基於 TLS 的驗證,您可以使用此功能來驗證到 Amazon MSK 叢集的用戶端連線。Amazon MSK 可讓您將 AWS Certificate Manager 服務中的私有 CA 部署到 MSK 叢集。啟用 TLS 用戶端驗證後,只有提供從先前載入的私有 CA 產生的 TLS 憑證的用戶端才可以向叢集進行驗證。

問:Amazon MSK 如何執行授權作業?
Apache Kafka 使用存取控制清單 (ACL) 進行授權,且 Amazon MSK 支援使用 ACL。若要啟用 ACL,您必須使用 TLS 啟用用戶端驗證。

問:如何同時驗證和授權用戶端?
使用用戶端 TLS 驗證的 Amazon MSK 客戶可以使用用戶端 TLS 憑證的 Dname 作為 ACL 的主體,來驗證和授權用戶端請求。

管理、指標、記錄、標記

問:如何監控叢集或主題的效能?
您可以使用標準指標來監控您叢集的效能,以及可以在 Amazon CloudWatch 主控台中使用增強型指標來監控您主題的效能。
 
問:不同監控層級的費用是多少?
使用 Amazon CloudWatch 監控叢集的費用取決於監控層級和 Kafka 叢集的大小。Amazon CloudWatch 按月按指標收費,包括免費方案;如需詳細資訊,請參閱 Amazon CloudWatch 定價。如需每個監控層級公開的指標數的詳細資訊,請參閱 Amazon MSK 監控文件
 
問:如何監控用戶端的運作狀態和效能?
您可以使用所用 Apache Kafka 版本支援的任何用戶端監控功能。
 
問:我可以標記 Amazon MSK 資源嗎?
是,您可以從 AWS CLI 或主控台標記 Amazon MSK 叢集。
 
問:如何監控消費者滯後?
您可以使用消費者滯後工具監控 Amazon MSK 叢集內的消費者滯後,像是 Linkedin 的 Burrow: https://github.com/linkedin/Burrow

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 節點。
 
問:我的用戶端如何與 Apache ZooKeeper 互動?
您的用戶端可以透過這項服務所提供的 Apache ZooKeeper 端點,與 Apache ZooKeeper 進行互動。這個端點會透過 AWS 管理主控台或使用 DescribeCluster API 來提供。

整合

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

擴展

問:如何可以擴展我叢集中的儲存空間?
您可以透過 AWS 管理主控台或 AWS CLI 擴展您叢集中的儲存空間。 
 
問:我是否可以擴展現有叢集中的代理數量?
可以。您可以擴展現有 Amazon MSK 叢集的規模,或增加其代理數量。
 
問:我是否可以在現有叢集中擴展代理執行個體大小?
否。Amazon MSK 目前不支援擴展現有叢集中的代理執行個體大小,不過我們正在規劃中。

定價和可用性

問:Amazon MSK 採用何種定價方式?
定價方式是按照每個 Apache Kafka 代理程式小時,以及每個已佈建儲存空間小時為基礎。AWS 資料傳輸費率適用於 Amazon MSK 資料的傳入與傳出。如需詳細資訊,請瀏覽我們的 定價頁面

問:我是否要針對資料複寫產生的資料傳輸支付費用?
否,服務內含所有叢集內的資料傳輸,不會另外收費。
 
問:哪些 AWS 區域提供 Amazon MSK?
此處記錄了 Amazon MSK 區域可用性。 

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

合規

問:Amazon MSK 是否符合 HIPAA 資格?

是。Amazon MSK 符合 HIPAA 資格。如需完整的 AWS 服務清單和合規計劃,請參閱合規計劃的 AWS 服務範圍

服務水準協議

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

開始使用 Amazon MSK

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

造訪 Amazon MSK 定價頁面

查看入門指南
查看入門指南

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

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

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