前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【云原生进阶之PaaS中间件】第二章Zookeeper-2-安装部署

【云原生进阶之PaaS中间件】第二章Zookeeper-2-安装部署

作者头像
江中散人_Jun
发布2023-10-16 12:41:56
2140
发布2023-10-16 12:41:56
举报
文章被收录于专栏:云原生布道专栏

1 Zookeeper安装配置

环境准备:

        一台安装有jdk的虚拟机:192.168.152.130

1.1 安装

1.1.1 下载
代码语言:javascript
复制
cd /software

wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
1.1.2 解压
代码语言:javascript
复制
tar -zxvf zookeeper-3.4.6.tar.gz

1.2 配置

说明:这里配置的是伪分布式的zookeeper

注意:配置之前一定要在/etc/hosts里面配置主机映射,否则会报错误:

ERROR [master:3890:QuorumCnxManager$Listener@517] - Exception while listening

java.net.SocketException: Unresolved address

代码语言:javascript
复制
vim /etc/hosts
1.2.1 先建立zookeeper的三个数据目录
代码语言:javascript
复制
mkdir -p /zookeeper/zk1
mkdir -p /zookeeper/zk2
mkdir -p /zookeeper/zk3
1.2.2 查看zookeeper的配置文件(已删掉多余的配置和注释)
代码语言:javascript
复制
vim zoo_sample.cfg
代码语言:javascript
复制
tickTime=2000   #session的会话时间 以ms为单位
initLimit=10      #服务器启动以后,master和slave通讯的时间
syncLimit=5       #master和slave之间的心跳检测时间,检测slave是否存活
dataDir=/tmp/zookeeper  #保存zk的快照和数据
clientPort=2181      #客户端访问zk的端口
1.2.3 复制zoo_sample.cfg为zoo1.cfg添加如下配置
代码语言:javascript
复制
cp zoo_sample.cfg zoo1.cfg
vim zoo1.cfg

配置:

代码语言:javascript
复制
#session的会话时间 以ms为单位
tickTime=2000

#服务器启动以后,master和slave通讯的时间
initLimit=10

#master和slave之间的心跳检测时间,检测slave是否存活
syncLimit=5

#(这个目录可以自行指定)
dataDir=/zookeeper/zk1

#客户端访问zk的端口
clientPort=2181
代码语言:javascript
复制
#master对应于前面在hosts里面配置的主机映射 2888是数据同步和消息传递端口,3888是选举端口
server.1=master:2888:3888 

#master对应于前面在hosts里面配置的主机映射 2889是数据同步和消息传递端口,3889是选举端口 
server.2=master:2889:3889 

#master对应于前面在hosts里面配置的主机映射 2890是数据同步和消息传递端口,3890是选举端口 
server.3=master:2890:3890
1.2.4 复制zoo1.cfg为zoo2.cfg添加如下配置
代码语言:javascript
复制
cp zoo1.cfg zoo2.cfg
vim zoo2.cfg
代码语言:javascript
复制
#session的会话时间 以ms为单位
tickTime=2000

#服务器启动以后,master和slave通讯的时间
initLimit=10

#master和slave之间的心跳检测时间,检测slave是否存活
syncLimit=5

#(这个目录可以自行指定)
dataDir=/zookeeper/zk2

#客户端访问zk的端口
clientPort=2182

#master对应于前面在hosts里面配置的主机映射 2888是数据同步和消息传递端口,3888是选举端口
server.1=master:2888:3888 

#master对应于前面在hosts里面配置的主机映射 2889是数据同步和消息传递端口,3889是选举端口 
server.2=master:2889:3889 

#master对应于前面在hosts里面配置的主机映射 2890是数据同步和消息传递端口,3890是选举端口 
server.3=master:2890:3890
 1.2.5 复制zoo1.cfg为zoo3.cfg添加如下配置
代码语言:javascript
复制
cp zoo1.cfg zoo3.cfg
vim zoo3.cfg
代码语言:javascript
复制
#session的会话时间 以ms为单位
tickTime=2000

#服务器启动以后,master和slave通讯的时间
initLimit=10

#master和slave之间的心跳检测时间,检测slave是否存活
syncLimit=5

#(这个目录可以自行指定)
dataDir=/zookeeper/zk3

#客户端访问zk的端口
clientPort=2183
代码语言:javascript
复制
#master对应于前面在hosts里面配置的主机映射 2888是数据同步和消息传递端口,3888是选举端口
server.1=master:2888:3888 

#master对应于前面在hosts里面配置的主机映射 2889是数据同步和消息传递端口,3889是选举端口 
server.2=master:2889:3889 

