Zookeeper分布式开源框架

Zookeeper分布式开源框架

zookeeper简介

zookeeper中文动物园管理员,作为其他分布式组件的协调调度,本身也是分布式,支持集群,在集群当中有选举机制,主从复制,以及读写分离等等比较重点的概念

zk支持统一命名服务,以及统一资源管理等

Zookeeper集群机制:本身zk支持单节点,但是主要特性还是在集群环境当中凸显,在集群中有一个Leader(领导者)和多个Follower(跟随者)

Leader节点挂掉之后会重新选举Leader当做领导者,同时可以做到数据同步

Zookeeper集群机制数据结构:

zk中默认有一个根节点,根节点下可以创建子节点以及数据,子节点分为临时节点和持久节点

zookeeper环境搭建

1、安装一台虚拟机,配置好网卡,设置静态IP

2、克隆虚拟机,更改网卡

2.1 编辑网卡文件,使用命令

vi /etc/sysconfig/network-scripts/ifcfg-eno167xxxxxxxxxxxxx

i,将IPADDR内容修改为静态IP地址,比如192.168.7.77

修改完毕,按esc,使用:wq!保存并且推出

重启网卡服务   service network restart

重启完毕,通过命令:ip addr命令查看当前虚拟机IP

2.2 使用Xshell连接

1.关闭防火墙

关闭:systemctl stop firewalld.service

禁用:systemctl disable firewalld.service

2.使用Xshell新建一个会话,会话名称自定义,主机写虚拟机地址

输入用户名和密码然后点击确定,点击连接,点击接受并保存

3、搭建ZK环境

3.1 搭建之前保证虚拟机有JDK环境,ZK运行需要依赖于JDK

卸载自带JDK,先通过命令:

rpm -qa|grep java查找当前是否安装JDK

卸载命令:rpm -e --nodeps java-oepnxxxxxxxxxx

安装JDK

上传jdk安装包:

通过XFTP上传,切换到/usr/local目录,新建一个文件夹为java,进入到java文件夹然后上传

切换到/usr/local/java目录

解压JDK压缩包

tar -zxvf xxxxxxxxxxxxxxxx

解压完成JDK后配置环境变量:

vi /etc/profile  切换到最后一行,粘贴对应环境变量:

export JAVA_HOME=/usr/local/java/jdk1.8.0_121

export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile   重新加载该文件

java -version查看

搭建ZK集群:

1.Zookeepertar包上传到对应/usr/local/zookeeper当中

2.切换到 cd /usr/local/zookeeper

3.tar -zxvf zookeeper.xxx.tar.gz

4.vi /etc/profile文件配置环境变量

export JAVA_HOME=/usr/local/java/jdk1.8.0_121

export ZOOKEEPER_HOME=/usr/local/zookeeper/zookeeper-3.4.10

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

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

5.切换到zookeeper解压目录的conf文件夹下面

cd /usr/local/zookeeper/zookeeper-3.4.10/conf

mv zoo_sample.cfg zoo.cfg

6.修改zoo.cfg文件

vi /usr/local/zookeeper/zookeeper-3.4.10/conf/zoo.cfg

dataDir修改为自己的目录:dataDir=/usr/local/zookeeper/zookeeper-3.4.10/data

在文件末尾加入如下内容:

server.0=192.168.7.66:2888:3888

server.1=192.168.7.77:2888:3888

server.2=192.168.7.88:2888:3888

7./usr/local/zookeeper/zookeeper-3.4.10/data下面创建一个myid文件,文件内容为机器标识,第一台机器就是0

8.zookeeper内容复制到本地,从本地再次上传到另外两台服务器的对应文件夹

9.重复第4个步骤以及第7个步骤

10.切换到zookeeper解压目录的bin 文件夹下,然后通过./zkServer.sh start命令启动zk服务

