Zookeeper分布式搭建

N.1 分布式安装部署

0)前言环境准备

(1)前提环境要安装jdk,如果不配置环境变量的话,可以在zookeeper/bin目录下指定jdk路径。

有时候一个linux,有其他的同事安装了jdk,说以未来防止冲突,可以自己指定路径。

vi bin/zkEnv.sh #备注zkEnv.cmd是配置win的,zkEnv.sh是配置linux的

export JAVA_HOME=/usr/local/src/jdk1.8(换成你自己的jdk路径)

(2)其实每一个组件都可以指定jdk的路径,只要在改组件的bin/目录下查找所有命令,然后用内容扫描工具对JAVA_HOME进行扫描,找的了该文件,就使用 export JAVA_HOME=xxx 导入路劲即可

第三方工具指定JDK路径思路.note

1)集群规划

在bigdata111、bigdata112和bigdata113三个节点上部署Zookeeper。

2)解压安装

(1)解压zookeeper安装包到/softWare/目录下

[itstar@bigdata111 softWare]$ tar  -zxvf  zookeeper-3.4.10.tar.gz  -C  /softWare/

(2)在/softWare/zookeeper-3.4.10/这个目录下创建zkData(由于存放数据的目录)

    mkdir  -p  zkData

(3)重命名/softWare/zookeeper-3.4.10/conf这个目录下的zoo_sample.cfg为zoo.cfg

配置文件只识别zoo.cfg;

    mv  zoo_sample.cfg  zoo.cfg

3)配置环境变量

    [root@bigdata111 softWare]$ vi /etc/profile

    export ZOOKEEPER_HOME=/softWare/zookeeper-3.4.10

export PATH=$PATH:$ZOOKEEPER_HOME/bin(也可以在原来的PATH后面拼接上去)

:wq

[root@bigdata111 softWare]$source /etc/profile

4)配置zoo.cfg文件修改

 (1)具体配置:

  clientPort=2181  # 客户端端口号 主要用于hadoopkafka等进行通信的

      dataDir=/softWare/zookeeper-3.4.10/zkData

      server.1=bigdata111:2888:3888 # 添加集群地址

      server.2=bigdata112:2888:3888

      server.3=bigdata113:2888:3888

(2)配置参数解读

      Server.A=B:C:D

      A是一个数字,表示这个是第几号(myid文件)服务器;

      B是这个服务器的ip地址;

      C是这个服务器与集群中的Leader服务器交换信息的端口;

      D是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,

      而这个端口就是用来执行选举时服务器相互通信的端口。

集群模式下配置一个文件myid,这个文件在dataDir=/softWare/zookeeper-3.4.10/zkData目录下,这个文件里面有一个数据就是A的值,Zookeeper启动时读取此文件,拿到里面的数据与zoo.cfg里面的配置信息比较从而判断到底是哪个server。

5)集群操作

(1)在/softWare/zookeeper-3.4.10/zkData目录下创建一个myid的文件

        touch myid

添加myid文件,注意一定要在linux里面创建,在notepad++里面很可能乱码

(2)编辑myid文件

        vi myid

        在文件中添加与server对应的编号:如 2 。

(3)拷贝配置好的zookeeper到其他机器上

        scp -r zookeeper-3.4.10/ root@bigdata112.itstar.com:/softWare/

        scp -r zookeeper-3.4.10/ root@bigdata113.itstar.com:/softWare/

        并分别修改myid文件中内容为3、4自定义。

(4)分别启动zookeeper

       [root@bigdata111 zookeeper-3.4.10]# bin/zkServer.sh start

       [root@bigdata112 zookeeper-3.4.10]# bin/zkServer.sh start

       [root@bigdata113 zookeeper-3.4.10]# bin/zkServer.sh start

(5)查看状态

       [root@bigdata111 zookeeper-3.4.10]# bin/zkServer.sh status

       JMX enabled by default

       Using config: /softWare/zookeeper-3.4.10/bin/../conf/zoo.cfg

       Mode: follower

      

  [root@bigdata112 zookeeper-3.4.10]# bin/zkServer.sh status

       JMX enabled by default

       Using config: /softWare/zookeeper-3.4.10/bin/../conf/zoo.cfg

       Mode: leader

      

 [root@bigdata113 zookeeper-3.4.5]# bin/zkServer.sh status

       JMX enabled by default

       Using config: /softWare/zookeeper-3.4.10/bin/../conf/zoo.cfg

       Mode: follower

