ZooKeeper简介以及相关部署

当我们谈起分布式环境的演进过程时,都是从一个单节点开始,慢慢过渡到分布式,为什么单节点慢慢无法适应现在的需求,传统一个tomcat打天下有什么缺点,缺点又是什么,当一个tomcat搞不定的时候,分布式的架构图又是什么样的,这个时候我们需要用到ZooKeeper.


为什么学习ZK

传统的单节点架构存在很多问题,同样到了分布式架构当中,问题同样也会存在,这就是我们为什么要学习ZooKeeper


一、ZooKeeper是什么?

ZooKeeper致力于提供一个高性能、高可用,且具备严格的顺序访问控制能力的分布式协调服务,是雅虎公司创建,是Google的Chubby一个开源的实现,也是Hadoop和Hbase的重要组件。

二、哪些常见需要用到ZK?

数据发布订阅 负载均衡 命名服务 Master选举 集群管理 配置管理 分布式队列 分布式锁

三、ZooKeeper部署

1.Zookeeper windows环境安装

环境要求:必须要有jdk环境,本次讲课使用jdk1.8

1.安装jdk
2.安装Zookeeper. 在官网http://zookeeper.apache.org/下载zookeeper.我下载的是zookeeper-3.4.12版本。
解压zookeeper-3.4.6至D:\machine\zookeeper-3.4.12.
在D:\machine 新建data及log目录。
3.ZooKeeper的安装模式分为三种,分别为:单机模式(stand-alone)、集群模式和集群伪分布模式。ZooKeeper 单机模式的安装相对比较简单,如果第一次接触ZooKeeper的话,建议安装ZooKeeper单机模式或者集群伪分布模式。
安装单击模式。 至D:\machine\zookeeper-3.4.12\conf 复制 zoo_sample.cfg 并粘贴到当前目录下,命名zoo.cfg.

2.Zookeeper集群配置

1.安装jdk运行jdk环境

上传jdk1.8安装包

2.安装jdk1.8环境变量
vi /etc/profile

export JAVA_HOME=/usr/local/jdk1.8.0_181
export JAVA_HOME=/usr/local/zookeeper
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar: $JAVA_HOME/lib/tools.jar
export PATH= $JAVA_HOME/bin: $ZOOKEEPER_HOME/bin: $PATH

刷新profile文件
source /etc/profile

关闭防火墙

3.下载zookeeper安装包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz

4.解压Zookeeper安装包
tar -zxvf zookeeper-3.4.10.tar.gz

5.修改Zookeeper文件夹名称
重命名: mv zookeeper-3.4.10 zookeeper

6. 修改zoo_sample.cfg文件
cd /usr/local/zookeeper/conf
mv zoo_sample.cfg zoo.cfg
修改conf: vi zoo.cfg 修改两处
(1) dataDir=/usr/local/zookeeper/data(注意同时在zookeeper创建data目录)
(2)最后面添加
server.0=192.168.212.154:2888:3888
server.1=192.168.212.156:2888:3888
server.2=192.168.212.157:2888:3888

7.创建服务器标识
服务器标识配置:
创建文件夹: mkdir data
创建文件myid并填写内容为0: vi
myid (内容为服务器标识 : 0)

8.复制zookeeper
进行复制zookeeper目录到node1和node2
还有/etc/profile文件
把node1、 node2中的myid文件里的值修改为1和2
路径(vi /usr/local/zookeeper/data/myid)

9启动zookeeper
启动zookeeper:
路径: /usr/local/zookeeper/bin
执行: zkServer.sh start
(注意这里3台机器都要进行启动)
状态: zkServer.sh
status(在三个节点上检验zk的mode,一个leader和俩个follower)

scp -r /soft root@zk2:/
scp -r /soft root@zk3:/

四、目录结构

bin 存放系统脚本
conf 存放配置文件
contrib zk附加功能支持
dist-maven maven仓库文件
docs zk文档
lib 依赖的第三方库
recipes 经典场景样例代码
src zk源码
在这里主要介绍一下bin和conf:
bin目录
在这里插入图片描述
其中
zkServer为服务器,启动后默认端口为2181
zkCli为命令行客户端

conf目录:
Conf目录为配置文件存放的目录,zoo.cfg为核心的配置文件
这里面的配置很多,这配置是运维的工作,目前没必要,也没办法全部掌握。
在这挑选几个进行说明:

clientPort:参数无默认值,必须配置,用于配置当前服务器对外的服务端口,客户端必须使用这端口才能进行连接

**dataDir:**用于存放内存数据库快照的文件夹,同时用于集群的myid文件也存在这个文件夹里(注意:一个配置文件只能包含一个dataDir字样,即使它被注释掉了。)

**dataLogDir:**用于单独设置transaction log的目录,transaction log分离可以避免和普通log还有快照的竞争

**dataDir:**新安装zk这文件夹里面是没有文件的,可以通过snapCount参数配置产生快照的时机

以下配置集群中才会使用,后面再讨论

**tickTime:**心跳时间,为了确保连接存在的,以毫秒为单位,最小超时时间为两个心跳时间

**initLimit:**多少个心跳时间内,允许其他server连接并初始化数据,如果ZooKeeper管理的数据较大,则应相应增大这个值

syncLimit:多少个tickTimeer同步,如果follower落后太多,则会被丢弃。

猜你喜欢

转载自blog.csdn.net/weixin_47723535/article/details/109403876