zookeeper安装教程

Zookeeper基础知识、体系结构、数据模型

◊  zookeeper是一个类似hdfs的树形文件结构, zookeeper可以用来保证数据在(zk)集群之间的数据的事务性一致

◊  zookeeper有watch事件,是一次性触发的,当watch监视的数据发生变化时,通知设置了该watch的client,即watcher

◊  zookeeper有三个角色: Learner, Follower, Observer

◊  zookeeper应用场景:

统一命名服务(Name Service)

配置管理(Configuration Management)

集群管理(Group Membership)

共享锁(Locks)

队列管理

1.     单机版

安装步骤:

第一步:解压缩压缩包

tar -zxvf zookeeper-3.4.6.tar.gz

第二步:进入zookeeper-3.4.6目录,创建data文件夹。

第三步:把zoo_sample.cfg改名为zoo.cfg

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

第四步:修改data属性:dataDir=/usr/zookeeper-3.4.6/data

第五步:启动zookeeper     [root@localhost bin]# ./zkServer.sh start

关闭:    [root@localhost bin]# ./zkServer.sh stop

查看状态:[root@localhost bin]# ./zkServer.sh status

2.     伪集群版

2.1 结构:一共3个节点

2.2 解压安装包并在同一台虚拟机上复制3份

tar -zxvf zookeeper-3.4.6.tar.gz –C /usr/local

mkdir /usr/local/solr-cloud

 

2.3 分别到每个zookeeper下修改配置文件

cp zoo_sample.cfg zoo.cfg

vim zoo.cfg 修改三处

(1)    dataDir=/usr/local/solr-cloud/zookeeper01/data

(2)    因为在同一台服务器上装3个zookeeper节点,所以要改客户端连接zookeeper的端口号(zookeeper对外提供服务的端口):clientPort=2181

(3)    最后面加上节点列表,其中2881那一列指的是节点间内部通信的端口,3881那一列指的是投票选举的端口:

server.1=192.168.1.123:2881:3881

server.2=192.168.1.123:2882:3882

server.3=192.168.1.123:2883:3883

2.4 服务器标识配置

mkdir /usr/local/solr-cloud/zookeeper01/data

在data目录下创建一个文件myid:   touch myid

      填写内容为1:  vim myid (内容为服务器标识: 1)

2.5 启动zookeeper集群

写一个批处理可执行文件来启动,免得麻烦

vim start_all_zookeeper.sh

在该文件中写:

cd zookeeper01/bin

./zkServer.sh start

cd ../../

cd zookeeper02/bin

./zkServer.sh start

cd ../../

cd zookeeper03/bin

./zkServer.sh start

cd ../../

修改文件权限:chmod u+x start_all_zookeeper.sh

3.     集群版

3.1 结构:一共三个节点

(zk服务器集群规模不小于3个节点),要求服务器之间系统时间保持一致

3.2 解压zk与环境变量配置

进行解压: tar zookeeper-3.4.5.tar.gz

重命名: mv zookeeper-3.4.5 zookeeper

修改环境变量: vim /etc/profile

export ZOOKEEPER_HOME=/usr/local/zookeeper

export PATH=.:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH

刷新: source /etc/profile

3.3 到zookeeper下修改配置文件

cd /usr/local/zookeeper/conf

mv zoo_sample.cfg zoo.cfg

vim zoo.cfg 修改两处

(1)dataDir=/usr/local/zookeeper/data

(2)最后面添加

server.0=192.168.1.121:2888:3888

server.1=192.168.1.122:2888:3888

server.2=192.168.1.123:2888:3888

3.4 服务器标识配置:

在zookeeper下创建文件夹: mkdir data

在data下创建文件myid并填写内容为0:  vim myid (内容为服务器标识: 1)

复制/etc/profile文件 和zookeeper目录到192.168.1.122和192.168.1.123把192.168.1.122、192.168.1.123中的myid文件里的值修改为2和3

3.5 启动zookeeper:

路径: /usr/local/zookeeper/bin(由于上面配置了环境变量,因此这里可以不在该路径下启动)
    执行: zkServer.sh start(注意这里3台机器都要进行启动)
    状态检查: zkServer.sh status(在三个节点上检验zk的mode,一个leader和俩个follower)

3.6 操作zookeeper (shell)

zkCli.sh 进入zookeeper客户端根据提示命令进行操作:
查找: ls / ls /zookeeper
创建并赋值: create /ygz hadoop
获取: get /ygz
设值: set /ygz baihezhuo
可以看到zookeeper集群的数据一致性
创建节点有俩种类型:短暂(ephemeral)持久(persistent)

附:zoo.cfg详解

tickTime: 基本事件单元,以毫秒为单位。这个时间是作为 Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每隔 tickTime时间就会发送一个心跳。

dataDir: 存储内存中数据库快照的位置,顾名思义就是 Zookeeper保存数据的目录,默认情况下, Zookeeper将写数据的日志文件也保存在这个目录里。
    clientPort: 这个端口就是客户端连接 Zookeeper 服务器的端口, Zookeeper会监听这个端口,接受客户端的访问请求。
    initLimit: 这个配置项是用来配置 Zookeeper接受客户端初始化连接时最长能忍受多少个心跳时间间隔数,当已经超过 10 个心跳的时间(也就是 tickTime)长度后Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是10*2000=20 秒。

syncLimit: 这个配置项标识 Leader 与 Follower之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime的时间长度,总的时间长度就是 5*2000=10 秒server.A = B:C:D :

A表示这个是第几号服务器,
B 是这个服务器的 ip 地址;
C 表示的是这个服务器与集群中的 Leader服务器交换信息的端口;
D 表示的是万一集群中的 Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader

原文地址:https://www.cnblogs.com/hzdzkjdxygz/p/8413653.html