N.2 zookeeper命令操作

1)节点启动和关闭等命令

(1)启动zookeeper:bin/zkServer.sh start

查看进程是否启动:jps

停止zookeeper:bin/zkServer.sh stop

查看该节点状态:bin/zkServer.sh status

(2)启动客户端 bin/zkCli.sh #会进入命令行

退出客户端是 quit

2)客户端操作命令

命令基本语法

功能描述

help

显示所有操作命令

ls 目录 [watch]

使用 ls 命令来查看当前znode中所包含的内容。

[watch]表示监听,可以在不同节点的进行监听。监控只能是开一次监控,就捕捉一次其它znode的行为,如果其它znode产生第二次行为,就监控不到,所以要在开一次监控。

ls2 目录 [watch]

查看当前节点数据并能看到更新次数等数据

create [-s]  [-e]  目录 数值

目录相当于key,数值相当于value。

[-s] 表示含有序列。

[-e]  表示临时(重启或者超时消失),默认情况下是永久

get 目录 [watch]

获得节点的值,[watch]表示监听,可以在不同节点的进行监听,

set  目录 新数值

设置节点的具体值

stat  目录

查看节点状态

delete  目录

删除节点

rmr  目录

递归删除节点

quit

退出客户端

N.3 操作命令演示

1)启动客户端

[itstar@bigdata112 zookeeper-3.4.10]$ bin/zkCli.sh

2)显示所有操作命令

[zk: localhost:2181(CONNECTED) 1] help

3查看当前znode中所包含的内容

[zk: localhost:2181(CONNECTED) 0] ls  /

[zookeeper]

4查看当前节点数据并能看到更新次数等数据

[zk: localhost:2181(CONNECTED) 1] ls2  /

[zookeeper]

cZxid = 0x0

ctime = Thu Jan 01 08:00:00 CST 1970

mZxid = 0x0

mtime = Thu Jan 01 08:00:00 CST 1970

pZxid = 0x0

cversion = -1

dataVersion = 0

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 0

numChildren = 1

5创建普通节点

[zk: localhost:2181(CONNECTED) 2] create  /app1  "hello app1"

Created /app1

[zk: localhost:2181(CONNECTED) 4] create  /app1/server101  "192.168.1.101"

Created /app1/server101

6)获得节点的值

[zk: localhost:2181(CONNECTED) 6] get /app1

hello app1

cZxid = 0x20000000a

ctime = Mon Jul 17 16:08:35 CST 2017

mZxid = 0x20000000a

mtime = Mon Jul 17 16:08:35 CST 2017

pZxid = 0x20000000b

cversion = 1

dataVersion = 0

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 10

numChildren = 1

[zk: localhost:2181(CONNECTED) 8] get /app1/server101

192.168.1.101

cZxid = 0x20000000b

ctime = Mon Jul 17 16:11:04 CST 2017

mZxid = 0x20000000b

mtime = Mon Jul 17 16:11:04 CST 2017

pZxid = 0x20000000b

cversion = 0

dataVersion = 0

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 13

numChildren = 0

7创建短暂节点

[zk: localhost:2181(CONNECTED) 9] create -e /app-emphemeral 8888

(1)在当前客户端是能查看到的

[zk: localhost:2181(CONNECTED) 10] ls  /

[app1, app-emphemeral, zookeeper]

(2)退出当前客户端然后再重启客户端

   [zk: localhost:2181(CONNECTED) 12] quit

[itstar@bigdata113 zookeeper-3.4.10]$ bin/zkCli.sh

(3)再次查看根目录下短暂节点已经删除

   [zk: localhost:2181(CONNECTED) 0] ls  /

[app1, zookeeper]

8创建带序号的节点

(1)先创建一个普通的根节点app2

   [zk: localhost:2181(CONNECTED) 11] create /app2 "app2"

(2)创建带序号的节点

   [zk: localhost:2181(CONNECTED) 13] create -s /app2/aa 888

Created /app2/aa0000000000

[zk: localhost:2181(CONNECTED) 14] create -s /app2/bb 888

Created /app2/bb0000000001

[zk: localhost:2181(CONNECTED) 15] create -s /app2/cc 888

Created /app2/cc0000000002

如果原节点下有1个节点,则再排序时从1开始,以此类推。

