有三台linux机器:
机器IP HostName
192.168.137.164 server1
192.168.137.128 server2
192.168.137.131 server3
zookeeper版本:zookeeper-3.4.8.tar.gz
kafka版本:kafka_2.11-0.10.2.1.tgz
zookeeper集群部署
1、将下载的zookeeper解压到/opt/soft目录下
tar-zxvf zookeeper-3.4.8.tar.gz -C /opt/soft
2、进入zookeeper的conf目录
cd /opt/soft/zookeeper-3.4.8/conf
3、复制一份zoo_sample.cfg zoo.cfg
cp zoo_sample.cfg zoo.cfg
4、创建data目录
mkdir /opt/soft/zookeeper-3.4.8/data
5、修改zoo.cfg
vi zoo.cfg
修改:
dataDir=/opt/soft/zookeeper-3.4.8/data
新增:
server.1=server1:2888:3888
server.2=server2:2888:3888
server.3=server3:2888:3888
6、在data目录中创建myid并输入1
echo'1' > myid
7、scp zookeeper到其他机器
scp-r zookeeper-3.4.8 root@server2:/opt/soft/
scp-r zookeeper-3.4.8 root@server3:/opt/soft/
8、其他机器的data目录下的myid也相应更改,相应的server2为2,server3为3。
9、检查集群
分别在三台机器上执行:zkServer.sh start。
检查ZooKeeper状态:zkServer.sh status,应该是一个leader,两个follower。
使用jps检查三个节点是否都有QuromPeerMain进程。
kafka集群部署
kafka部署在上面的zookeeper集群上。
1、将下载的kafka解压到/opt/soft目录下
tar -zxvf kafka_2.11-0.10.2.1.tgz -C /opt/soft
2、进入kafka/libs目录
cd /opt/soft/kafka_2.11-0.10.2.1/libs
3、从zookeeper中复制zookeeper-3.4.8.jar
cp /opt/soft/zookeeper-3.4.8/zookeeper-3.4.8.jar ./
4、删除zookeeper-3.4.9.jar
rm zookeeper-3.4.9.jar
5、进入config目录
cd config/
6、创建kafka-logs目录
mkdir /opt/soft/kafka_2.11-0.10.2.1/kafka-logs
7、编辑server.properties
vi server.properties
broker.id:每台机器依次增长的整数,1、2、3,集群中Broker的唯一id。(和安装zookeeper的id一一对应)。
如果 delete.topic.enable 参数没有设置为true ,则删除topic 时,不会在zookeeper 上同步删除。
broker.id=1
delete.topic.enable=true
log.dirs=/opt/soft/kafka_2.11-0.10.2.1/kafka-logs
zookeeper.connect=server1:2181,server2:2181,server3:2181
# 192.168.137.164为server1的IP其他机器中需要自行修改。
listeners=PLAINTEXT://192.168.137.164:9092
advertised.listeners=PLAINTEXT://192.168.137.164:9092
8、scp到其他机器并按照规则更贵server.properties
scp-r /opt/soft/kafka_2.11-0.10.2.1/ server2:/opt/soft
scp-r /opt/soft/kafka_2.11-0.10.2.1/ server3:/opt/soft
9、依次在每台机器上启动kafka(在config/server.properties中设置zookeeper.connect参数,使得启动使用之前部署的zookeeper)
./bin/kafka-server-start.sh config/server.properties
启动成功会打印出如下信息表示启动成功。
INFO[Kafka Server 1], started (kafka.server.KafkaServer)
启动成功后查看jps进程发现出现kafka进程。
10、检查集群
创建topic(在每台机器中都部署topic ,将server名称换成你自己配置的名称)
./bin/kafka-topics.sh --zookeeper server1:2181,server2:2181,server3:2181 --topic TestTopic --replication-factor 1 --partitions 1 --create
创建producer
./bin/kafka-console-producer.sh --broker-list server1:9092,server2:9092,server3:9092 --topic TestTopic
创建consumer
./bin/kafka-console-consumer.sh --zookeeper server1:2181,server2:2181,server3:2181 --topic TestTopic --from-beginning
在生产端输入信息能够在消费端打印出来,证明已经没问题。
列出topic
./bin/kafka-topics.sh --delete --zookeeper server1:2181,server2:2181,server3:2181 --list
删除 topic
./bin/kafka-topics.sh --delete --zookeeper server1:2181,server2:2181,server3:2181 --topic TestTopic
如果 delete.topic.enable 参数没有设置为true ,则删除topic 时,不会在zookeeper上同步删除。
停止kafka 服务的命令
./bin/kafka-server-stop.sh