Kafka 外置(新)
前置条件: 外置的Kafka版本支持v3、v4系列。
使用版本: 6.90.0以上版本,该版本已去除zookeeper。
配置参数
| 配置项 | 类型 | 是否必需 | 示例 | 描述 |
|---|---|---|---|---|
KafkaAddresses | string | 是 | kafka-ha:9092 | kafka地址,如有多个使用逗号隔开 |
KafkaReadAddress | string | 是 | kafka-ha:9092 | kafka访问地址 |
kafkaSecurityProtocol | string | 否 | SASL_SSL | Kafka安全协议,默认不配置。支持PLAINTEXT、SASL_PLAINTEXT和SASL_SSL;使用加密访问时填写SASL_SSL,SASL_PLAINTEXT不加密传输 |
kafkaSASLUsername | string | 否 | ones | SASL用户名。使用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 则说明切换成功