架设Zookeeper集群尝试

首先,创建三台服务器

在一台电脑上安装VMWare Workstation。在VM上安装三台Linux,分别是1个主节点,2个从节点,如下图所示。架设Zookeeper集群尝试_第1张图片
注意:这3个节点的IP地址在实际搭建时会有所不同。

第一步

  • 在master上启动 Linux命令终端,创建目录mkdir /usr/zookeeper,执行命令cd
    /usr/zookeeper,切换到该目录下,把zookeeper文件上传到该目录下
  • Zookeeper压缩文件zookeeper -3.4.12.tar.gz进行解压缩
  • 在/usr/zookeeper/zookeeper-3.4.12目录下新建data,logs两个文件夹
  • 进入zookeeper -3.4.12/conf目录,把zoo_sample.cfg文件复制一份名字改成zoo.cfg

第二步

修改zoo.cfg文件,需要修改一下几个地方

dataDir=/usr/zookeeper/zookeeper-3.4.12/data
dataLogDir=/usr/zookeeper/zookeeper-3.4.12/logs

同时在文件末尾添加:

server.1=IP地址1:2888:3888
server.2=IP地址2:2888:3888
server.3=IP地址3:2888:3888

在slave1和slave2上新建/usr/zookeeper文件夹,将配置好的zookeeper复制到另外两台服务器上

scp  -r  /usr/zookeeper/zookeeper-3.4.12  root@slave1:/usr/zookeeper/
scp  -r  /usr/zookeeper/zookeeper-3.4.12  root@slave2:/usr/zookeeper/

分别在三台服务器的/usr/zookeeper/zookeeper-3.4.12/data/目录下新建myid文件,内容分别为1, 2, 3,
创建方式如下,在192.168.86.150服务器上执行如下命令,另外两台服务器以此类推。

echo "1" > myid

把每台虚拟机上的zookeeper安装目录配置到环境变量中,执行命令vi /etc/profile,如图。
架设Zookeeper集群尝试_第2张图片
然后让配置文件生效,执行命令

source /etc/profile

启动服务,在每台虚拟机上执行zookeeper启动命令zkServer.sh(注意,zkServer.sh文件位于$ZOOKEEPER_HOME/bin)。然后用jps查看,如图所示。
执行命令

zkServer.sh start

在这里插入图片描述
master:在这里插入图片描述
slave1:
在这里插入图片描述
slave2:
在这里插入图片描述

注意启动集群中节点时必须按myid的顺序执行启动

启动完成后,查看服务状态。
执行命令

zkServer.sh status

master:在这里插入图片描述
slave1:在这里插入图片描述
slave2:在这里插入图片描述

Zookeeper客户端命令

zkCLi是Zookeeper安装之后自带的客户端命令行工具,运行zkCli.sh连接到本机端口2181,连接命令为

zkCli.sh -server 127.0.0.1:2181

若想连接到集群或者其他主机,可用以下命令

zkCli.sh -server host:post [host:post,host:post...]

连接成功后,系统会输出 Zookeeper的相关环境以及配置信息
客户端命令的常见操作如下。

  • 显示根目录下文件:ls/。使用ls命令来查看当前zookeeper中所包含的内容。
  • 显示根目录下文件:ls2/。查看当前节点数据并能看到更新次数等数据。
  • 创建文件,并设置初始内容。create /zk “zkdata”。在当前目录下创建一个新的znode节点“zk”以及与它关联的字符串。
  • 获取文件内容: get /zk。获取zk所包含的信息。
  • 修改文件内容: set /zk “zknewdata”。 对zk所关联的字符串进行设置。
  • 删除文件:delete /zk。删除节点zk。
  • history:打印出最近执行的十个命令。
  • 退出客户端:quit。
  • 帮助命令:help。

在Zookeeper启动下,master上执行命令,命令目录是$ZOOKEEPER_HOME/bin。

./zkCli.sh  -timeout 5000 -r -server master:2181

连接到ZooKeeper服务器,如图所示。架设Zookeeper集群尝试_第3张图片

bin/zkCli.sh  -timeout 5000 -r -server slave1:2181

架设Zookeeper集群尝试_第4张图片

bin/zkCli.sh  -timeout 5000 -r -server slave2:2181

在Zookeeper客户端执行命令ls /,查看子节点个数
在Zookeeper客户端执行命令create /nodel test,创建节点nodel,数据是test。如图所示。
架设Zookeeper集群尝试_第5张图片
获取节点数据以及节点其他信息,执行命令
get /nodel
修改已存在的节点数据,执行命令
set /nodel tt
架设Zookeeper集群尝试_第6张图片
执行命令stat /,查看当前节点概况(不显示子节点),如图所示架设Zookeeper集群尝试_第7张图片
ZooKeeper做为分布式架构中的重要中间件,通常会在上面以节点的方式存储一些关键信息,默认情况下,所有应用都可以读写任何节点,在复杂的应用中,这不太安全。ZooKeeper通过ACL(Access Controll List)机制来解决访问权限问题。
总体来说,ZooKeeper的节点有5种操作权限:
CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)
注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限。
身份的认证有4种方式:

  • world:默认方式,相当于全世界都能访问
  • auth:代表已经认证通过的用户(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户)
  • digest:即用户名:密码这种方式认证,这也是业务系统中最常用的
  • ip:使用IP地址认证

Cli命令行下可以这样查看某个节点的权限。

通过getAcl命令可以发现,刚创建的节点,默认是 world,anyone的认证方式,具有cdrwa所有权限。
实现下面的案例,步骤如下:

  • 创建zookeeper节点zklzp,数据是zklzp-data

    [zk: 192.168.86.150:2181(CONNECTED) 9] create /zklzp
    zklzp-data
    Created /zklzp

  • 创建zookeeper认证用户lzp,密码为12345

    [zk: 192.168.86.150:2181(CONNECTED) 10] addauth digest lzp:12345

  • 设置zookeeper节点zklzp的ACL控制用户是认证用户lzp,拥有r权限

    [zk: 192.168.86.150:2181(CONNECTED) 12] setAcl /zklzp auth:lzp:12345:r
    cZxid = 0x500000012
    ctime = Thu Mar 07 01:07:15 PST 2019
    mZxid = 0x500000012
    mtime = Thu Mar 07 01:07:15 PST 2019
    pZxid = 0x500000012
    cversion = 0
    dataVersion = 0
    aclVersion = 1
    ephemeralOwner = 0x0
    dataLength = 15
    numChildren = 0

  • 查看zookeeper节点zklzp的ACL控制用户信息

    [zk: 192.168.86.150:2181(CONNECTED) 13] getAcl /zklzp
    'digest,'lzp:ASfK8BOXi0GRywlk+I3llVQw9lY=
    : r

你可能感兴趣的:(大数据)