赞
踩
想象一下,你正在开发一款新的实时数据分析工具,但在处理大规模数据流时遇到了瓶颈。你需要一种可靠、高效的数据传输系统来帮助你实现这一目标。在这个挑战中,Kafka就是你的得力助手。本文将为你揭开Kafka集群搭建的神秘面纱,让你轻松掌握数据处理的主动权。
在搭建 Kafka 集群之前,首先需要准备好硬件和环境。以下是一些准备工作的关键步骤:
服务器资源:
网络连接:
Java 安装:
ZooKeeper 安装:
下载 Kafka:
解压 Kafka:
配置 Kafka:
config/server.properties
文件。broker.id
为唯一的整数,表示单节点的 Broker ID。启动 Kafka 服务器:
在 Kafka 目录运行以下命令启动 Kafka 服务器:
bin/kafka-server-start.sh config/server.properties
配置不同的 Broker:
config/server.properties
中的 broker.id
和其他配置。broker.id
必须是唯一的。配置 ZooKeeper:
在 config/server.properties
中设置 ZooKeeper 连接信息,如:
zookeeper.connect=zk1:2181,zk2:2181,zk3:2181
其中,zk1
, zk2
, zk3
是你 ZooKeeper 集群的地址。
启动 Kafka 服务器:
在每个 Kafka 服务器上运行以下命令启动 Kafka 服务器:
bin/kafka-server-start.sh config/server.properties
配置文件详解:
config/server.properties
包含了 Kafka 服务器的配置。根据需要修改其中的参数,如 listeners
、log.dirs
、num.partitions
等。JVM 配置:
config/server.properties
中的 KAFKA_HEAP_OPTS
来设置内存大小。硬盘与网络优化:
log.dirs
),确保 Kafka 有足够的磁盘空间。创建 Topic:
使用 kafka-topics.sh
工具创建主题,例如:
bin/kafka-topics.sh --create --topic my_topic --bootstrap-server kafka1:9092 --partitions 3 --replication-factor 2
查看 Topic 列表:
使用 kafka-topics.sh
工具查看已创建的主题列表:
bin/kafka-topics.sh --list --bootstrap-server kafka1:9092
查看 Topic 详细信息:
使用 kafka-topics.sh
工具查看主题的详细信息:
bin/kafka-topics.sh --describe --topic my_topic --bootstrap-server kafka1:9092
SSL 配置:
config/server.properties
文件,设置 SSL 配置项。SASL 配置:
config/server.properties
文件,设置 SASL 配置项。ACL 权限管理:
config/server.properties
文件,设置 ACL 配置项。认证与授权:
config/server.properties
文件,设置相应的配置项。请注意,确保配置和安全性设置符合你的生产环境需求。详细的配置选项和更多的信息可以参考 Kafka 的官方文档。
一定要注意脚本单机搭建风险提示,一定注意:
这个是在官网的基础上做了部分修改
- ui端口映射改到了8081,这个最好先试一下你的端口是否被占用了
lsof -i tcp:port
- es的镜像对于我的系统没有匹配的,也做了修改
- 官网默认没有挂载相关的日志以及数据,这里建议挂载一下。
- 启动之后如果出现登录网络异常,请稍微等一下再试,你可以看下manage的日志,还没有完全启动
- 首次启动之后init模块加载完成后会自动退出
version: '2' services: # *不要调整knowstreaming-manager服务名称,ui中会用到 knowstreaming-manager: image: knowstreaming/knowstreaming-manager:0.7.0 container_name: knowstreaming-manager privileged: true restart: always depends_on: - elasticsearch-single - knowstreaming-mysql expose: - 80 command: - /bin/sh - /ks-start.sh environment: TZ: Asia/Shanghai # mysql服务地址 SERVER_MYSQL_ADDRESS: knowstreaming-mysql:3306 # mysql数据库名 SERVER_MYSQL_DB: know_streaming # mysql用户名 SERVER_MYSQL_USER: root # mysql用户密码 SERVER_MYSQL_PASSWORD: admin2022_ # es服务地址 SERVER_ES_ADDRESS: elasticsearch-single:9200 # 服务JVM参数 JAVA_OPTS: -Xmx1g -Xms1g # 对于kafka中ADVERTISED_LISTENERS填写的hostname可以通过该方式完成 # extra_hosts: # - "hostname:x.x.x.x" # 服务日志路径 volumes: - /Users/xiaobo/DockerImage/knowstreaming/log:/logs knowstreaming-ui: image: knowstreaming/knowstreaming-ui:0.7.0 container_name: knowstreaming-ui restart: always ports: - '8081:80' environment: TZ: Asia/Shanghai depends_on: - knowstreaming-manager # extra_hosts: # - "hostname:x.x.x.x" elasticsearch-single: image: elasticsearch:7.16.3 container_name: elasticsearch-single restart: always expose: - 9200 - 9300 # ports: # - '9200:9200' # - '9300:9300' environment: TZ: Asia/Shanghai # es的JVM参数 ES_JAVA_OPTS: -Xms512m -Xmx512m # 单节点配置,多节点集群参考 https://www.elastic.co/guide/en/elasticsearch/reference/7.6/docker.html#docker-compose-file discovery.type: single-node # 数据持久化路径 volumes: - /Users/xiaobo/DockerImage/knowstreaming/data:/usr/share/elasticsearch/data # es初始化服务,与manager使用同一镜像 # 首次启动es需初始化模版和索引,后续会自动创建 knowstreaming-init: image: knowstreaming/knowstreaming-manager:0.7.0 container_name: knowstreaming-init depends_on: - elasticsearch-single command: - /bin/bash - /es_template_create.sh environment: TZ: Asia/Shanghai # es服务地址 SERVER_ES_ADDRESS: elasticsearch-single:9200 knowstreaming-mysql: image: knowstreaming/knowstreaming-mysql:0.7.0 container_name: knowstreaming-mysql restart: always environment: TZ: Asia/Shanghai # root 用户密码 MYSQL_ROOT_PASSWORD: admin2022_ # 初始化时创建的数据库名称 MYSQL_DATABASE: know_streaming # 通配所有host,可以访问远程 MYSQL_ROOT_HOST: '%' expose: - 3306 # ports: # - '3306:3306' # 数据持久化路径 volumes: - /Users/xiaobo/DockerImage/knowstreaming/mysql:/data/mysql
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。