ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ZooKeeper和Kafka集群部署

2022-01-21 18:59:46  阅读:117  来源: 互联网

标签:bin zookeeper ZooKeeper 节点 集群 Kafka root zookeeper1 zookeeper2


1. 基础环境配置

(1)主机名配置

使用secureCRT对3台云主机进行连接。

3个节点修改主机名为zookeeper1、zookeeper2、zookeeper3,命令如下:

zookeeper1节点:

[root@localhost ~]# hostnamectl set-hostname zookeeper1

[root@localhost ~]# bash

[root@zookeeper1 ~]#

zookeeper2节点:

[root@localhost ~]# hostnamectl set-hostname zookeeper2

[root@localhost ~]# bash

[root@zookeeper2 ~]#

zookeeper3节点:

[root@localhost ~]# hostnamectl set-hostname zookeeper3

[root@localhost ~]# bash

[root@zookeeper3 ~]#

修改完之后重新连接secureCRT,并查看主机名:

zookeeper1节点:

[root@zookeeper1 ~]# hostnamectl

zookeeper2节点:

[root@zookeeper2 ~]# hostnamectl

zookeeper3节点:

[root@zookeeper3 ~]# hostnamectl

(2)配置hosts文件

3个节点修改/etc/hosts文件,3个节点均修改成如下代码所示:

[root@zookeeper1 ~]# vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.131.23 zookeeper1

192.168.131.32 zookeeper2

192.168.131.41 zookeeper3

(3)配置YUM源

将提供的gpmall-repo目录上传至3个节点的/opt目录下,首先将3个节点/etc/yum.repo.d目录下的文件移动到/media目录下,命令如下:

[root@zookeeper1 ~]# mv /etc/yum.repos.d/* /media/

在3个节点上创建/etc/yum.repo.d/local.repo,文件内容如下:

[root@zookeeper1 ~]# vi /etc/yum.repos.d/local.repo

[gpmall]

name=gpmall

baseurl=file:///opt/gpmall-repo

gpgcheck=0

enabled=1

[centos]

name=centos

baseurl=file:///opt/centos

gpgcheck=0

enabled=1

[root@zookeeper1 ~]# yum clean all

[root@zookeeper1 ~]# yum repolist

2. 搭建ZooKeeper集群

(1)安装JDK环境

3个节点安装Java JDK环境,3个节点均执行命令如下:

[root@zookeeper1 ~]# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

[root@zookeeper1 ~]# java -version

(2)解压ZooKeeper软件包

将zookeeper-3.4.14.tar.gz软件包上传至3个节点的/root目录下,进行解压操作,3个节点均执行命令如下:

[root@zookeeper1 ~]# tar -zxvf zookeeper-3.4.14.tar.gz

(3)修改3个节点配置文件

在zookeeper1节点,进入zookeeper-3.4.14/conf目录下,修改zoo_sample.cfg文件为zoo.cfg,并编辑该文件内容如下:

[root@zookeeper1 ~]# cd zookeeper-3.4.14/conf/

[root@zookeeper1 conf]# mv zoo_sample.cfg zoo.cfg

[root@zookeeper1 conf]# vi zoo.cfg

[root@zookeeper1 conf]# grep -n '^'[a-Z] zoo.cfg

server.1=192.168.131.23:2888:3888

server.2=192.168.131.32:2888:3888

server.3=192.168.131.41:2888:3888

命令解析:

l initLimit:ZooKeeper集群模式下包含多个zk进程,其中一个进程为leader,余下的进程为follower。当follower最初与leader建立连接时,它们之间会传输相当多的数据,尤其是follower的数据落后leader很多。initLimit配置follower与leader之间建立连接后进行同步的最长时间。

l syncLimit:配置follower和leader之间发送消息,请求和应答的最大时间长度。

l tickTime:tickTime则是上述两个超时配置的基本单位,例如对于initLimit,其配置值为5,说明其超时时间为 2000ms * 5 = 10秒。

l server.id=host:port1:port2:其中id为一个数字,表示zk进程的id,这个id也是dataDir目录下myid文件的内容。host是该zk进程所在的IP地址,port1表示follower和leader交换消息所使用的端口,port2表示选举leader所使用的端口。

l dataDir:其配置的含义跟单机模式下的含义类似,不同的是集群模式下还有一个myid文件。myid文件的内容只有一行,且内容只能为1 - 255之间的数字,这个数字亦即上面介绍server.id中的id,表示zk进程的id。

注意:zookeeper2和zookeeper3节点的操作与修改的配置和zookeeper1节点一样。

(4)创建myid文件

