一般問題

問:什麼是 Amazon MSK?
Amazon Managed Streaming for Kafka (英文簡稱 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 做為應用程式持續分析並回應串流資料的資料來源。
 
問:什麼是串流資料?
串流資料是一種小型記錄 (通常為幾 KB 大小的記錄) 的持續串流,這類的記錄則由數千台機器、裝置、網站和應用程式所產生。串流資料包含各式各樣的資料,例如客戶使用您的行動或 Web 應用程式產生的日誌檔、電子商務採購、遊戲中的玩家活動、來自社交網路、金融交易所、地理空間服務的資訊,以及來自連線裝置或資料中心儀器的遙測結果。Amazon Managed Streaming for Kafka 和 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 Managed Streaming for Kafka 有什麼功用?
Amazon Managed Streaming for Kafka (英文簡稱 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 版本?
Amazon MSK 目前支援 Apache Kafka 1.1.1 版。
 
問: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 叢集中。

版本升級

問:當服務支援一個以上的版本時,Amazon MSK 如何讓我將版本升級 (無論次要或主要) 部署至 Apache Kafka 叢集?
在 Amazon MSK 預覽期間,將不支援使用 UpdateClusterSoftware。
 
問:升級程序是如何運作的?
當您部署新版本時,Amazon MSK 會採用滾動處理程序,一次升級一個中介裝置或 Apache ZooKeeper 節點,然後再往前移到下一個資源。在整個升級過程中,您的叢集會處於「更新中」狀態,並在完成更新時轉換至「作用中」狀態。請務必注意,如果您選擇在叢集升級過程中不將資料複寫到多個代理程式,那麼您的叢集將會停機。

叢集

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

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

問:在 Amazon MSK 叢集內,可以部署哪些類型的代理程式執行個體?
您可以選擇 EC2 M5 執行個體系列中的任何執行個體。

問:我需要佈建和支付代理程式啟動磁碟區的費用嗎?
不用,您所佈建的所有代理程式都包括使用 Amazon MSK 服務所管理的啟動磁碟區儲存空間。

問:當我建立 Apache Kafka 叢集時,其包含的基礎資源 (如 Amazon EC2 執行個體) 會顯示在我的 EC2 五控台中嗎?
有些資源,像是彈性網路介面 (ENI) 會顯示在您的 Amazon EC2 帳戶中。其他的 Amazon MSK 資源不會顯示在您的 EC2 帳戶中,因為這些是 Amazon MSK 服務所管理的資源。

問:我必須在 Amazon MSK 叢集中佈建什麼呢?
每次建立叢集時,您都必須佈建代理程式執行個體和代理程式儲存空間。但不用佈建 Apache ZooKeeper 節點,因為每次建立叢集時,都會免費隨附這類資源。

問:什麼是叢集的預設代理程式組態?
除非另有指定,否則 Amazon MSK 會使用 Apache Kafka 開放原始碼版本所指定的相同預設值。以下是這項服務所使用的預設值,由於這項服務處於預覽階段,所以這個組態不能更改。

代理程式複寫策略

3-AZ

Min.Insync.Replicas

2

Broker.ID

由服務設定

Default.Replication.Factor

3 代表 3-AZ

security.inter.broker.protocol

純文字

伺服器端加密

透過 AWS 服務金鑰啟用 AWS KMS

問:佈建代理程式時,是否不用將它們平均分散在可用區域中 (例如,將 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 個代理程式),並且根據預設 (除非您選擇覆寫主題複寫係數),主題複寫係數也會是三。您所選擇的複寫策略也會決定背後指派至叢集的最低 Apache ZooKeeper 節點數量。

主題

問:如何建立主題?
當您建立好 Apache Kafka 叢集後,即可使用 Apache Kafka API 來建立主題。所有主題和分割層級的動作與組態都是使用 Apache Kafka API 來執行。
 
 
問:新主題的預設組態為何?
Amazon MSK 會使用 Apache Kafka 的預設組態,除非另有指定以下項目:  

複寫係數

叢集預設值

Min.Insync.Replicas

2

網路

問: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 帳戶中的用戶端提供您的叢集存取權。

加密

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

問:在網路上,移動 Amazon MSK 叢集內不同代理程式之間的資料時,是否會對資料加密?
否,目前不可以。
 
問:在網路上,移動 Amazon MSK 叢集內中介裝置與 Apache ZooKeeper 節點之間的資料時,是否會對資料加密?
否,目前不可以。
 
問:我可以在網路上對 Apache Kafka 用戶端與 Amazon MSK 服務之間的資料加密嗎?
否,目前不可以。

管理、指標、記錄

問:如何監控叢集或主題的效能?
您可以使用標準指標來監控您叢集的效能,以及可以在 Amazon CloudWatch 主控台中使用增強型指標來監控您主題的效能。
 
問:如何監控用戶端的運作狀態和效能?
您可以使用所用 Apache Kafka 版本支援的任何用戶端監控功能。

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 整合了以下項目:

擴展

問:如何可以擴展我的叢集?
在 Amazon MSK 預覽期間,將不支援擴展現有叢集。

定價和可用性

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

問:我是否要針對資料複寫產生的資料傳輸支付費用?
否,服務內含所有叢集內的資料傳輸,不會另外收費。
 
問:哪些區域提供 Amazon MSK?
Amazon MSK 在公開預覽期間,可在美國東部 (維吉尼亞北部) AWS 區域使用。

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

開始使用 Amazon MSK

Product-Page_Standard-Icons_01_Product-Features_SqInk
計算您的成本

造訪 Amazon MSK 定價頁面

Product-Page_Standard-Icons_01_Product-Features_SqInk
查看入門指南

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

Product-Page_Standard-Icons_03_Start-Building_SqInk
執行 Apache Kafka 叢集

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