4. CentOS 7 中 zookeeper 集群搭建

zookeeper集群规划

服务器IP主机名myid的值
192.168.159.150node11
192.168.159.151node22
192.168.159.152node33
  • 第一步:下载zookeeeper的压缩包
  • 第二步:解压
  • 第三步:修改配置文件zoo.cfg
  • 第四步:添加myid配置
  • 第五步:安装包分发给其他节点并修改其他节点的myid的值
  • 第六步:所有节点(三台机器)启动zookeeper服务
  • (以上前四步只需要在一个固定的节点做即可)

1.前期准备

  • 本文只适合CentOS 7
  • 所有节点都安装了JDK
  • 每个节点都有创建了目录
    mkdir -p /export/software
    mkdir -p /export/servers
  • 准备zookeeper压缩包
  • 所有节点进行了主机名与IP地址的映射,如果没有,切记要将本文中所有用到主机名的地方改为IP地址

2.zookeeper下载地址:

  • http://archive.apache.org/dist/zookeeper/
  • 下载最新版本的zookeeper压缩包要注意: 一定要下载以-bin.tar.gz结尾的压缩包,不要下载以.tar.gz结尾的压缩包,否则后面启动zookeeper的时候会报错(错误: 找不到或无法加载主类org.apache.zookeeper.server.quorum.QuorumPeerMain)
  • 原因: 从版本3.5.5开始,带有bin名称的包才是我们想要的、下载可以直接使用的、里面是编译后的二进制的包,而普通的tar.gz只是源码的包,无法直接使用

在这里插入图片描述

3.上传文件命令rz -E的安装与使用

##安装lrzsz插件,用于从本主机上传文件到linux
[root@node1 ~]# yum install -y lrzsz

##输入rz -E命令,回车
[root@node1 ~]# rz -E
rz waiting to receive.
Starting zmodem transfer.  Press Ctrl+C to cancel.
Transferring apache-zookeeper-3.6.2-bin.tar.gz...
  100%   12222 KB    12222 KB/sec    00:00:01       0 Errors

在这里插入图片描述
在这里插入图片描述

4.解压

##这里是创建目录,为了存放自己上传的压缩包及解压后的文件
##为了方便使用,所有节点都创建成一样的目录
##目录名称自己定义即可
[root@node1 ~]# mkdir -p /export/software
[root@node1 ~]# mkdir -p /export/servers
##移动文件到/export/software/目录
[root@node1 ~]# mv apache-zookeeper-3.6.2-bin.tar.gz /export/software/

[root@node1 ~]# cd /export/software/

##解压文件到/export/servers/目录
[root@node1 software]# tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz -C ../servers/

5.修改配置文件zoo.cfg

[root@node1 software]# cd ../servers/
[root@node1 servers]# cd apache-zookeeper-3.6.2-bin/conf/

##复制zoo_sample.cfg文件到zoo.cfg
[root@node1 conf]# cp zoo_sample.cfg zoo.cfg

##先创建下面的目录,再修改zoo.cfg的内容
[root@node1 conf]# mkdir -p /export/servers/apache-zookeeper-3.6.2-bin/zkdatas/

[root@node1 conf]# vi zoo.cfg

##在zoo.cfg文件中更改以下内容
dataDir=/export/servers/apache-zookeeper-3.6.2-bin/zkdatas/
#保留多少个快照
autopurge.snapRetainCount=3
#日志多少小时清理一次
autopurge.purgeInterval=1
##在zoo.cfg文件中增加以下内容
#集群中服务器地址
server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

6.添加myid配置

##在下面的目录下创建myid文件
[root@node1 conf]# cd /export/servers/apache-zookeeper-3.6.2-bin/zkdatas/

[root@node1 zkdatas]# vi myid
##在该文件中添加如下内容
1

7.安装包分发给其他节点并修改其他节点的myid的值

[root@node1 zkdatas]# cd /export/servers/

##在执行下面的命令时,需要先在其他节点创建相应的目录(/export/software//export/servers/)
##下面的路径是相对路径,必须在下面的目录下执行
[root@node1 servers]# scp -r /export/servers/apache-zookeeper-3.6.2-bin/ node2:$PWD

##下面的路径是绝对路径,不需要在下面的目录下执行
[root@node1 servers]# scp -r /export/servers/apache-zookeeper-3.6.2-bin/ node3:/export/servers/
[root@node2 ~]# cd /export/servers/apache-zookeeper-3.6.2-bin/zkdatas/
[root@node2 zkdatas]# vi myid
##修改myid中的内容为如下内容
2

[root@node3 ~]# cd /export/servers/apache-zookeeper-3.6.2-bin/zkdatas/
[root@node3 zkdatas]# vi myid
##修改myid中的内容为如下内容
3

8.所有节点(三台机器)启动zookeeper服务

[root@node1 servers]# cd apache-zookeeper-3.6.2-bin/
您在 /var/spool/mail/root 中有新邮件
[root@node1 apache-zookeeper-3.6.2-bin]# bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /export/servers/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
  • 通过查看是否存在QuorumPeerMain,验证zookeeper是否成功启动
##通过是否存在QuorumPeerMain,验证zookeeper是否成功启动
[root@node1 apache-zookeeper-3.6.2-bin]# jps
1223 QuorumPeerMain
1259 Jps
  • 查看zookeeper的启动状态(zookeeper选举机制)
    ①我是先在node1节点启动zookeeper,然后再node2节点启动zookeeper,最后在node3节点启动zookeeper。
    ②由于node1与node2启动后(此时node3还没启动,不参与选举),已经存在2个zookeeper服务,因此可以通过myid与ZXID的大小来选举leader(即服务器启动时期的Leader选举)。
    ③我没有在这3台机器上设置ZXID,因此只能通过我上面设置的myid来进行选举,由于node2的myid设置的值为“2”,大于node1设置的myid值“1”,node3又不能参与选举,所以node2被选为leader,在node3中的zookeeper服务启动后,leader已经被选举成功,所以node3与node1一样,都成为follower
[root@node1 apache-zookeeper-3.6.2-bin]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /export/servers/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
[root@node2 apache-zookeeper-3.6.2-bin]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /export/servers/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
[root@node3 apache-zookeeper-3.6.2-bin]# bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /export/servers/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
  • Zookeeper的Shell 客户端操作
  • bin/zkCli.sh -server node1:2181

  • 也可直接写 bin/zkCli.sh -server ,此时表示登录本机客户端,在他后面加入node2:2181,可以登入指定地址的客户端。

  • 代码中的端口号 2181 是在 /export/servers/apache-zookeeper-3.6.2-bin/conf/ 地址中有一个zoo.cfg文件,该文件在有一行代码clientPort=2181

[root@node1 ~]# cd /export/servers/apache-zookeeper-3.6.2-bin/conf/
[root@node1 conf]# ls
configuration.xsl  log4j.properties  zoo.cfg  zoo_sample.cfg

##查看端口号
[root@node1 conf]# vi zoo.cfg
clientPort=2181
  • 登入和退出zookeeper客户端
####  输入下面命令登录Zookeeper客户端
[root@node1 ~]# cd /export/servers/apache-zookeeper-3.6.2-bin/
[root@node1 apache-zookeeper-3.6.2-bin]# bin/zkCli.sh -server node1:2181

#### 输入quit退出
[zk: node1:2181(CONNECTED) 0] quit
[root@node1 apache-zookeeper-3.6.2-bin]# 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值