#master对应于前面在hosts里面配置的主机映射 2890是数据同步和消息传递端口,3890是选举端口 
server.3=master:2890:3890
1.2.6 手动建立myid文件且指定在zk数据目录

        也就是dataDir指定的路径(不管真分布还是伪分布都需要指定) 

代码语言:javascript
复制
echo 1 >> /zookeeper/zk1/myid
echo 2 >> /zookeeper/zk2/myid
echo 3 >> /zookeeper/zk3/myid

说明:         myid文件内容分别为1,2,3对应于zk配置文件的server.1,server.2,server.3

1.2.7 测试zookeeper分布式是否搭建成功

        分别启动三个zookeeper

代码语言:javascript
复制
cd /software/zookeeper-3.4.6/bin/
./zkServer.sh start /software/zookeeper-3.4.6/conf/zoo1.cfg
./zkServer.sh start /software/zookeeper-3.4.6/conf/zoo2.cfg
./zkServer.sh start /software/zookeeper-3.4.6/conf/zoo3.cfg

        查看3个zookeeper的状态

代码语言:javascript
复制
cd /software/zookeeper-3.4.6/bin/
/zkServer.sh status /software/zookeeper-3.4.6/conf/zoo1.cfg
/zkServer.sh status /software/zookeeper-3.4.6/conf/zoo2.cfg
/zkServer.sh status /software/zookeeper-3.4.6/conf/zoo3.cfg

        可以看到第2个zookeeper是leader,第1个和第3个为follower,到此zookeeper分布式搭建完成!!!

1.2.8 Zookeeper常用命令 
代码语言:javascript
复制
启动:
./zkServer.sh start /software/zookeeper-3.4.6/conf/zoo1.cfg
./zkServer.sh start /software/zookeeper-3.4.6/conf/zoo2.cfg
./zkServer.sh start /software/zookeeper-3.4.6/conf/zoo3.cfg

停止:
./zkServer.sh stop /software/zookeeper-3.4.6/conf/zoo1.cfg
./zkServer.sh stop /software/zookeeper-3.4.6/conf/zoo2.cfg
./zkServer.sh stop /software/zookeeper-3.4.6/conf/zoo3.cfg

查看状态:
/zkServer.sh status /software/zookeeper-3.4.6/conf/zoo1.cfg
/zkServer.sh status /software/zookeeper-3.4.6/conf/zoo2.cfg
/zkServer.sh status /software/zookeeper-3.4.6/conf/zoo3.cfg
1.2.9 Zookeeper真分布式部署在master、slave1、slave2 三台不同的服务器上

 server1..../conf/zoo.cfg

代码语言:javascript
复制
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zookeeper/zk
clientPort=2181

server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

 server2..../conf/zoo.cfg

代码语言:javascript
复制
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zookeeper/zk
clientPort=2181

server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

server3..../conf/zoo.cfg

代码语言:javascript
复制
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zookeeper/zk
clientPort=2181

server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

注意:真分布必须是奇数台,因为必须满足n/2+1=m,m必须大于部署zk机器数的一半(n/2)可用才认为集群可用,而且奇数台更节省资源。 2/2+1=2 一台不能坏 3/2+1=2 可以坏掉一台 4/2+1=3 只能坏一台 5/2+1=3 可以坏2台

2 ZK Shell的使用

2.1 连接zk

代码语言:javascript
复制
zkCli.sh [-server ip:port]

示例:

        连接到master(127.0.0.1 master)这台机器上2181的zookeeper

代码语言:javascript
复制
./zkCli.sh -server master 2181

2.2 列出zk中的节点

代码语言:javascript
复制
ls ls2

 示例:

2.3 创建节点

代码语言:javascript
复制
create [-s] [-e] path data acl

说明:

zk的节点分为两种:临时节点(随着zk session消亡而自动删除)、持久节点(一直存在)

  • -s: 顺序节点
  • -e: 临时节点
  • acl:访问权限控制

示例:

2.3.1 创建一个zk-test的节点

        数据是123 不带-s 、-e默认是持久节点:

代码语言:javascript
复制
create /zk-test "123"
2.3.2 创建顺序节点
代码语言:javascript
复制
create -s /zk-test “test123”

        多次执行创建顺序节点的命令,可以看到zookeeper的内部会对顺序节点的名称进行自增控制。

2.3.3 创建临时节点
代码语言:javascript
复制
create -e /zk-test123 "test1234"

说明:临时节点依赖于顺序节点,临时节点下不能再创建临时节点,顺序节点下才可以创建临时节点

2.3.4 创建子节点test
代码语言:javascript
复制
create /zk-test "" create /zk-test/test "1" ls /zk-test/test

