下载zookeeper版本,3.5.16源码安装后发现启动脚本一些缺少.class等的java lib库,网上有人建议用3.4系列,
这里以3.4.14为例:
cd /opt/
wget http://apache.communilink.net/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
tar zxvf zookeeper-3.4.14.tar.gz
cd zookeeper-3.4.14/conf
cp zoo_sample.cfg zoo.cfg
vim /opt/zookeeper-3.4.14/conf/zoo.cfg
zoo.cfg需要可能更改的配置包括:
/opt/zookeeper-3.4.14
bin/zkServer.sh start conf/zoo.cfg
启动完查看是否成功用
bin/zkServer.sh status conf/zoo.cfg
执行jps可以看到QuorumPeerMain,也就是刚刚启动zooker进程
配置用户信息:
useradd kafka -m
usermod --shell /bin/bash kafka
usermod -aG wheel kafka
下载kafka:
curl http://apache.stu.edu.tw/kafka/2.3.1/kafka_2.11-2.3.1.tgz -o /home/kafka/Downloads/kafka.tgz
cd /home/kafka;tar -xvzf Downloads/kafka.tgz --strip 1
mkdir /home/kafka/Downloads
broker.id=0 delete.topic.enable=true
listeners=PLAINTEXT://localhost:9192
log.dirs=/tmp/kafka-logs_cluster1
zookeeper.connect=localhost:2281,localhost:2282
unclean.leader.election.enable=false
zookeeper.connection.timeout.ms=6000
broker.id设置了全局标识符,集群里是唯一,listener设置该broker的监听地址和端口,logs.dirs配置了kafka的磁盘路径,这个在kafka磁盘, 每条消息持久化底层存储,规定数量的broker成功接收才通知client发送成功。zookeeper.connect
配置了zookeeper的连接地址(?确认下)
cd /home/kafka
bin/kafka-server-start.sh -x -daemon config/server.properties
也可以把kafka写成一个服务,后续可以直接用service kafka start/stop/restart/status执行kafka相应操作。
[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Type=simple
User=kafka
ExecStart=/bin/sh -c '/home/kafka/bin/kafka-server-start.sh /home/kafka/config/server.properties > /home/kafka/kafka.log 2>&1'
ExecStop=/home/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
如果是跟我一样在内存很小的vps主机做集群环境搭建,那么启动kafka可能会这种内存错误
拷贝一份zoo.cfg
在zoo2.cfg修改以下参数:换个内存快照存放硬盘路径dataDir。换下kafka监听端口,配置和server.X的互动地址和端口
在dataDir路径的写一个myid文件,这个值为kafka的broker.id
启动zk会产生dataDir配置的目录(不用手动创建,用户组是kafka.kafka)
重复以上步骤,可以创建多份拷贝zooX.cfg,启动这些配置,同时观察状态:可以看到有个follower和leader的角色
jps观察到多个zk
复制多份kafka的配置文件。
在/home/kafka/config/目录下,做多分server.properties拷贝
需要个性化配置:(需要设置broker id和监听端口,和log.dirs目录,)
broker.id=0
delete.topic.enable=true
listeners=PLAINTEXT://localhost:9192
log.dirs=/tmp/kafka-logs_cluster1
zookeeper.connect=localhost:2281,localhost:2282
unclean.leader.election.enable=false
zookeeper.connection.timeout.ms=6000
如果logs.dirs是已存在的,记得先rm这个目录,清空log.dirs目录,也就是/tmp/kafka-logs_cluster1
相应的目录
在/etc/systemd/system/kafka1.service
写入脚本:
[Unit]
Requires=zookeeper.service
After=zookeeper.service
[Service]
Environment="KAFKA_HEAP_OPTS=-Xmx256M -Xms128M"
Type=simple
User=kafka
ExecStart=/bin/sh -c '/home/kafka/bin/kafka-server-start.sh /home/kafka/config/server_cluster1.properties > /home/kafka/kafka_cluster1.log 2>&1'
ExecStop=/home/kafka/bin/kafka-server-stop.sh
Restart=on-abnormal
[Install]
WantedBy=multi-user.target
其中设置变量Environment="KAFKA_HEAP_OPTS=-Xmx256M -Xms128M",是因为我的虚拟机起几个kafka,内存不够
后续就可以用service kafka1 restart了
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。