Confluent/Kafka

出自Gea-Suan Lin's Wiki
跳至導覽 跳至搜尋

Confluent/Kafka指的是Confluent所包裝的Apache Kafka,裏面有些路徑與設定檔的設法與官方版本不同。

防火牆

Kafka的主機對外需要開這些Port:

  • 9092/tcp
  • 32181/tcp(JMX)

設定

server.properties

修改/etc/kafka/server.propertiesbroker.id設定,讓他自動產生而不需要自己指定:

#broker.id=0
broker.id.generation.enable=true

修改listeners設定,雖然預設值會聽正確的介面,但因為這個資訊會被註冊到ZooKeeper裏面,所以需要註冊正確的介面資訊:

#listeners=PLAINTEXT://:9092
listeners=PLAINTEXT://10.1.1.1:9092

如果ZooKeeperKafka不同伺服器,需要修改/etc/kafka/server.propertieszookeeper.connect的值,像是這樣:

#zookeeper.connect=localhost:2181
zookeeper.connect=internal-test-kafka-zookeeper-123456789.us-east-1.elb.amazonaws.com:2181

在正式環境上可以設定對應的Replication數量,避免當單一機器有問題的時候產生錯誤:

offsets.topic.replication.factor=3
transaction.state.log.replication.factor=3
transaction.state.log.min.isr=2

其他

另外可以設定/lib/systemd/system/confluent-kafka.service.d/30-options.conf(目錄可能會需要自己建立),讓Kafka吃滿記憶體(這邊假設是8 GB的記憶體,保留1 GB給系統與其他情境使用),以及開啟JMX監控機制,跑在Port 32181:

[Service]
Environment=JMX_PORT=32181
Environment=KAFKA_HEAP_OPTS="-Xmx7g -Xms7g"
Environment=KAFKA_JMX_OPTS="-Djava.rmi.server.hostname=${hostip} -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.rmi.port=32181 -Dcom.sun.management.jmxremote.port=32181 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

對應的指令:

sudo mkdir /lib/systemd/system/confluent-kafka.service.d/
echo -e '[Service]\nEnvironment=JMX_PORT=32181\nEnvironment=KAFKA_HEAP_OPTS="-Xmx7g -Xms7g"\nEnvironment=KAFKA_JMX_OPTS="-Djava.rmi.server.hostname=${hostip} -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.rmi.port=32181 -Dcom.sun.management.jmxremote.port=32181 -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"' | sudo tee /lib/systemd/system/confluent-kafka.service.d/30-options.conf

設完後就可以讓systemd重讀設定後啟動:

sudo systemctl daemon-reload
sudo systemctl enable confluent-kafka
sudo service confluent-kafka start
sudo service confluent-kafka status

然後就可以設定前端的load balancer了。

相關連結

外部連結