「Confluent/KRaft」:修訂間差異

出自Gea-Suan Lin's Wiki
跳至導覽 跳至搜尋
本頁面具有訪問限制。如果您看見此訊息,這代表您沒有訪問本頁面的權限。
行 78: 行 78:
* <code>node.id</code>每台機器都不同,如果controller已經吃掉<code>1</code>、<code>2</code>、<code>3</code>,這邊就要設定<code>4</code>、<code>5</code>、<code>6</code>。
* <code>node.id</code>每台機器都不同,如果controller已經吃掉<code>1</code>、<code>2</code>、<code>3</code>,這邊就要設定<code>4</code>、<code>5</code>、<code>6</code>。
* <code>controller.quorum.voters</code>會從controller那邊的設定複製過來。
* <code>controller.quorum.voters</code>會從controller那邊的設定複製過來。
接著透過<code>kafka-storage</code>把<code>/opt/kraft-broker-logs</code>這個目錄初始化,這邊會用<code>sudo -u cp-kafka</code>要確保目錄權限正確,另外<code>cluster-id</code>就是跟上面controller時設定的一樣:
<syntaxhighlight lang="bash">
sudo -u cp-kafka kafka-storage format --config=/etc/kafka/server.properties --cluster-id=xxxxxxxxxxxxxxxxxxxxxx
</syntaxhighlight>
設定完成後可以啟動,然後看一下狀態與log檔案:
<syntaxhighlight lang="bash">
sudo service confluent-kafka start
sudo service confluent-kafka status
sudo tail -F /var/log/kafka/server.log
</syntaxhighlight>
另外從TCP連線也可以看到連線的情況(通常會看到連到leader的19092與自己在聽的9092):
<syntaxhighlight lang="bash">
netstat -an | grep 9092
</syntaxhighlight>
都沒問題後可以設定開機跑起來:
<syntaxhighlight lang="bash">
sudo systemctl enable confluent-kafka
</syntaxhighlight>


== 相關條目 ==
== 相關條目 ==

於 2023年6月2日 (五) 04:37 的修訂

Confluent/KRaftApache Kafka在2.8之後推出的功能,由Confluent包裝的版本,目的是為了取代Apache ZooKeeper的功能。

設定

Controller

這邊是三controller機的設定。

先把/etc/kafka/kraft/controller.properties複製到/etc/kafka/server.properties下,然後把以下的設定值改成對應的值:

process.roles=controller
node.id=1
controller.quorum.voters=1@kafka-controller-1.example.com:19092,2@kafka-controller-2.example.com:19092,3@kafka-controller-3.example.com:19092
listeners=CONTROLLER://kafka-controller-1.example.com:19092
controller.listener.names=CONTROLLER
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
log.dirs=/opt/kraft-controller-logs

其中需要特別講解的是:

  • node.id每台機器都不同。
  • controller.quorum.votersn@hostname:19092格式中,n就是node.id,而hostname為可以連到的位置(可以是IP),另外因為目前官方沒有比較好的TCP port選擇,社群蠻多人都是設定19092。
  • CONTROLLER是從其他會動的設定檔裡面抄來的。這個部分是沿襲Apache Kafka文件的傳統,你看完一堆文件後不知道他到底是什麼意思,文件自身也互相矛盾。

接著先產生後續kafka-storage需要用的值,首先是要產生出一組叫做「UUID」的字串(22 chars,對應到Base62或是Base64的entropy都夠128bits,但格式不是常見的UUID字串表示法)。這邊要注意,產生一次就可以,三台用的值都會是同一個:

kafka-storage random-uuid

接著透過kafka-storage/opt/kraft-controller-logs這個目錄初始化,這邊會用sudo -u cp-kafka要確保目錄權限正確:

sudo -u cp-kafka kafka-storage format --config=/etc/kafka/server.properties --cluster-id=xxxxxxxxxxxxxxxxxxxxxx

設定完成後可以啟動,然後看一下狀態與log檔案,目前的版本會看到每0.5秒打一次snapshot的訊息[1]

sudo service confluent-kafka start
sudo service confluent-kafka status
sudo tail -F /var/log/kafka/server.log

另外從TCP連線也可以看到連線的情況(通常只會剩下一個連到leader的連線):

netstat -an | grep 19092

都沒問題後可以設定開機跑起來:

sudo systemctl enable confluent-kafka

Broker

這邊是三broker機的設定。

先把/etc/kafka/kraft/broker.properties複製到/etc/kafka/server.properties下,然後把以下的設定值改成對應的值:

process.roles=broker
node.id=4
controller.quorum.voters=1@kafka-controller-1.example.com:19092,2@kafka-controller-2.example.com:19092,3@kafka-controller-3.example.com:19092
listeners=PLAINTEXT://kafka-broker-1.example.com:19092
advertised.listeners=PLAINTEXT://kafka-broker-1.example.com:9092
controller.listener.names=CONTROLLER
listener.security.protocol.map=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,SSL:SSL,SASL_PLAINTEXT:SASL_PLAINTEXT,SASL_SSL:SASL_SSL
log.dirs=/opt/kraft-broker-logs

其中需要特別講解的是:

  • node.id每台機器都不同,如果controller已經吃掉123,這邊就要設定456
  • controller.quorum.voters會從controller那邊的設定複製過來。

接著透過kafka-storage/opt/kraft-broker-logs這個目錄初始化,這邊會用sudo -u cp-kafka要確保目錄權限正確,另外cluster-id就是跟上面controller時設定的一樣:

sudo -u cp-kafka kafka-storage format --config=/etc/kafka/server.properties --cluster-id=xxxxxxxxxxxxxxxxxxxxxx

設定完成後可以啟動,然後看一下狀態與log檔案:

sudo service confluent-kafka start
sudo service confluent-kafka status
sudo tail -F /var/log/kafka/server.log

另外從TCP連線也可以看到連線的情況(通常會看到連到leader的19092與自己在聽的9092):

netstat -an | grep 9092

都沒問題後可以設定開機跑起來:

sudo systemctl enable confluent-kafka

相關條目

參考資料

外部連結