单机设置见上一遍文件"kafka",之前使用的是单机,
配置zookeeper集群(3台)
cd /usr/local/kafka_2.13-2.5.0/config
vim zk.properties
内容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper
clientPort=2181
#maxClientCnxns=0
admin.enableServer=false
server.1=192.168.0.30:2888:3888
server.2=192.168.0.31:2888:3888
server.3=192.168.0.32:2888:3888
4lw.commands.whitelist=*
server.1,server.2,server.3表示zookeeper群集对应的机器信息,其中server.后边的数字要跟dataDir设置的目录下的myid文件的值相同,如果文件不存在则新建
其中4lw.commands.whitelist是为了通过telnet方式查询指定机器的mode 信息
如telnet 192.168.0.30 2181
然后输入 stat
会返回0.30的stat信息
启动zookeeper(3台)
cd /usr/local/kafka_2.13-2.5.0
./bin/zookeeper-server-start.sh -daemon config/zk.properties
配置kafka集群(3台)
cd /usr/local/kafka_2.13-2.5.0/config
vim kafka1.properties
在上一遍的基础上修改broker.id,zookeeper.connection和zookeeper.connection.timeout.ms项:
broker.id=0
zookeeper.connect=192.168.0.30:2181,192.168.0.31:2181,192.168.0.32:2181
zookeeper.connection.timeout.ms=180000
其中broker.id的值如果原机器 上有数据需要保持broker.id的值不变,如果要变更broker.id则应该把对应的数据删除掉后才可启动成功,删除的文件在log.dirs=/tmp/kafka-logs对应的log.dirs目录里
三台配置主要区别在于broker.id
启动kafka(3台)
cd /usr/local/kafka_2.13-2.5.0
./bin/kafka-server-start.sh -daemon config/kafka1.properties
netstat -anp|grep 9092
端口存在 则表示 启动成功
在任意一台机器 上创建topic,在其它机器 里查看有同样的topic则表示集群正常,使用群集后记得topic的数据备份,只能启用了备份集群才可以当某一个机器宕机后,不影响正常访问。
./bin/kafka-topics.sh –create –zookeeper localhost:2181 –replication-factor 3 –partitions 3 –topic test
PHP使用的话跟单机使用相同,只要修改metadata.broker.list为多个值即可。
kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection while in state: CONNECTING
这个问题的是由于kafka启动的时候连接zookeeper比较慢, 把超时时间设置大一点就可以了,默认是6000ms
server.properties中增加
zookeeper.connection.timeout.ms=6000000