跳到主要内容

Kafka 外置(新)

前置条件: 外置的Kafka版本支持v3、v4系列。

使用版本: 6.90.0以上版本,该版本已去除zookeeper。

配置参数

配置项类型是否必需示例描述

KafkaAddresses

stringkafka-ha:9092kafka地址,如有多个使用逗号隔开

KafkaReadAddress

stringkafka-ha:9092kafka访问地址

kafkaSecurityProtocol

stringSASL_SSLKafka安全协议,默认不配置。支持PLAINTEXT、SASL_PLAINTEXT和SASL_SSL;使用加密访问时填写SASL_SSL,SASL_PLAINTEXT不加密传输

kafkaSASLUsername

stringonesSASL用户名。使用SASL_SSL时必填

kafkaSASLPassword

string******SASL密码。使用SASL_SSL时必填

操作步骤

迁移kafka数据

备份Kafka数据

ones-ai-k8s.sh
#进入kafka pod
kubectl -n ones exec -it kafka-ha-0 bash

cd /bitnami/kafka
#压缩数据
tar -cvzf kafka.tar.gz data/*

exit
exit
#数据移动到pod 外
kubectl -n ones cp kafka-ha-0:/bitnami/kafka/kafka.tar.gz /tmp/kafka.tar.gz

自行将kafka.tar.gz移动到kafka的服务器

数据复制到新的kafka中

#<base_url>用kafka配置文件()中的log.dirs替换

rm -rf <base_url>/*

tar -xvzf /tmp/kafka.tar.gz -C <base_url> --strip-components 1
#重启kafka(如果之前就没开,则只需要打开即可)
kafka-server-stop.sh
kafka-server-start.sh

#<host> <port>用实际kafka服务器的host和端口替换
#使用SASL_SSL时,先创建Kafka命令行客户端配置;使用PLAINTEXT时无需创建
cat >/tmp/kafka-client.properties <<'EOF'
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="<kafka_sasl_username>" password="<kafka_sasl_password>";
EOF
chmod 600 /tmp/kafka-client.properties

#查看kafka topics
#使用PLAINTEXT时,删除命令中的--command-config参数
kafka-topics.sh --list --bootstrap-server <host>:<port> --command-config /tmp/kafka-client.properties
#......
#ones.ones.task.updated
#ones.ones.task.updated-ones.audit_log.delay
#ones.ones.task.updated-ones.automation.delay
#ones.ones.task.updated-ones.gantt.delay
#ones.ones.task.updated-ones.manhour.delay
#ones.ones.task.updated-ones.objectlink.delay
#ones.ones.task.updated-ones.observer.sprint_scale_cache.delay
#ones.ones.task.updated-ones.observer.task_count.delay
#ones.ones.task.updated-ones.project.object_link.audit_log.delay
#ones.ones.task.updated-ones.project.wiki.audit_log.delay
#ones.ones.task.updated-ones.sprint.delay
#ones.ones.task.updated-ones.task.publish_version.delay
#project_binlog
#输出类似上面的数据则说明这一步成功

#创建测试数据
./kafka-topics.sh --create --bootstrap-server <host>:<port> --command-config /tmp/kafka-client.properties --topic onesTestABC123x --partitions 1 --replication-factor 1
#Created topic onesTestABC123x.

kafka-topics.sh --list --bootstrap-server <host>:<port> --command-config /tmp/kafka-client.properties | grep onesTestABC123x
#onesTestABC123x
#如果输出如上所示则说明创建成功

#删除测试数据
kafka-topics.sh --bootstrap-server <host>:<port> --command-config /tmp/kafka-client.properties --delete --topic onesTestABC123x
kafka-topics.sh --list --bootstrap-server <host>:<port> --command-config /tmp/kafka-client.properties | grep onesTestABC123x
#如果没有输出内容,则说明删除成功

#验证完成后删除包含密码的临时文件
rm -f /tmp/kafka-client.properties

修改配置

进入ones服务器

一般情况下,只需配置Kafka地址:

ones-ai-k8s.sh
vim config/private.yaml
# 修改如下配置,地址根据实际情况填写
KafkaAddresses: <kafka_address>
KafkaReadAddress: <kafka_read_address>

仅当目标Kafka启用了SASL_SSL时,才需要在config/private.yaml中追加以下配置:

kafkaSecurityProtocol: SASL_SSL
kafkaSASLUsername: "<kafka_sasl_username>"
kafkaSASLPassword: "<kafka_sasl_password>"

应用配置

make setup-ones

验证

需要等待几分钟后在执行ones-ai-k8s.sh后进入的pod中进行下列操作

kubectl -n ones get pod | grep audit-log-sync-deployment

#audit-log-sync-deployment-58dbfbf5db-jq42t 1/1 Running 0 4m51s
#如果显示Running 则说明切换成功