生产环境要用到kafka,记录一下安装过程,其实最重要的不是安装,而是使用。
时间节点是2022年7月10日,zookeeper的版本是3.4.14:
1wget https://mirrors.cnnic.cn/apache/zookeeper/stable/zookeeper-3.4.14.tar.gz
kafka的版本是3.2,注意前面的2.13是scala的版本
1wget http://archive.apache.org/dist/kafka/3.2.0/kafka_2.13-3.2.0.tgz
软件都下载好以后,找三台服务器,软件都放到 /usr/local 路径下:
服务器的ip是:
1172.18.31.50
2172.18.31.51
3172.18.31.52
移动软件:
1tar zxvf zookeeper-3.4.14.tar.gz
2mv apache-zookeeper-3.6.3-bin /usr/local
3
4tar zxvf kafka_2.13-3.2.0.tgz
5mv kafka_2.13-3.2.0 /usr/local
然后得装 java 了,centos 版本
1yum -y install epel-release
2yum -y install java-11-openjdk-devel
首先去编辑zookeeper的配置文件,然后启动
1cp /usr/local/apache-zookeeper-3.6.3-bin/conf/zoo_sample.cfg /usr/local/apache-zookeeper-3.6.3-bin/conf/zoo.cfg
编辑zoo.cfg,增加几行
1dataDir=/data/zookeeper
2
3metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
4metricsProvider.httpPort=7000
5metricsProvider.exportJvmInfo=true
6
7server.0=172.18.31.50:20881:30881
8server.1=172.18.31.51:20881:30881
9server.2=172.18.31.52:20881:30881
注意上面,我们的数据目录是在/data/zookeeper,所以要先建立好目录结构
然后有三台服务器么,把各自的id放到文件中,然后20881是三台服务器之间的通讯端口,30881是选举端口
1mkdir /data/zookeeper -p
2echo 0 >/data/zookeeper/myid
三台服务器分别启动
1/usr/local/apache-zookeeper-3.6.3-bin/bin/zkServer.sh start
验证一下
1/usr/local/apache-zookeeper-3.6.3-bin/bin/zkCli.sh
2
3[zk: localhost:2181(CONNECTED) 1] ls /
4[admin, brokers, cluster, config, consumers, controller, controller_epoch, feature, isr_change_notification, latest_producer_id_block, log_dir_event_notification, zookeeper]
看看 / 下有东西就行了,上面是已经装好了 kafka 和 cruisecontrol的情形,东西就比较多了
然后装 kafka,先修改配置文件
1vi /usr/local/kafka_2.13-3.2.0/config/server.properties
2
3#需要修改的地方
4
5broker.id=0
6log.dirs=/data/kafka
7zookeeper.connect=172.18.31.50:2181,172.18.31.51:2181,172.18.31.52:2181
然后启动就可以了
1/usr/local/kafka_2.13-3.2.0/bin/kafka-server-start.sh -daemon /usr/local/kafka_2.13-3.2.0/config/server.properties
验证一下:
1# 新版的 kafka-topics.sh 命令已经变了
2
3cd /usr/local/kafka_2.13-3.2.0/bin
4
5# bootstrap-server 写一个就好,我们建立了一个 topic ,叫做 swimmingpool
6
7./kafka-topics.sh --create --bootstrap-server 172.18.31.50:9092 --replication-factor 3 --partitions 3 --topic swimmingpool
8
9# 看看细节
10
11./kafka-topics.sh --describe --bootstrap-server 172.18.31.50:9092 --topic swimmingpool
12Topic: swimmingpool TopicId: gOLXSh5NQPKMAwEroi_HcQ PartitionCount: 3 ReplicationFactor: 3 Configs: segment.bytes=1073741824
13 Topic: swimmingpool Partition: 0 Leader: 2 Replicas: 0,2,1 Isr: 2,1,0
14 Topic: swimmingpool Partition: 1 Leader: 2 Replicas: 2,1,0 Isr: 2,0,1
15 Topic: swimmingpool Partition: 2 Leader: 2 Replicas: 1,0,2 Isr: 2,0,1
16
17
18# 生产一些消息,ctrl+c 断出
19
20./kafka-console-producer.sh --bootstrap-server 172.18.31.50:9092 --topic swimmingpool
21
22>i am ok
23>i am fine
24>i am good
25
26# 消费这些消息,同样用 ctrl+c 断出,注意看,消息是倒序的
27
28./kafka-consoconsumer.sh --bootstrap-server 172.18.31.50:9092 --topic swimmingpool --from-beginning
29i am good
30i am fine
31i am ok
这样就装好了,但是安装只是第一步,重要的是 topic 的 reblance 以及 partion 的重新分布