kafka集群

DevOps Kafka评论1,489字数 5670阅读18分54秒阅读模式

1、操作系统:64位CentOS Linux release 7.2.1511 (Core)

2、jdk版本:1.8.0_121

3、zookeeper版本:zookeeper-3.4.9.tar.gz

4、三台服务器:192.168.1.91; 192.168.1.92; 192.168.1.93;

kafka集群

[vip]

安装zookeeper集群

下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/

拷贝zookeeper

先创建/soft目录,然后利用WinSCP拷贝到该目录下

[root@localhost /]# mkdir /soft

解压zookeeper

[root@localhost /]# cd /soft/

[root@localhost soft]# tar zxvf zookeeper-3.4.9.tar.gz

移动到/usr/local目录下

[root@localhost soft]# mv zookeeper-3.4.9 /usr/local/zookeeper

配置zookeeper

1、  创建数据目录

下面zoo.cfg配置文件的dataDir将会修改为这个目录

[root@localhost zookeeper]# cd /usr/local/zookeeper

[root@localhost zookeeper]# mkdir data

 

2、配置zoo.cfg

[root@localhost zookeeper]# cd conf

[root@localhost conf]# cp zoo_sample.cfg zoo.cfg

[root@localhost conf]# vi zoo.cfg

先把dataDir=/tmp/zookeeper注释,然后将下面四行代码添加到文件末尾

dataDir=/usr/local/zookeeper/data

server.1=192.168.1.91:2888:3888

server.2=192.168.1.92:2888:3888

server.3=192.168.1.93:2888:3888

 

3、创建myid文件

[root@localhost conf]# cd ../data

[root@localhost data]# touch myid

[root@localhost data]# echo "1">>myid

拷贝zookeeper

拷贝zookeeper到另外两台机器

[root@localhost data]# scp -r /usr/local/zookeeper root@192.168.1.92:/usr/local/

[root@localhost data]# scp -r /usr/local/zookeeper root@192.168.1.93:/usr/local/

中间会要求输入密码,分别输入你另外两台机器的密码就行了

 

修改myid文件

192.168.1.92的myid内容改为2

[root@localhost zookeeper]# cd /usr/local/zookeeper/data

[root@localhost data]# echo "2">myid

192.168.1.93的myid内容改为3

[root@localhost zookeeper]# cd /usr/local/zookeeper/data

[root@localhost data]# echo "3">myid

开启zookeeper端口

开启2888、3888、2181端口

[root@localhost data]# firewall-cmd --zone=public --add-port=2888/tcp --permanent

[root@localhost data]# firewall-cmd --zone=public --add-port=3888/tcp --permanent

[root@localhost data]# firewall-cmd --zone=public --add-port=2181/tcp --permanent

重启防火墙

[root@localhost data]# firewall-cmd --reload
启动zookeeper

1、启动(每台机器都要启动)

[root@localhost bin]# /usr/local/zookeeper/bin/zkServer.sh start

如果输出以下内容,表示启动成功

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED

2、  查看状态

[root@localhost data]# /usr/local/zookeeper/bin/zkServer.sh status

192.168.1.91

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower

192.168.1.92

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: leader

192.168.1.93

ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Mode: follower

由此我们看出192.168.1.92这台机器被自动选举为leader了

客户端连接

[root@localhost zookeeper]# /usr/local/zookeeper/bin/zkCli.sh -server 192.168.1.92:2181

最终如下图,表示连接成功:

kafka集群

 

安装kafka集群

访问网址:http://kafka.apache.org/

左侧导航栏最下面有个Download按钮,点进去

进入网址:http://kafka.apache.org/downloads

kafka集群

我写这篇笔记的时候,官方建议下载 kafka_2.11-1.0.0.tgz,我们选择编译好的tar包,即上图中红色框框标记的。

拷贝到centos系统

首先还得说明一下,因为我们要做集群,所以每台服务器的配置基本一样,只需要在一台服务器上安装好kafka,然后利用scp命令,拷贝到其它两台服务器,最后修改下参数就行了。所以我只将tar包拷贝到192.168.1.91这台服务器,在这台机器安装好后,拷贝到另外两台机器。

创建软件目录/soft,因为配置zookeeper时,已经创建了/soft目录,所以我们在这里不需要创建了

将在windows系统下载好的tar包利用WinSCP工具拷贝到centos系统(192.168.1.91)的/soft目录

解压kafka
[root@localhost data]# cd /soft

解压

[root@localhost soft]# tar -zxvf kafka_2.11-1.0.0.tgz

