Centos7部署zookeeper和Kafka集群

 

Centos7部署zookeeper和Kafka集群

 

1             环境

java环境

三台服务器

必须解析域名

#cat /etc/hosts

10.6.76.27      kafka1
10.6.76.28      kafka2
10.6.76.18      kafka3

2             下载

kafka下载http://kafka.apache.org/downloads

wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.3.0/kafka-2.3.0-src.tgz

 

zookeeper下载 https://www.apache.org/dyn/closer.cgi/zookeeper/

wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

 

3             安装zookeeper

ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。

在zookeeper的选举过程中,为了保证选举过程最后能选出leader,就一定不能出现两台机器得票相同的僵局,所以一般的,要求zk集群的server数量一定要是奇数,也就是2n+1台,并且,如果集群出现问题,其中存活的机器必须大于n+1台,否则leader无法获得多数server的支持,系统就自动挂掉。所以一般是3个或者3个以上节点。

https://www.cnblogs.com/raphael5200/p/5285267.html

https://www.cnblogs.com/raphael5200/p/5285583.html

 

cd /home/admin #我的软件目录
sudo chown -R admin zookeeper*
tar -zxf zookeeper-3.4.14.tar.gz
mv zookeeper-3.4.14  /home/admin/elk
mkdir /home/admin/elk/zookeeper/data

 

#配置文件

#[admin@pe-jira conf]$ pwd
#/home/admin/elk/zookeeper/conf
#[admin@pe-jira conf]$ cat zoo.cfg
tickTime=2000
# Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。毫秒为单位。
initLimit=10
#集群中的follower服务器(F)与leader服务器(L)之间第一次连接最大的连接次数
syncLimit=5
#集群中的follower与leader之间发送和应答时间,能容忍的最多心跳数(tickTime的数量)。超出这个视为不可用
dataDir=/home/admin/elk/zookeeper/data
clientPort=2181
server.1=kafka1:2888:3888
server.2=kafka2:2888:3888
server.3=kafka-03:2888:3888

 

#同步数据

cd /home/admin/elk
scp -r zookeeper kafka2:~/elk
scp -r zookeeper kafka3:~/elk

 

#创建myid文件

创建一个myid文件,里面内容是server.N中的N(server.2里面内容为2)在其他节点上一定要修改myid的内容
echo "1" >>/home/admin/elk/zookeeper/data/myid

 

#启动集群

#分别启动zk

cd /home/admin/elk/zookeeper/bin
./zkServer.sh start

 

#端口检测

netstat -lntup|grep 2181

 

#查看角色状态

./zkServer.sh status

 

 

 

 

4             安装kafka

https://www.cnblogs.com/saneri/p/8762168.html

cd /home/admin/soft
tar -zxf kafka_2.11-2.3.0.tgz
mv kafka_2.11-2.3.0  kafka
mv kafka /home/admin/elk/
cd /home/admin/elk/kafka/

 

4.1        #同步

cd /home/admin/elk/
scp -r kafka kafka2:~/elk
scp -r kafka kafka3:~/elk

 

4.2        #配置文件

#[admin@pe-jira config]$ egrep -v "^$|#" server.properties

broker.id=1 
#三台不能一致
listeners=PLAINTEXT://10.6.76.27:9092
#本机IP
num.network.threads=3
num.io.threads=8
socket.send.buffer.bytes=102400
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
log.dirs=/tmp/kafka-logs
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=24  
#日志保留时间,默认7天168小时
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
zookeeper.connect=kafka1:2181,kafka2:2181,kafka3:2181
#3台zookeeper地址,可以IP也可以解析的域名
zookeeper.connection.timeout.ms=6000
group.initial.rebalance.delay.ms=0

 

4.3        #启动

/home/admin/elk/kafka/bin/kafka-server-start.sh -daemon /home/admin/elk/kafka/config/server.properties

 

 

4.4        #验证

4.4.1  进程验证

[admin@pe-jira elk]$ jps
13236 Kafka
6413 QuorumPeerMain
14958 Jps
8191 Bootstrap
[admin@pe-jira elk]$

 

 

4.4.2  topic验证

#创建topic
cd /home/admin/elk/kafka;

/home/admin/elk/kafka/bin/kafka-topics.sh --create --zookeeper kafka1:2181, kafka2:2181, kafka3:2181 --replication-factor 3 --partitions 3 --topic logstashtest

 

#显示topic

其他机器

 /home/admin/elk/kafka/bin/kafka-topics.sh --describe --zookeeper kafka1:2181, kafka2:2181, kafka3:2181 --topic logstashtest

 

 

 

#列出topic
/home/admin/elk/kafka/bin/kafka-topics.sh --list --zookeeper kafka1:2181, kafka2:2181, kafka3:2181

 

#删除topic
/home/admin/elk/kafka/bin/kafka-topics.sh --delete --zookeeper kafka1:2181, kafka2:2181, kafka3:2181 --topic logstashtest

/home/admin/elk/kafka/bin/kafka-topics.sh --list --zookeeper kafka1:2181, kafka2:2181, kafka3:2181

 

 

4.4.3  创建消息验证zk和kafka的结合

https://www.cnblogs.com/AK47Sonic/p/7629069.html

创建topic
/home/admin/elk/kafka/bin/kafka-topics.sh --create --zookeeper kafka1:2181, kafka2:2181, kafka3:2181 --replication-factor 3 --partitions 3 --topic messagetest

 

producer(生产者)生产消息
/home/admin/elk/kafka/bin/kafka-console-producer.sh --broker-list  kafka1:9092,kafka2:9092,kafka3:9092 --topic messagetest

 

消费者(consumer)测试消费

新版本消费者去掉了对zookeeper的依赖,当启动一个消费者时不再向zookeeper注册,而是由消费组协调器统一管理,已消费的消息偏移量提交后会保存到名为“__consumer_offsets”内部主题中启动一个新的消费者

这个__consumer_offsets topic也不允许删除

/home/admin/elk/kafka/bin/kafka-console-consumer.sh --bootstrap-server   kafka1:9092,kafka2:9092,kafka3:9092 --topic messagetest --from-beginning

 

posted on 2019-07-17 16:35  光阴8023  阅读(394)  评论(0编辑  收藏  举报