0 环境准备
准备三台虚拟机,初始化一下机器环境(主要是安装jdk)
机器名称 | IP地址 | 对应域名 |
---|---|---|
centos7.2M | 192.168.235.128 | a.node.com |
centos7.2N | 192.168.235.130 | b.node.com |
centos7.2O | 192.168.235.131 | c.node.com |
为了安装方便,建议对三台机器进行免密登录设置,由于配置文件基本都是相似的,所以M机器上安装完成后可以通过scp的方式软件以及配置文件复制过去进行简单的修改即可。
将以下信息写入 /etc/hosts文件中
192.168.235.128 a.node.com
192.168.235.130 b.node.com
192.168.235.131 c.node.com
添加节点hosts
echo -e "192.168.235.128 a.node.com \n192.168.235.130 b.node.com \n192.168.235.131 c.node.com" >> /etc/hosts
注意点:
1 关闭各个节点的防火墙
2 zookeeper && kafka 的软件安装都放在了 /etc/local/software目录下面
1 安装zk集群
1.1 下载zookeeper
cd /etc/local/software
## 两种下载方式都可以
curl -L -O https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz
1.2 解压文件并配置
tar -xvf zookeeper-3.4.13.tar.gz
cd /usr/local/software/zookeeper-3.4.13/conf 创建 zoo.cfg
zk 配置文件如下
## 这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
tickTime=2000
## 这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 5个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 5*2000=10 秒
initLimit=10
## 这个配置项标识 Leader 与Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是5*2000=10秒
syncLimit=5
## 事物日志的存储路径,如果不配置这个那么事物日志会默认存储到dataDir制定的目录,这样会严重影响zk的性能,当zk吞吐量较大的时候,产生的事物日志、快照日志太多
dataLogDir=/opt/zookeeper/logs
## 快照日志的存储路径
dataDir=/opt/zookeeper/data
## 端口
clientPort=2181
autopurge.snapRetainCount=500
autopurge.purgeInterval=24
server.1=a.node.com:2888:3888
server.2=b.node.com:2888:3888
server.3=c.node.com:2888:3888
修改为a节点配置文件后,将zookeeper复制到b节点和c节点
scp -r zookeeper-3.4.13 root@b.node.com:/usr/local/software/
scp -r zookeeper-3.4.13 root@c.node.com:/usr/local/software/
然后在a/b/c接点上依次执行
a节点 echo "1" > /opt/zookeeper/data/myid
b节点 echo "2" > /opt/zookeeper/data/myid
c节点 echo "3" > /opt/zookeeper/data/myid
1.3 启动
执行完成之后,依次启动a/b/c 接点即可
启动&&查看状态
cd /usr/local/software/zookeeper-3.4.13/bin && sh zkServer.sh start
## 启动| 前台启动|停止|重启| 查看状态 |
{start|start-foreground|stop|restart|status|upgrade|print-cmd}
## 查看状态
sh zkServer.sh status
## 连接zk
sh zkClient.sh
quit 退出连接
至此,zk集群搭建完毕
2 kafka 集群搭建
2.1 kafka下载
### cd /usr/local/software
curl -L -O https://archive.apache.org/dist/kafka/1.1.0/kafka_2.11-1.1.0.tgz
tar -xvf kafka_2.11-1.1.0.tgz
2.2 修改配置文件
cd /usr/local/software/kafka_2.11-1.1.0/config
修改server.properties
broker.id=1
port=9092
num.network.threads=3
num.io.threads=8
log.dirs=/opt/kafka/kafkalogs/
socket.send.buffer.bytes=102400
num.partitions=2
log.retention.hours=168
message.max.byte=5242880
default.replication.factor=2
replica.fetch.max.bytes=5242880
log.retention.check.interval.ms=300000
log.cleaner.enable=true
zookeeper.connect=a.node.com:2181,b.node.com:2181,c.node.com:2181
修改完配置后将文件发送到 b/c两个节点上,修改broker.id b修改为2 c 修改为3
2.3 启动kafka 集群
在 a/b/c 节点上依次执行
## -daemon 为后台启动
cd /usr/local/software/kafka_2.11-1.1.0/ && ./bin/kafka-server-start.sh -daemon config/server.properties
## 停止集群
cd /usr/local/software/kafka_2.11-1.1.0/ && ./bin/kafka-server-stop.sh
2.4 安装管理工具
https://github.com/quantifind/KafkaOffsetMonitor
## 查看管理平台
java -cp KafkaOffsetMonitor-assembly-0.2.0.jar \
com.quantifind.kafka.offsetapp.OffsetGetterWeb \
--zk a.node.com:2181,b.node.com:2182,c.node.com:2181 \
--port 8088 \
--refresh 10.seconds \
--retain 2.days
2.5 kafka 操作
## 创建topic
./bin/kafka-topics.sh --create --zookeeper a.node.com:2181,b.node.com:2181,c.node.com:2181 --replication-factor 3 --partitions 3 --topic test-topic
## 列出topic
./bin/kafka-topics.sh --list --zookeeper a.node.com:2181,b.node.com:2181,c.node.com:2181
## 模拟发送
./bin/kafka-console-producer.sh --broker-list a.node.com:9092,b.node.com:9092,c.node.com:9092 --topic test-topic
## 模拟接受
./bin/kafka-console-consumer.sh --zookeeper a.node.com:2181,b.node.com:2181,c.node.com:2181 --from-beginning --topic test-topic
## 查看topic detail
./bin/kafka-topics.sh --describe --zookeeper a.node.com:2181,b.node.com:2181,c.node.com:2181 --topic test-topic
## 启动zk
cd /usr/local/software/zookeeper-3.4.13/bin/ && sh zkServer.sh start
stop
cd /usr/local/software/zookeeper-3.4.13/bin/ && sh zkServer.sh stop
## 启动kafka 后台启动kafka
cd /usr/local/software/kafka_2.11-1.1.0/ && ./bin/kafka-server-start.sh -daemon config/server.properties
## 启动kafka 前台启动kafka
cd /usr/local/software/kafka_2.11-1.1.0/ && ./bin/kafka-server-start.sh config/server.properties
至此,zk&&kafka集群搭建完毕!
网友评论