前几篇日记中,都没有包含服务器集群方面的内容。
本篇打算围绕如何做一个分布式Kafka集群,具体 有时间更新!
前提是准备三台虚拟机(我的是centos6.9)192.168.0.3,192.168.0.4,192.168.0.5
开始操作(关于zookeeper kafka rdkafka等安装编译此处省略,前篇文章中有,只讲解配置)
1.zookeeper
三台服务器均如下配置
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/opt/zookeeper/zookeeper-3.4.13/data
# the port at which the clients will connect
clientPort=2181
#three servers ip
#server.1 这个1是服务器的标识也可以是其他的数字, 表示这个是第几号服务器,用来标识服务器,这个标识要写到快照目录下面myid文件里
#192.168.0.3为集群里的IP地址,第一个端口是master和slave之间的通信端口,默认是2888,第二个端口是leader选举的端口,集群刚启动的时候选举或者leader挂掉之后进行新的选举的端口默认是3888
server.1=192.168.0.3:2888:3888
server.2=192.168.0.4:2888:3888
server.3=192.168.0.5:2888:3888
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
然后在dataDir目录/data/下写一个myid文件,命令如下:
echo 1 >myid // 192.168.0.3执行
echo 2 >myid // 192.168.0.4执行
echo 3 >myid // 192.168.0.5执行
注意:这个id是zookeeper的主机标示,每个主机id不同第二台是2 第三台是3。
依次启动:bin/zkServer.sh start
2.Kafka(2.1版本,offset存储在broker中,不在zookeeper中)
三个服务器server.properties分别配置broker.id = 10 11 12
broker.id=10
listeners=PLAINTEXT://192.168.0.3:9092
log.dirs=/tmp/kafka-logs-10
zookeeper.connect=192.168.0.3:2181,192.168.0.4:2181,192.168.0.5:2181
消费者配置consumer.properties
bootstrap.servers=192.168.0.3:9092,192.168.0.4:9092,192.168.0.5:9092
# consumer group id
group.id=test-consumer-group
生产者producer.properties
# list of brokers used for bootstrapping knowledge about the rest of the cluster
# format: host1:port1,host2:port2 ...
bootstrap.servers=192.168.0.3:9092,192.168.0.4:9092,192.168.0.5:9092
# specify the compression codec for all data generated: none, gzip, snappy, lz4, zstd
compression.type=none
依次启动:
bin/kafka-server.sh config/server.properties &
3.测试
// 在192.168.0.3中创建topic
bin/kafka-topics.sh --create --zookeeper 192.168.0.3:2181 --topic test --replication-factor 3 --partitions 3
// 在192.168.0.3中创建生产者
bin/kafka-console-producer.sh --broker-list 192.168.0.3:9092 --topic test
// 在192.168.0.4 和 192.168.0.5中尝试消费
bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.4:9092 --topic test --from-beginning
bin/kafka-console-consumer.sh --bootstrap-server 192.168.0.5:9092 --topic test --from-beginning
结果192.168.0.3生产者生产消息 192.168.0.4和192.168.0.5消费者均能收到消息 证明配置成功。