「Apache Kafka」:修訂間差異

出自Gea-Suan Lin's Wiki
跳至導覽 跳至搜尋
本頁面具有訪問限制。如果您看見此訊息,這代表您沒有訪問本頁面的權限。
無編輯摘要
 
(未顯示同一使用者於中間所作的 19 次修訂)
行 3: 行 3:
== 介紹 ==
== 介紹 ==


Kafka本身不過多處理多節點之間的效能問題,而是透 [[ZooKeeper]]處理。 可以從「[[#測試]]」的章節看到操作時都是指定ZooKeeper當作API Endpoint。 在Production環境上,一般我們會用TCP load balancer放在前面,讓用戶端架構比較簡單(僅需設定單一名稱)。
Kafka本身不過多處理多節點之間的效能 分配 問題,而是透 過KRaft(以前的版本則是[[ZooKeeper]] 處理。
 
在Production環境上,一般我們會用TCP load balancer放在前面,讓用戶端架構比較簡單(僅需設定單一名稱)。


== 安裝 ==
== 安裝 ==


  目前在[[Ubuntu]] 上沒有系統套件或是PPA可以安裝,一般是自行下載後裝到<code>/opt</code>下。最新版 資訊可以在Kafka的[https://kafka.apache.org/downloads Download]頁面得到,這邊使用2.1.1
{{See also|Confluent}}
 
  這邊建議直接裝[[Confluent]]的版
<syntaxhighlight lang="bash">
cd /tmp
wget https://ftp.jaist.ac.jp/pub/apache/kafka/2.1.1/kafka_2.12-2.1.1.tgz
cd /opt
sudo tar zxvf /tmp/kafka_2.12-2.1.1.tgz
sudo chown -R nobody:nogroup kafka_2.12-2.1.1/
sudo ln -fs kafka_2.12-2.1.1 kafka
</syntaxhighlight>
 
== 設定 ==
 
* 修改<code>/opt/kafka/config/server.properties</code>內的<code>broker.id</code>,這邊一台設<code>1</code>,另外一台設<code>2</code>
* 修改<code>/opt/kafka/config/server.properties</code>內的<code>zookeeper.connect</code>:
** 改成三台ZooKeeper主機的位置,像是<code>zookeeper.connect=1.2.3.4:2181,5.6.7.8:2181,9.10.11.12:2181</code>。
** 或是改成對應的TCP load balancer,像是<code>test-gslin-zookeeper-xxxxxxxxx.us-east-1.elb.amazonaws.com:2181</code>。
** 其中<code>:2181</code>是預設TCP Port,可以省略。
* 修改<code>log.dirs</code>,預設是寫到<code>/tmp/kafka-logs</code>下,改成寫到<code>/var/lib/kafka-logs</code>,並且建立對應的目錄:
<syntaxhighlight lang="bash">
sudo install -d -o nobody -g nogroup -m 0700 /var/lib/kafka-logs
</code>
 
== 測試 ==
 
沒有TCP load balancer時可以直接指定所有的ZooKeeper主機:
 
<syntaxhighlight lang="shell">
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper 1.2.3.4:2181,5.6.7.8:2181,9.10.11.12:2181
/opt/kafka/bin/kafka-topics.sh --create --zookeeper 1.2.3.4:2181,5.6.7.8:2181,9.10.11.12:2181 --replication-factor 2 --partitions 1 --topic my-replicated-topic
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper 1.2.3.4:2181,5.6.7.8:2181,9.10.11.12:2181
</syntaxhighlight>
 
其中所有的<code>:2181</code>都可以簡化省略,因為ZooKeeper的預設Port就是Port 2181:
 
<syntaxhighlight lang="shell">
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper 1.2.3.4,5.6.7.8,9.10.11.12
/opt/kafka/bin/kafka-topics.sh --create --zookeeper 1.2.3.4,5.6.7.8,9.10.11.12 --replication-factor 2 --partitions 1 --topic my-replicated-topic
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper 1.2.3.4,5.6.7.8,9.10.11.12
</syntaxhighlight>


  有TCP load balancer時:
== 相關連結 ==


<syntaxhighlight lang="shell">
* [[Apache ZooKeeper]]
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper test-gslin-zookeeper-xxxxxxxxx.us-east-1.elb.amazonaws.com
* [[Confluent]]
/opt/kafka/bin/kafka-topics.sh --create --zookeeper test-gslin-zookeeper-xxxxxxxxx.us-east-1.elb.amazonaws.com --replication-factor 2 --partitions 1 --topic my-replicated-topic
/opt/kafka/bin/kafka-topics.sh --describe --zookeeper test-gslin-zookeeper-xxxxxxxxx.us-east-1.elb.amazonaws.com
</syntaxhighlight>


== 外部連結 ==
== 外部連結 ==

於 2023年10月3日 (二) 06:48 的最新修訂

Apache Kafka是一套基於JavaScala,提供Streaming架構的軟體。

介紹

Kafka本身不過多處理多節點之間的效能分配問題,而是透過KRaft(以前的版本則是ZooKeeper)處理。

在Production環境上,一般我們會用TCP load balancer放在前面,讓用戶端架構比較簡單(僅需設定單一名稱)。

安裝

這邊建議直接裝Confluent的版本。

相關連結

外部連結