在3台机器dataDir目录(此处为/tmp/zookeeper)下,分别创建一个myid文件,文件内容分别只有一行,其内容为1,2,3。即文件中只有一个数字,这个数字即为上面zoo.cfg配置文件中指定的值。ZooKeeper是根据该文件来决定ZooKeeper集群各个机器的身份分配。

创建myid文件,命令如下:

zookeeper1节点:

[root@zookeeper1 conf]# mkdir /tmp/zookeeper

[root@zookeeper1 conf]# vi /tmp/zookeeper/myid

1

zookeeper2节点:

[root@zookeeper2 conf]# mkdir /tmp/zookeeper

[root@zookeeper2 conf]# vi /tmp/zookeeper/myid

2

zookeeper3节点:

[root@zookeeper3 conf]# mkdir /tmp/zookeeper

[root@zookeeper3 conf]# vi /tmp/zookeeper/myid

3

(5)启动ZooKeeper服务(关闭防火墙)

在3台机器的zookeeper-3.4.14/bin目录下执行命令如下:

zookeeper1节点:

[root@zookeeper1 ~]# cd zookeeper-3.4.14/bin/

[root@zookeeper1 bin]# ./zkServer.sh start

[root@zookeeper1 bin]# ./zkServer.sh status

zookeeper2节点:

[root@zookeeper2 ~]# cd zookeeper-3.4.14/bin/

[root@zookeeper2 bin]# ./zkServer.sh start

[root@zookeeper2 bin]# ./zkServer.sh status

zookeeper3节点:

[root@zookeeper3 ~]# cd zookeeper-3.4.14/bin/

[root@zookeeper3 bin]# ./zkServer.sh start

[root@zookeeper3 bin]# ./zkServer.sh status

可以看到,3个节点,zookeeper2为leader,其他的都是follower。

至此,ZooKeeper集群配置完毕。

注意:查看状态出现问题时,所有节点都启动一下,再查看状态。

搭建Kafka集群

(1)解压Kafka软件包

将提供的kafka_2.11-1.1.1.tgz软件包,上传至3个节点的/root目录下,并执行解压操作,3个节点执行的解压命令如下:

[root@zookeeper1 ~]# tar -zxvf kafka_2.11-1.1.1.tgz

(2)修改3个节点配置文件

在zookeeper1节点,进入kafka_2.11-1.1.1/config目录下,编辑server.properties文件。

在配置文件中找到以下两行并注释掉(在文本前加#)如下所示:

[root@zookeeper1 ~]# vi kafka_2.11-1.1.1/config/server.properties

#broker.id=0

#zookeeper.connect=localhost:2181

然后在配置文件的底部添加如下3个配置。

zookeeper1节点:

broker.id=1

zookeeper.connect=192.168.131.23:2181,192.168.131.32:2181,192.168.131.41:2181

listeners = PLAINTEXT://192.168.131.23:9092

命令解析:

l broker.id:每台机器不能一样。

l zookeeper.connect:因为有3台ZooKeeper服务器,所以在这里zookeeper.connect设置为3台。

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

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

zookeeper2节点:

broker.id=2

zookeeper.connect=192.168.131.23:2181,192.168.131.32:2181,192.168.131.41:2181

listeners = PLAINTEXT://192.168.131.32:9092

zookeeper3节点:

broker.id=3

zookeeper.connect=192.168.131.23:2181,192.168.131.32:2181,192.168.131.41:2181

listeners = PLAINTEXT://192.168.131.41:9092

(3)启动服务

在zookeeper1节点,进入kafka_2.11-1.1.1/bin目录下,启动服务命令如下。

zookeeper1节点:

[root@zookeeper1 ~]# cd kafka_2.11-1.1.1/bin/

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

[root@zookeeper1 bin]# jps

zookeeper2节点:

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

[root@zookeeper2 bin]# jps

zookeeper3节点:

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

[root@zookeeper3 bin]# jps

(4)测试服务

在zookeeper1节点,进入kafka_2.11-1.1.1/bin目录下,创建topic命令如下。

zookeeper1节点:

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

如果成功的话,会输出“Created topic "test".”。

查看topic,虽然topic是在172.16.51.23上创建的,但是在其他机器上也能看到。例如在任意启动的机器kafka_2.11-1.1.1/bin的目录中执行命令如下:

zookeeper2节点:

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

zookeeper3节点:

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

测试成功。

标签:bin,zookeeper,ZooKeeper,节点,集群,Kafka,root,zookeeper1,zookeeper2
来源: https://blog.csdn.net/Li_FengBiao/article/details/121491897

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有