移动

[root@localhost soft]# mv kafka_2.11-1.0.0 /usr/local/kafka

配置kafka

[root@localhost local]# cd /usr/local/kafka/config/

[root@localhost config]# vi server.properties

Kafka的配置信息就是在server.properties里面配置的

找到下面两行代码并分别注释

#broker.id=0

#zookeeper.connect=localhost:2181

在文件底部添加如下三个配置:

broker.id=1

zookeeper.connect=192.168.1.91:2181,192.168.1.92:2181,192.168.1.93:2181

listeners = PLAINTEXT://192.168.1.91:9092

说明:如果是单机版的话,默认即可,我们什么都不需要改动。现在我们是要配置集群,所以需要配置一些参数

1、broker.id:每台机器不能一样

2、zookeeper.connect:因为我有3台zookeeper服务器,所以在这里zookeeper.connect设置为3台,必须全部加进去

3、listeners:在配置集群的时候,必须设置,不然以后的操作会报找不到leader的错误

WARN [Producer clientId=console-producer] Error while fetching metadata with correlation id 40 : {test=LEADER_NOT_AVAILABLE} (org.apache.kafka.clients.NetworkClient)

4、看好这一点,另外两台服务器,zookeeper.connect的配置跟这里的一样,但是broker.id和listeners不能一样

拷贝kafka到另外两台服务器
[root@localhost config]# scp -r /usr/local/kafka root@192.168.1.92:/usr/local/

[root@localhost config]# scp -r /usr/local/kafka root@192.168.1.93:/usr/local/

中间会要求输入目标机器的密码,按提示操作就行了,然后修改这两台服务器的broker.id和listeners,如下:

192.168.1.92

[root@localhost data]# cd /usr/local/kafka/config/

[root@localhost config]# vi server.properties

然后按Ctrl+D键,一直定位到文件最底部,修改broker.id和listeners:

broker.id=2

zookeeper.connect=192.168.1.91:2181,192.168.1.92:2181,192.168.1.93:2181

listeners = PLAINTEXT://192.168.1.92:9092

192.168.1.93

[root@localhost data]# cd /usr/local/kafka/config/

[root@localhost config]# vi server.properties

然后按Ctrl+D键,一直定位到文件最底部,修改broker.id和listeners:

broker.id=3

zookeeper.connect=192.168.1.91:2181,192.168.1.92:2181,192.168.1.93:2181

listeners = PLAINTEXT://192.168.1.93:9092

开启相关端口

三台机器都要开启,kafka通信默认是通过9092端口,也就是我们上面配的listeners

[root@localhost config]# firewall-cmd --zone=public --add-port=9092/tcp --permanent

[root@localhost config]# firewall-cmd --reload
启动zookeeper

三台都要启动

[root@localhost config]# /usr/local/zookeeper/bin/zkServer.sh start
启动kafka

三台都要启动

[root@localhost config]# /usr/local/kafka/bin/kafka-server-start.sh -daemon /usr/local/kafka/config/server.properties

jps命令检查是否启动成功

[root@localhost config]# jps

4352 Kafka

4416 Jps

4088 QuorumPeerMain

表示启动成功

创建topic

[root@localhost ~]# cd /usr/local/kafka/

[root@localhost kafka]# bin/kafka-topics.sh --create --zookeeper 192.168.1.91:2181 --replication-factor 1 --partitions 1 --topic test

如果成功的话,会输出:Created topic "test".

查看topic

虽然在192.168.1.91上创建的topic,但是另外两台机器上也能看到

到192.168.1.93客户端

[root@localhost ~]# cd /usr/local/kafka/

[root@localhost kafka]# bin/kafka-topics.sh --list --zookeeper 192.168.1.92:2181

这里的IP可以是192.168.1.91、192.168.1.92、192.168.1.93中的任何一个,在三台服务器中的任何一台都可以看到

我这里是在93机器上查看92的

创建发布

在192.168.1.91上创建

[root@localhost kafka]# bin/kafka-console-producer.sh --broker-list 192.168.1.91:9092 --topic test

你会看到:

kafka集群

创建消费

在192.168.1.92上消费

[root@localhost kafka]# bin/kafka-console-consumer.sh --bootstrap-server 192.168.1.92:9092 --topic test --from-beginning

你会看到:

kafka集群

[/vip]

继续阅读
DevOps
  • 本文由 发表于 2023年2月22日 14:34:01
  • 除非特殊声明,本站文章均为原创,转载请务必保留本文链接
  • kafka
评论  0  访客  0

发表评论