如果权限不够则使用chmod 777 ./*.sh赋权

11.查看zk启动状态 命令:zkServer.sh status                停止zk使用命令:./zkServer.sh stop

4zookeeper具体步骤

1.为什么要做数据同步?

防止单台机器节点宕机后,数据丢失或者访问不到

2.Leader宕机后,会发生什么?

其余的Follwer机器会根据特定的规则选择出一个Leader,当集群机器节点存在于半数以上则能继续对外提供服务

3.搭建ZK集群环境

注意:配置任何文件都要找到对应目录     查看当前目录地址:pwd

3.1 搭建zk集群之前,保证每一台机器都要JDK环境,并且机器数量不能小于3

第一台:192.168.7.66                  

第二台:192.168.7.77

第三台:192.168.7.88

如果安装完系统后默认存在JDK应该如何操作:

1.查找当前系统当中存在的jdk

npm -qa |grep java

2.使用rmp -e --nodeps jdk-openxxxxxxxxx

如何配置JDK

1./usr/local下新建了一个文件夹java,将JDKtar包上传到Linux系统对应目录当中

2.切换到对应目录,找到刚刚上传的tar

cd /usr/local/java                         可以通过ll命令查看当前目录下的所有文件

3.解压jdk安装包

tar -zxvf jdk-1.8xxxxxx.tar.gz

4.配置jdk环境变量,更改环境变量文件

vi /etc/profile

5.切换到该文件的最后一行,然后编辑(i),将对应内容复制或者手写到该文件当中

如有疑问请搜索:Linux配置JDK环境变量,将对应配置目录改为自己目录即可

3.2 配置ZK集群

3.2.1 首先在/usr/local下创建一个文件夹zookeeper,将本地windows计算机当中的zookeeper-3.6.10.tar.gz包上传到Linux系统对应目录当中

3.2.2 切换到/usr/local/zookeeper目录当中

3.2.3 使用tar -zxvf zookeeper-3.4.10.tar.gz解压到当前文件夹

3.2.4 编辑系统环境变量,加入zk环境变量

vi /etc/profile

文件末尾加入如下内容(路径根据自身情况进行书写)

export JAVA_HOME=/opt/jdk1.8.0_71

export ZOOKEEPER_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

3.2.5 zookkeeper解压目录的conf文件夹下的zoo_sample.cfg 改名为zoo.cfg

mv zoo_sample.cfg zoo.cfg

3.2.6 修改对应的zoo.cfg

3.2.6.1 修改dataDir内容指向到自定义地址,建议在zookeeper解压目录下新建一个data文件夹,然后指向到该文件夹

dataDir是数据文件存放地址

3.2.6.2 zoo.cfg文件末尾加入集群机器配置关系

server.myid(zk机器标识)=IP地址:2888:3888

server.0=192.168.7.66:2888:3888

server.1=192.168.7.77:2888:3888

server.2=192.168.7.88:2888:3888

3.2.6.3 esc:wq!保存并退出

3.2.7 创建对应服务器标识

要知道当前在那一台服务器,然后创建对应myid标识

cd /usr/local/zookeeper/zookeeper-3.4.10/data

创建myid文件 vi myid  

编辑myid文件加入对应服务器标识

3.3 注意问题

我们可以在一台机器上配置完JDK以及zk和环境变量后,将当前机器关闭,右键克隆

克隆完成需要改对应IP地址和Myid文件配置:

IP地址更改:

vi /etc/sysconfig/network-scripts/ifcfg-eno167xxxxxxxxxxxxx

IPADDR内容修改为静态IP地址,比如192.168.7.77

Myid文件改为对应服务器标识即可

集群环境各个机器节点需要通信

集群机器需要关闭防火墙

conentos7关闭防火墙:

systemctl stop firewalld.service

systemctl disable firewalld.service

3.4 启动zk服务

切换到对应bin目录:

cd /usr/local/zookeeper/zookeeper-3.4.10/bin

启动zk服务:./zkServer.sh start

停止zk服务:./zkServer.sh stop

重启zk服务:./zkServer.sh restart

5监控zk

5.1 linux当中,可以通过再bin目录下使用./zkServer.sh status查看当前服务器的角色以及状态

6 windows如何操作zk

6.1 找到zk压缩包,将压缩包解压到当前文件夹

6.2 conf文件夹下的zoo_sample.cfg文件改为zoo.cfg

6.3 在解压目录下创建一个data文件夹,修改zoo.cfgdataDir数据目录路径(不是必须)

6.4 启动zk,找到bin目录下有一个zkServer.cmd(启动前保证有JDK环境变量)

6.5操作zk

操作 工具 ZooInspector

找到对应目录:E:\学习文档\Zookeeper\ZooInspector\build

双击启动jar文件:zookeeper-dev-ZooInspector.jar

7介绍zoo.cfg文件内容

tickTime代表心跳时间,一般情况下来讲,每一台服务器会定时发送心跳,如果超过该时间没有发送心跳则代表当前服务器宕机,最小超时时间为两个心跳时间

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

clientPort:服务的监听端口,默认为2181

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

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

server.A=BCD

A是一个数字,表示这个是第几号服务器,B是这个服务器的ip地址

C第一个端口用来集群成员的信息交换,表示的是这个服务器与集群中的Leader服务器交换信息的端口

D是在leader挂掉时专门用来进行选举leader所用

8利用zk原生客户端操作zk服务器

在上面案例中利用到了ZooInterceptor工具操作了zk服务器,那么就相当于利用客户端进行操作

8.1 查看当前zk服务器的目录结构

ls /目录 查看该目录下的所有文件

ls2 /目录 查看该目录下文件的更新次数

8.2 创建节点:不能跳目录创建

create 目录 节点值

示例:

在根目录下创建一个节点,值为空

create /znode ''

在根目录的zookeeper目录下创建一个节点znodeChild,值为znodeValue

create /zookeeper/znodeChild znodeValue

节点分类型:节点分为临时和持久

默认情况下创建的节点为持久节点

创建临时节点如下:(临时节点创建后不能有子节点)

create -e 目录 节点值 [权限]

示例:

create -e /zNodeEphemearl EphemearlValue

8.3 获取节点

get 节点

8.4 修改节点

set 节点 节点值

8.5 删除节点

delete 节点 只能一层一层删除

rmr 节点 递归删除

猜你喜欢

转载自www.cnblogs.com/fxdmzygr/p/12565032.html