[zk: localhost:2181(CONNECTED) 16] create -s /app1/aa 888

Created /app1/aa0000000001

9修改节点数据值

[zk: localhost:2181(CONNECTED) 2] set /app1 999

10)节点的值变化监听get命令

 (1)在104主机上注册监听/app1节点数据变化

[zk: localhost:2181(CONNECTED) 26] get  /app1  watch

此时是悬浮监听状态...

 (2)在103主机上修改/app1节点的数据

[zk: localhost:2181(CONNECTED) 5] set /app1  777

 (3)观察104主机收到数据变化的监听

WATCHER::

WatchedEvent state:SyncConnected type:NodeDataChanged path:/app1

11节点的子节点变化监听 ls命令 (路径变化)

 (1)在104主机上注册监听/app1节点的子节点变化

[zk: localhost:2181(CONNECTED) 1] ls /app1 watch

[aa0000000001, server101]

此时是悬浮监听状态...

 (2)在103主机/app1节点上创建子节点

[zk: localhost:2181(CONNECTED) 6] create /app1/bb 666

Created /app1/bb

 (3)观察104主机收到子节点变化的监听

WATCHER::

WatchedEvent state:SyncConnected type:NodeChildrenChanged path:/app1

12删除节点

[zk: localhost:2181(CONNECTED) 4] delete /app1/bb

13)递归删除节点

[zk: localhost:2181(CONNECTED) 7] rmr /app2

14)查看节点状态

[zk: localhost:2181(CONNECTED) 12] stat /app1

cZxid = 0x20000000a

ctime = Mon Jul 17 16:08:35 CST 2017

mZxid = 0x200000018

mtime = Mon Jul 17 16:54:38 CST 2017

pZxid = 0x20000001c

cversion = 4

dataVersion = 2

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 3

