设备和资源准备
- 多台服务器(ps:我这里用了三台)
- kafka_2.11-2.3.1.tgz
- jdk8以上的环境
首先要关闭防火墙
查看防火墙状态: firewall-cmd --state 停止防火墙:systemctl stop firewalld.service 开机禁止防火墙: systemctl disable firewalld.service
服务器分布如下:
服务器 | Myid |
---|---|
10.240.1.5 | 3 |
10.240.1.6 | 2 |
10.240.1.7 | 1 |
解压kafka jar包并修改配置
tar -zxvf kafka_2.11-2.3.1.tgz
解压之后进入kafka文件夹
新建文件夹log和zookeeper 目录结构如下
image.png
ps:logs文件夹是系统自动生成的
1、创建myid文件,进入zookeeper之后
vi myid
然后输入
服务器 | myid |
---|---|
10.240.1.5 | 3 |
10.240.1.6 | 2 |
10.240.1.7 | 1 |
不同的服务器对应不同的myid,切记重复。
然后在当前文件夹下执行
echo "1" > myid
echo "2" > myid
echo "3" > myid
2、然后进入config文件夹,修改kafka的配置文件 server.properties
broker.id=2
这个在不同的服务器上修改成对应的编号,要和myid保持一致。
listeners=PLAINTEXT://10.240.1.5:9092
advertised.listeners=PLAINTEXT://10.240.1.5:9092
修改成自己服务器的ip
zookeeper.connect=10.240.1.5:2181,10.240.1.6:2181,10.240.1.7:2181
指定日志生成位置
log.dirs=/u01/app/kafka/kafka_2.11-2.3.1/log/kafka
以上是kafka的配置文件修改
3、修改zookeeper的配置文件 zookeeper.properties
maxClientCnxns=100
tickTime=2000
initLimit=10
syncLimit=5
server.1=10.240.1.5:2888:3888
server.2=10.240.1.6:2888:3888
server.3=10.240.1.7:2888:3888
末尾加上以上配置信息
指定日志生产位置
dataDir=/root/kafka/kafka_2.11-2.3.1/zookeeper dataLogDir=/root/kafka/kafka_2.11-2.3.1/log/zookeeper
4、关键的一步,核对和broker.id保持一致的设置
进入到 /root/kafka/kafka_2.11-2.3.1/log/kafka
然后
编辑这个文件,里面有broker.id= 修改自己对应的id
至此修改配置的工作已完成,切记每台服务器都不要漏掉
运行zookeeper集群和kafka集群
1、首先是启动每台服务器上的zookeeper
后台启动命令
nohup ./zookeeper-server-start.sh ../config/zookeeper.properties >../log/zookeeper/zookeeper-run.log 2>&1 &
日志位置路径要修改成自己的路径信息
前台启动命令
./zookeeper-server-start.sh ../config/zookeeper.properties
2、启动每台服务器上的kafka
后台启动命令
nohup ./kafka-server-start.sh ../config/server.properties >../log/kafka/kafka-run.log 2>&1 &
前台启动命令
./kafka-server-start.sh ../config/server.properties
3、创建topic
我们把myid=1的作为主节点,在此服务器上创建topic主题
./kafka-topics.sh --create --zookeeper 10.240.1.5:2181,10.240.1.6:2181,10.240.1.7:2181 --replication-factor 1 --partitions 1 --topic test_kafkaEFR
然后去每台服务器检查是否创建成功
./kafka-topics.sh -list -zookeeper localhost:2181
4、发送消息,测试消息同步
我们在主节点服务器上发送消息
./kafka-console-producer.sh --broker-list 10.240.1.5:9092 ,10.240.1.6:9092 ,10.240.1.7:9092 --topic test_kafkaEFR
然后各自服务器消费消息
./kafka-console-consumer.sh --bootstrap-server 10.240.1.5:9092 ,10.240.1.6:9092 ,10.240.1.7:9092 --topic test_kafkaEFR --from-beginning
如果能同步接收,至此集群部署完成 ps:启动kafka的时候要同时启动,不然会报错
卡夫卡消息读取的客户端
微信图片_20200116101851.png
网友评论