2.4 删除节点命令

代码语言:javascript
复制
delete

示例:

删除节点zk-test,如果zk-test下面还有子节点得先删除子节点,才能删除zk-test

代码语言:javascript
复制
delete /zk-test/test

delete /zk-test

 递归删除一个znode

代码语言:javascript
复制
rmr path

示例:

删除zk-test及其下面的子节点

代码语言:javascript
复制
rmr /zk-test

2.5 获取节点信息

代码语言:javascript
复制
get

示例:

代码语言:javascript
复制
create /zk-123 “abc” get /zk-123

结果说明:

代码语言:javascript
复制
结果
cZxid = #创建节点时zk内部自己分配的id
Ctime = #创建节点的时间
mZxid = #修改的id
mtime = 修改的时间
pZxid = 子节点最后一次被修改的id
cVersion = 0  #拥有的子节点被改的话,该值随着改变
dataVersion = 0 #数据版本
aclVersion = 0 # 访问控制权限的版本
ephemeralOwner = 0X0 #临时节点还是持久节点 临时节点值不为0(值为当前会话id),持久节点值永远为0
dataLength = 3 #数据长度
numChildren = 0 #子节点个数

2.6 更新节点数据

代码语言:javascript
复制
set /zk-123 “d”

2.7 连接到指定节点

代码语言:javascript
复制
connect host:port

 示例:

代码语言:javascript
复制
连接到2181
connect master:2181

连接到2182
connect master:2182

连接到2183
connect master:2183

说明:

        这个命令是在已经连接到zookeeper之后,在里面切换到其他zookeeper时使用。

2.8 设置配额

配额:给某个目录指定多少存储空间或者允许创建多少个节点

代码语言:javascript
复制
setquota -n|-b val path

参数说明:

  • n 指定可以设置多少个子节点
  • b 指定可以设置多大空间(byte)

示例:

代码语言:javascript
复制
setquota -n 5 /zk-123
create  /zk-123/1 1
create  /zk-123/2 2
create  /zk-123/3 3
create  /zk-123/4 4 
create  /zk-123/5 5 
create  /zk-123/6 6

说明:

        对于配额不是硬性的提示,超过配额还是可以继续创建,只不过在日志里面有提示。

配额的用途:

        限制子节点的创建个数和分配空间的大小,如指定某个session有多少空间可以用。

2.9 查看配额

代码语言:javascript
复制
listquota path

2.10 查看节点的状态

代码语言:javascript
复制
stat path

示例:

        查看节点zk-123的状态

代码语言:javascript
复制
stat /zk-123

参考链接

 随笔分类 -  Zookeeper专题系列

Zookeeper简介及核心概念_Cynicism_Kevin的博客-CSDN博客

zookeeper安装以及使用_燕少༒江湖的博客-CSDN博客

Zookeeper工作原理(详细)_zookeeper原理_笔墨登场说说的博客-CSDN博客

Zookeeper的功能以及工作原理_zookeeper的主要功能_空白格的空白的博客-CSDN博客

ZooKeeper基本原理

深入了解Zookeeper核心原理

Zookeeper原理解析 - 简书

Zookeeper系列一:Zookeeper介绍、Zookeeper安装配置、ZK Shell的使用

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 Zookeeper安装配置
    • 1.1 安装
      • 1.1.1 下载
      • 1.1.2 解压
    • 1.2 配置
      • 1.2.1 先建立zookeeper的三个数据目录
      • 1.2.2 查看zookeeper的配置文件(已删掉多余的配置和注释)
      • 1.2.3 复制zoo_sample.cfg为zoo1.cfg添加如下配置
      • 1.2.4 复制zoo1.cfg为zoo2.cfg添加如下配置
      •  1.2.5 复制zoo1.cfg为zoo3.cfg添加如下配置
      • 1.2.6 手动建立myid文件且指定在zk数据目录
      • 1.2.7 测试zookeeper分布式是否搭建成功
      • 1.2.8 Zookeeper常用命令 
      • 1.2.9 Zookeeper真分布式部署在master、slave1、slave2 三台不同的服务器上
  • 2 ZK Shell的使用
    • 2.1 连接zk
      • 2.2 列出zk中的节点
        • 2.3 创建节点
          • 2.3.2 创建顺序节点
          • 2.3.3 创建临时节点
          • 2.3.4 创建子节点test
        • 2.4 删除节点命令
          • 2.5 获取节点信息
            • 2.6 更新节点数据
              • 2.8 设置配额
                • 2.9 查看配额
                  • 2.10 查看节点的状态
                  • 参考链接
                  相关产品与服务
                  容器服务
                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档