numChildren = 2

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 搭建Zookeeper分布式环境的步骤如下: 1.下载Zookeeper安装包并解压。 2.在每台服务器上创建一个Zookeeper数据目录。 3.在每台服务器上创建一个配置文件,指定Zookeeper的数据目录、端口号、集群节点等信息。 4.在每台服务器上启动Zookeeper服务。 5.在其中一台服务器上创建一个Zookeeper集群,将其他服务器加入集群。 6.测试Zookeeper集群的可用性,包括读写操作、节点监听等。 需要注意的是,Zookeeper集群的搭建需要保证网络环境稳定,各个节点之间的时间同步,以及配置文件的正确性。 ### 回答2: Zookeeper 是一个分布式协调框架,常用于解决分布式系统中数据一致性和通知问题。搭建和测试 Zookeeper 分布式环境,可以帮助提高我们对分布式系统原理和实践的理解。 一、搭建 Zookeeper 分布式环境 Zookeeper分布式环境是由多个 Zookeeper 节点组成的,它们共同完成数据存储和同步的任务。下面是搭建 Zookeeper 分布式环境的步骤: 1. 下载 Zookeeper,并解压到多个节点上。 2. 在每个节点上创建一个配置文件,例如 conf/zoo.cfg,在其中写入以下内容(以三个节点为例): tickTime=2000 initLimit=5 syncLimit=2 dataDir=/var/lib/zookeeper clientPort=2181 server.1=192.168.1.100:2888:3888 server.2=192.168.1.101:2888:3888 server.3=192.168.1.102:2888:3888 其中,tickTime 表示 Zookeeper 使用的基本时间单位,initLimit 指定了 Zookeeper 集合初始化阶段允许从节点与主节点没有连接成功的最长时间,syncLimit 表示集合中的从节点与主节点同步阶段允许从节点与主节点没有同步成功的最长时间。dataDir 是指定 Zookeeper 数据存储的目录,clientPort 是指定应用程序与 Zookeeper 服务器进行交互的唯一端口号。 3. 在每个节点上创建 dataDir 指定的目录,并编辑 myid 文件,写入对应的节点编号(1、2、3)。 4. 启动每个节点的 Zookeeper 服务。 由于 Zookeeper 使用的是 Quorum 算法,因此需要多于一台节点才能完成集合初始化。在启动 Zookeeper 服务之后,节点会相互连接,进行数据同步和存储。 二、测试 Zookeeper 分布式环境 完成 Zookeeper搭建之后,我们可以进行一些简单的测试来验证其可以正常工作: 1. 使用 Zookeeper 自带的客户端命令行工具 zkCli.sh,连接到任意一个 Zookeeper 服务器,可以执行如下操作: create /test data get /test set /test updatedData delete /test 这些操作分别创建、获取、修改和删除名为 /test 的节点。 2. 启动多个 Zookeeper 客户端,模拟多个应用程序同时连接 Zookeeper 集群,可以在不同客户端间进行节点数据的同步等操作。 三、Zookeeper 分布式环境的优化 在实际应用中,为了保障 Zookeeper 的性能和可用性,还需要进行以下优化: 1. 配置 Zookeeper 的日志和数据持久化。 对于 Zookeeper 的日志和数据,可以使用存储介质更高效的日志格式和解决方案,以提高读写性能和容错能力。 2. 配置合适的网络环境。 Zookeeper 在多个节点之间需要频繁通信,因此需要保证网络环境的稳定和快速。 3. 配置合适的硬件环境。 Zookeeper 的性能受限于硬件环境,需要根据实际情况选择合适的 CPU、内存和存储配置。 4. 优化 Zookeeper 代码和应用程序接入方式。 对于大型的应用程序和更复杂的数据访问模式,需要对 Zookeeper 的代码和接入方式进行优化,以提高性能和可扩展性。 以上就是关于搭建及测试 Zookeeper 分布式环境的总结。Zookeeper分布式协调机制和原理,可以帮助我们更好地理解分布式系统的工作方式,同时也可以为我们应对分布式系统中的一致性问题提供有效的解决方案。 ### 回答3: Zookeeper是一个分布式协调服务,它能够管理、监控和协调大规模分布式系统中的各种信息。在实际的项目中,Zookeeper通常被用于分布式应用的协调和控制。为了搭建zookeeper分布式环境,我们需要执行以下步骤: 安装Java JDK环境。Zookeeper是基于Java开发的,因此我们需要先安装Java的运行环境。 下载Zookeeper的安装包。Zookeeper官网提供了多个版本的下载包,我们可以根据自己的需求选择相应的版本进行下载。 解压安装包。将下载下来的安装包进行解压,可以将解压后的文件夹重命名为zookeeper,并将其移动到自己喜欢的目录下,例如/opt/zookeeper 创建zookeeper配置文件。在zookeeper的conf目录下,创建zoo.cfg文件,并在其中添加以下内容: tickTime=2000 dataDir=/opt/zookeeper/data clientPort=2181 initLimit=5 syncLimit=2 server.1=192.168.1.101:2888:3888 server.2=192.168.1.102:2888:3888 server.3=192.168.1.103:2888:3888 在上述配置文件中,tickTime代表zookeeper的心跳周期,dataDir设置zookeeper的数据目录,clientPort是客户端连接zookeeper的端口号,initLimit和syncLimit分别代表zookeeper集群中的最大连接次数和最大同步时间。最后三行server代表了zookeeper集群中的3个节点,每个server都需要指定一个唯一的id号,zookeeper将根据这个id号来识别集群中每个节点的角色。 启动zookeeper集群。分别进入到3台机器上的/opt/zookeeper目录下,执行以下命令来启动zookeeper集群: ./bin/zkServer.sh start 至此,我们已经成功搭建zookeeper分布式环境。我们可以通过以下命令来检查集群是否已经启动成功: ./bin/zkCli.sh -server 192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181 其中192.168.1.101~103是三台机器的IP地址,2181是zookeeper的客户端连接端口号。如果连接成功,并看到了如下的提示信息,则说明zookeeper已经成功搭建并启动: Connecting to 192.168.1.101:2181,192.168.1.102:2181,192.168.1.103:2181 Welcome to ZooKeeper! JLine support is enabled 测试zookeeper集群。我们可以通过以下步骤来测试zookeeper集群的功能: 创建一个节点: create /test hello 从节点中获取数据: get /test 更新节点中的数据: set /test world 删除节点: delete /test 上述命令是zookeeper中比较基本的操作,通过这些命令的运行结果可以检查集群管理是否正常。 总结: Zookeeper分布式环境的搭建及测试相对来说较为简单,通过上述步骤的执行,我们可以成功搭建出一个基于zookeeper分布式集群。需要注意的是,在实际项目中,zookeeper的配置及使用需要根据实际需求进行相应的修改配置,以便获得更好的性能及效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

研发咨询顾问

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值