个人备案做视频网站网站建设高端设计
2026/1/12 1:01:00 网站建设 项目流程
个人备案做视频网站,网站建设高端设计,win7用本地文件做网站模板,企业网站营销案例Kafka改为system模式 要将 Kafka#xff08;KRaft 模式#xff09;以 systemd 服务#xff08;system 模式#xff09; 方式运行#xff0c;可以创建一个 systemd unit 文件#xff0c;实现开机自启、日志管理、自动重启等功能。以下是详细步骤#xff1a;前提条件 已完…Kafka改为system模式要将 KafkaKRaft 模式以systemd 服务system 模式方式运行可以创建一个 systemd unit 文件实现开机自启、日志管理、自动重启等功能。以下是详细步骤前提条件已完成 Kafka 的 KRaft 模式初始化包括生成 UUID、格式化存储目录已配置好config/kraft/server.properties如需 SASL 认证JAAS 配置文件已就绪使用非 root 用户运行 Kafka推荐新建专用用户如kafka一、创建专用用户# 创建Kafka用户与密码sudouseradd-r -s /sbin/nologin kafka# 将Kafka的目录移至非root目录下mv/root/kafka_2.13-3.7.0 /opt/# 将kafka用户此文件的权限sudochown-R kafka:kafka /opt/kafka_2.13-3.7.0将/opt/kafka_2.13-3.7.0替换为你的实际 Kafka 安装路径例如/opt/kafka二、创建 systemd 服务文件sudovi/etc/systemd/system/kafka.service内容如下根据是否启用 SASL 调整情况 A未启用 SASL纯 PLAINTEXT[Unit] DescriptionApache Kafka Server (KRaft mode) Afternetwork.target [Service] Typesimple Userkafka Groupkafka WorkingDirectory/opt/kafka_2.13-3.7.0 ExecStart/opt/kafka_2.13-3.7.0/bin/kafka-server-start.sh /opt/kafka_2.13-3.7.0/config/kraft/server.properties Restarton-failure RestartSec10 StandardOutputjournal StandardErrorjournal SyslogIdentifierkafka [Install] WantedBymulti-user.target情况 B启用了 SASL/PLAIN 认证[Unit] DescriptionApache Kafka Server (KRaft SASL/PLAIN) Afternetwork.target [Service] Typesimple Userkafka Groupkafka WorkingDirectory/opt/kafka_2.13-3.7.0 EnvironmentKAFKA_OPTS-Djava.security.auth.login.config/etc/kafka/security/kafka_server_jaas.conf ExecStart/opt/kafka_2.13-3.7.0/bin/kafka-server-start.sh /etc/kafka/server.properties Restarton-failure RestartSec5 StandardOutputjournal StandardErrorjournal SyslogIdentifierkafka [Install] WantedBymulti-user.target注意所有路径请替换为你实际的 Kafka 安装路径建议统一放在/opt/kafka确保kafka_server_jaas.conf文件权限安全chmod 600 config/security/kafka_server_jaas.conf且属主为kafka三、重载 systemd 并启用服务# 重载配置sudosystemctl daemon-reload# 启动 Kafkasudosystemctl start kafka# 设置开机自启sudosystemctlenablekafka# 查看状态sudosystemctl status kafka# 查看日志sudojournalctl -u kafka -f这里停掉之前的Kafka服务再启动会报错Dec 16 11:02:15 VM-16-12-centos kafka[28282]: [2025-12-16 11:02:15,524] ERROR Encountered fatal fault: caught exception (org.apache.kafka.server.fault.ProcessTerminatingFaultHandler) Dec 16 11:02:15 VM-16-12-centos kafka[28282]: java.io.IOException: Could not read file /tmp/kraft-combined-logs/__cluster_metadata-0/00000000000000114142-0000000005.checkpoint Dec 16 11:02:15 VM-16-12-centos kafka[28282]: at kafka.log.LogLoader.$anonfun$removeTempFilesAndCollectSwapFiles$2(LogLoader.scala:225) Dec 16 11:02:15 VM-16-12-centos kafka[28282]: at scala.collection.ArrayOps$WithFilter.foreach(ArrayOps.scala:73)问题Kafka 试图从/tmp/kraft-combined-logs/加载元数据但其中的 checkpoint 文件损坏或无法读取。默认的数据目录/tmp 是临时目录系统可能随时清理尤其重启后所以这里要做日志文件与数据文件的分离四、日志文件与数据文件的分离如果没出问题就选做1. 停止服务并清理临时数据sudo systemctl stop kafka sudo rm -rf /tmp/kraft-combined-logs /tmp/kafka-logs这会清空所有数据因之前存在损坏但这是修复的前提。2. 创建持久化目录并授权# 创建用户如果尚未创建 sudo useradd -r -s /sbin/nologin kafka # 创建数据目录 sudo mkdir -p /var/lib/kafka/data # 创建应用日志目录 sudo mkdir -p /var/log/kafka # 授权给 kafka 用户 sudo chown -R kafka:kafka /var/lib/kafka /var/log/kafka sudo chmod 750 /var/lib/kafka/data sudo chmod 750 /var/log/kafka3. 迁移并修正配置文件1. 移动关键配置文件到/etc/kafka/sudo mkdir -p /etc/kafka/security sudo cp /opt/kafka_2.13-3.7.0/config/kraft/server.properties /etc/kafka/ sudo cp /opt/kafka_2.13-3.7.0/config/security/kafka_server_jaas.conf /etc/kafka/security/ sudo chown -R kafka:kafka /etc/kafka sudo chmod 600 /etc/kafka/security/kafka_server_jaas.conf2. 编辑/etc/kafka/server.propertiesvi /etc/kafka/server.properties内容如下# KRaft 模式 process.rolesbroker,controller node.id1 controller.quorum.voters1localhost:9093 # Listener 配置根据你的网络调整 advertised.listeners listenersSASL_PLAINTEXT://:9092,CONTROLLER://:9093 advertised.listenersSASL_PLAINTEXT://你的服务器内网IP:9092 inter.broker.listener.nameSASL_PLAINTEXT controller.listener.namesCONTROLLER # 核心数据目录不再是 /tmp log.dirs/var/lib/kafka/data # SASL 认证 sasl.enabled.mechanismsPLAIN sasl.mechanism.inter.broker.protocolPLAIN替换你的服务器内网IP为实际 IP如10.0.16.12不要用localhost除非仅本机访问如果是跟着前一篇博客搭建的话可以只修改log.dirs/var/lib/kafka/data4. 重新格式化存储关键sudo -u kafka /opt/kafka_2.13-3.7.0/bin/kafka-storage.sh format \ -t $(sudo -u kafka /opt/kafka_2.13-3.7.0/bin/kafka-storage.sh random-uuid) \ -c /etc/kafka/server.properties成功输出Formatting /var/lib/kafka/data with metadata.version 3.7-IV4.5. 更新 systemd 服务文件编辑/etc/systemd/system/kafka.servicevi /etc/systemd/system/kafka.service内容如下[Unit] DescriptionApache Kafka Server (KRaft SASL/PLAIN) Afternetwork.target [Service] Typesimple Userkafka Groupkafka EnvironmentKAFKA_OPTS-Djava.security.auth.login.config/etc/kafka/security/kafka_server_jaas.conf -Dkafka.logs.dir/var/log/kafka ExecStart/opt/kafka_2.13-3.7.0/bin/kafka-server-start.sh /etc/kafka/server.properties Restarton-failure RestartSec10 StandardOutputjournal StandardErrorjournal [Install] WantedBymulti-user.target重载配置sudo systemctl daemon-reload6. 启动并验证# 启动 sudo systemctl start kafka # 检查状态 sudo systemctl status kafka # 查看实时日志 sudo journalctl -u kafka -f --since 1 min ago # 验证数据目录是否生成 ls -l /var/lib/kafka/data/ # 应包含 meta.properties 和 __cluster_metadata-0/ # 验证应用日志 tail -f /var/log/kafka/server.log成功标志[KafkaRaftServer nodeId1] Kafka Server started (kafka.server.KafkaRaftServer)总结项目路径说明Kafka 数据Topic 元数据/var/lib/kafka/data由log.dirs指定必须持久化Kafka 应用日志server.log/var/log/kafka/由log4j.properties控制配置文件/etc/kafka/符合 Linux 规范便于管理安装包/opt/kafka_2.13-3.7.0/只读不存运行时数据完全分离数据、日志、配置、程序四者独立安全、可维护、可备份。建议生产环境磁盘挂载将/var/lib/kafka挂载到独立高性能磁盘如 SSD日志轮转配置logrotate管理/var/log/kafka/*.log监控监控/var/lib/kafka/data磁盘使用率备份定期快照/var/lib/kafka/data五、验证服务是否正常# 创建测试 topic/opt/kafka_2.13-3.7.0/bin/kafka-topics.sh --create --topic test-systemd\--bootstrap-server localhost:9092 --partitions1--replication-factor1# 列出 topics/opt/kafka_2.13-3.7.0/bin/kafka-topics.sh --list --bootstrap-server localhost:9092若启用 SASL需在客户端命令中添加认证参数(或使用配置文件,没有启用则可以直接使用上面的验证命令。1.客户端创建1.1. 确认服务端 SASL 用户名和密码前面已创建略过用户名username密码password用途建议adminStrongPassword123!管理员全权限producerStrongPassword456!仅用于生产消息consumerStrongPassword789!仅用于消费消息1.2. 创建客户端 JAAS 配置文件sudo mkdir -p /etc/kafka/security sudo vi /etc/kafka/security/kafka_admin_client_jaas.conf这里设置管理员用户的客户端,内容如下KafkaClient { org.apache.kafka.common.security.plain.PlainLoginModule required usernameadmin passwordStrongPassword123!; };1.3. 设置权限仅 kafka 用户可读sudo chown kafka:kafka /etc/kafka/security/kafka_admin_client_jaas.conf sudo chmod 600 /etc/kafka/security/kafka_admin_client_jaas.conf1.4. 创建客户端配置文件sudo vi /etc/kafka/client.properties内容如下security.protocolSASL_PLAINTEXT sasl.mechanismPLAIN2.客户端使用使用认证信息执行命令通过环境变量指定 JAAS# 切换到 kafka 用户避免权限问题 sudo -u kafka bash # 执行命令注意路径 # 创建测试 topic KAFKA_OPTS-Djava.security.auth.login.config/etc/kafka/security/kafka_admin_client_jaas.conf \ /opt/kafka_2.13-3.7.0/bin/kafka-topics.sh \ --bootstrap-server localhost:9092 \ --command-config /etc/kafka/client.properties \ --create --topic test-systemd --partitions 1 --replication-factor 1 # 列出 topics KAFKA_OPTS-Djava.security.auth.login.config/etc/kafka/security/kafka_admin_client_jaas.conf \ /opt/kafka_2.13-3.7.0/bin/kafka-topics.sh \ --command-config /etc/kafka/client.properties \ --list --bootstrap-server localhost:9092六、安全建议生产环境不要使用 root 运行 Kafka限制advertised.listeners为内网 IP 或通过反向代理暴露SASL/PLAIN 仅用于内网公网必须配合 SSLSASL_SSL防火墙限制 9092 端口仅允许可信 IP 访问定期备份元数据KRaft 的 snapshot 和 log 目录至此Kafka 已成功转为systemd 管理的服务模式具备自动启动、崩溃恢复、集中日志等能力适合生产部署。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询