Mobax连接虚拟机搭建ZooKeeper集群及基础知识

一、安装ZooKeeper
1.上传压缩包文件
进入到/opt目录点击左上角的upload上传文件,如下

在这里插入图片描述
2.解压缩到指定文件
将jdk解压到/usr/local目录下:tar -zxvf jdk-11.0.15.1_linux-x64_bin.tar.gz -C /usr/local/
将zookeeper也解压缩到/usr/local目录下: tar -zxvf apache-zookeeper-3.8.0-bin.tar.gz -C /usr/local

3.配置JDK环境 vim /etc/profile
在最后插入:export JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
生效该环境变量:source /etc/profile
由于JDK解压时自带版本号,我没去修改,导致JDK配置出问题;
然后我进入/usr/local/jdk11版本,改成jdk后配置完成;如图
在这里插入图片描述

二.搭建ZooKeeper伪集群

1.进入zookeeper安装目录的conf目录修改文件
先修改名字:mv zoo_sample.cfg zoo.cfg

再修改文件:vim zoo.cfg
改为:dataDir=/usr/local/zookeeper/zkdata
dataLogDir=/usr/local/zookeeper/zklogs

2.创建数据持久化目录
mkdir /usr/local/zookeeper/zkdata
mkdir /usr/local/zookeeper/zklogs

3.在zookeeper的bin目录下:
启动zookeeper服务: ./zkServer.sh start
查看Zookeeper运行状态:./zkServer.sh status
此时出现Mode: standalone,该模式就是伪集群模式

三.搭建zookeeper集群

1.开启3个虚拟机,模拟集群,如图在这里插入图片描述

  • 配置虚拟机的jdk环境
    先进入到/usr/local目录下:

    将第一个虚拟机的jdk文件传送到192.168.126.5主机的对应目录下: scp -r jdk 192.168.126.5:$PWD
    将第一个虚拟机的zookeeper文件传送到192.168.126.5主机的对应目录下: scp -r zookeeper 192.168.126.5:$PWD
    第三个虚拟机同样需要传jdk跟zookeeper文件,同理。
    传递完jdk后配置jdk,与虚拟机一的配置相同,此时三台虚拟机都有jdk环境。

  • 配置虚拟机的zookeeper环境
    首先,进入到zookeeper目录的conf目录下,修改配置文件:vim zoo.cfg
    因为原先配置过zkdata和zklogs文件
    只需直接在2181下面添加:
    server.1=192.168.126.4:2888:3888
    server.2=192.168.126.5:2888:3888
    server.3=192.168.126.6:2888:3888
    将zoo.cfg配置文件传给其他俩台机器,此时我的还没有将zookeeper传给第三台机器,只需要将zookeeper文件传送到第三台机器即可。

此时为虚拟机与虚拟机之间的文件传送。

2.在工作目录中生成myid文件(即在zkdata目录下):
第一台虚拟机:echo 1 > myid
第二台虚拟机:echo 2 > myid
第三台虚拟机:echo 3 > myid
查看myid: cat myid

3.先查看防火墙是否已经关闭:firewall-cmd --state
若未关闭:systemctl stop firewalld.service

4.开启zookeeper服务:
进入到zookeeper的bin目录下执行:./zkServer.sh start
三台都启动后,执行:./zkServer.sh status
出现如下图即可(一个leader,俩个follower):
在这里插入图片描述

此时,已经完成虚拟机集群的搭建。

四、集群的服务管理
1.集群的服务管理可以使用脚本设置一键启动/一键停止
在bin目录下执行:vim zkstart.sh
添加如下脚本代码:

#!/bin/bash
# $# 启动脚本的携带参数个数
# -ne 不等于
if [ $# -ne 1 ];then
        echo "无效参数,用法为[start|stop|status|restart]"
        exit
fi

for host in 192.168.126.4 192.168.126.5 192.168.126.6
do
        echo"===========   $host 正在 $1 ========="
        #发送命令到目录机器
        ssh $host "source /etc/profile; /usr/local/zookeeper/bin/zkServer.sh $1"
done

即一条命令,执行所有的服务器;
在脚本中设置传入的参数,只有为一个,否则报错;遍历发送命令到指定机器 ($1为传入的参数)。
在bin目录下执行:./zkstart.sh start

2.需要修改配置文件/etc/profile:vim /etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin
生效配置:source /etc/profile
然后即可不需要使用./

五、ZooKeeper的系统模型
1.数据模型
Zookeeper中的所有存储的数据是由znode组成的,节点也称为znode,并以key/value形式存储数据。
以树形结构存储:其中根路径以 / 开头。
以key/value形式存储数据。key就是znode的节点路径,比如/java,/server。
2.节点特性
Zookeeper节点是有生命周期的;可以分为4种:

	持久节点是Zookeeper中最常见的一种节点类型,所谓持久节点,是指该数据节点被创建后,
就会一直存在于zookeeper服务器上,直到有删除操作来主动清除这个节点。
	持久顺序节点与持久节点的节点类型是一致的。额外的特性是,在Zookeeper中,
每个父节点会为他的第一子节点维护一份时序,会记录每个子节点创建的先后顺序。
	临时节点,该结点一个最重要的特性就是临时性。临时性是指,如果将节点创建未临时节点,那么该节点数据不会一直存储在Zookeeper服务器上。
临时节点的生命周期与客户端会话绑定。当客户端会话失效,那么这个节点就会被自动清除掉。且在临时节点下面不能创建子节点。
    临时顺序节点,跟临时节点的基本特性一致,额外添加了顺序的特性。	

3.通过执行zkCli.sh,启动简易客户端程序。
创建ZK节点create /节点名 value值;创建时加-s为顺序节点,加-e为临时节点;不加参数默认为持久节点。
读取节点,ls显示该结点下面是否存在子节点;get获取该节点的value值。
ls /节点名;get /节点名
更新节点,set /节点名 data,即可修改(节点名就是path路径)。
删除节点,delete /节点名
4.节点数据信息
每个znode节点在存储数据的同时,都会维护一个叫做Stat的数据结构,里面存储了关于该结点的全部状态信息。
每个节点都有属于自己的状态信息,类似于身份证。
czxid表示该数据节点被创建时的事务ID
mzxid表示该节点最后一次被更新时的事务ID
pzxid表示该节点的子节点列表最后一次被修改时的事务ID
ctime表示该节点的创建时间
mtime表示该节点最后一次被更新的时间
version表示数据节点的版本号
cversion表示子节点的版本号
aversion表示节点的ACL版本号
ephemeralOwner表示创建该临时节点的会话SessionID,如果该节点是持久节点,那么这个属性值是0
dataLength数据内容的长度
numChildren表示当前节点的子节点个数

查看节点数据信息:stat /节点名

5.Watcher监听机制
ZooKeeper允许客户端向服务器注册一个Watcher监听,当服务端一些指定事件触发了这个Watcher,那么就会向指定客户端发送一个事件通知来实现分布式的通知功能。
监听节点变化:ls -w path
即节点发生变化时,就会触发watcher监听
监听节点值的变化:get -w path
即节点的值发生变化时,才会触发watcher监听
watcher监听机制只能使用一次,再次使用需要重新监听。

6.权限控制ACL
权限模式(Schema):
world 表示只有一个用户:anyone,代表所有人(默认)
ip 表示使用ip地址认证
auth表示使用已添加认证的用户认证
digest表示使用"用户:密码"方式认证

授权对象(ID),指的是权限赋予的用户或者一个实体。
IP通常是一个IP地址或是IP段,例如“192.168.126.4”
Digest,表示自定义,通常是"username:BASE64(SHA-1(username:password))"
World,表示只有一个ID:“anyone”
Super,与Digest模式一样

权限permission:
CREATE,可以创建子节点
DELETE,可以删除子节点(仅下一级节点)
READ,可以读取节点数据及显示子节点列表
WRITE,可以设置节点数据
ADMIN,可以设置节点访问控制列表权限

权限相关命令:
getAcl,读取ACL权限
setAcl,设置ACL权限
addauth,添加认证用户

创建默认的节点,权限模式为world,授权对象为anyone,权限为cdrwa.

设置ip方案:setAcl ip::,例如, setAcl /node ip:192.168.126.4:cdrwa;
即设置node节点操作的ip为192.168.126.4,权限为所有。

设置Auth方案:
create /node3 3
addauth digest zzx:123456
setAcl /node3 auth:zzx:cdrwa
即在添加认证的虚拟机上可以操作node3节点

设置Digest方案:
create /node4 4

退到程序外输出这一段,计算一个密文:echo -n zzx:123456 | openssl dgst -binary -sha1 | openssl base64
L6CiRBgTY39U8palHzyETbazeaQ=

setAcl /node4 digest:zzx:L6CiRBgTY39U8L6CiRBgTY39U8palHzyETbazeaQ=:cdrwa
addauth digest zzx:123456
然后即可读取/node的数据

总结:
1.Mobax连接虚拟机后,需要上传linux版的jdk和zookeeper的文件;安装完后,修改配置文件/etc/profile;
2.一台虚拟机启动多个zookeeper服务,即伪集群;而多台虚拟机分别启动多个zookeeper服务,即模拟集群。
3.集群服务管理是通过一个脚本执行多个指令,例如启动多台虚拟机的zookeeper服务。集群内的文件传送,可以通过scp指令。
4.zookeeper节点znode通过key/value形式进行存储,是一个树形结构;Watcher监听机制,监听节点或节点的值;权限控制ACL,设置节点的权限,由3种权限模式,授权对象有4种,权限有5种。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值