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

news2024/12/27 11:54:06

1 Zookeeper安装配置

环境准备:

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

1.1 安装

1.1.1 下载

cd /software

wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

1.1.2 解压

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

vim /etc/hosts

1.2.1 先建立zookeeper的三个数据目录

mkdir -p /zookeeper/zk1
mkdir -p /zookeeper/zk2
mkdir -p /zookeeper/zk3

1.2.2 查看zookeeper的配置文件(已删掉多余的配置和注释)

vim zoo_sample.cfg
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添加如下配置

cp zoo_sample.cfg zoo1.cfg
vim zoo1.cfg

配置:

#session的会话时间 以ms为单位
tickTime=2000

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

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

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

#客户端访问zk的端口
clientPort=2181
#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添加如下配置

cp zoo1.cfg zoo2.cfg
vim zoo2.cfg
#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添加如下配置

cp zoo1.cfg zoo3.cfg
vim zoo3.cfg
#session的会话时间 以ms为单位
tickTime=2000

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

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

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

#客户端访问zk的端口
clientPort=2183
#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指定的路径(不管真分布还是伪分布都需要指定) 

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

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的状态

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常用命令 

启动:
./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

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

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

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

zkCli.sh [-server ip:port]

示例:

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

./zkCli.sh -server master 2181

2.2 列出zk中的节点

ls ls2

 示例:

2.3 创建节点

create [-s] [-e] path data acl

说明:

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

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

示例:

2.3.1 创建一个zk-test的节点

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

create /zk-test "123"

2.3.2 创建顺序节点

create -s /zk-test “test123”

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

2.3.3 创建临时节点

create -e /zk-test123 "test1234"

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

2.3.4 创建子节点test

create /zk-test "" create /zk-test/test "1" ls /zk-test/test

2.4 删除节点命令

delete

示例:

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

delete /zk-test/test

delete /zk-test

 递归删除一个znode

rmr path

示例:

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

rmr /zk-test

2.5 获取节点信息

get

示例:

create /zk-123 “abc” get /zk-123

结果说明:

结果
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 更新节点数据

set /zk-123 “d”

2.7 连接到指定节点

connect host:port

 示例:

连接到2181
connect master:2181

连接到2182
connect master:2182

连接到2183
connect master:2183

说明:

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

2.8 设置配额

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

setquota -n|-b val path

参数说明:

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

示例:

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 查看配额

listquota path

2.10 查看节点的状态

stat path

示例:

        查看节点zk-123的状态

stat /zk-123

参考链接

 随笔分类 -  Zookeeper专题系列

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

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

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

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

ZooKeeper基本原理

深入了解Zookeeper核心原理

Zookeeper原理解析 - 简书

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1004457.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

火山引擎 ByteHouse:两个关键技术,揭秘 OLAP 引擎中的数据导入技术

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 数据导入是衡量 OLAP 引擎性能及易用性的重要标准之一,高效的数据导入能力能够加速数据实时处理和分析的效率。 作为一款 OLAP 引擎,火山引…

Apollo自动驾驶平台:从传感器到决策的技术解析

前言: 随着科技的进步,自动驾驶技术正逐渐成为现实。而在这个领域,Baidu的Apollo自动驾驶平台展现出了强大的技术实力。本文将从传感器融合到决策技术,深入解析Apollo自动驾驶的核心技术链。 1. 传感器:Apollo的眼和耳…

数据结构与算法之(赫夫曼树,哈夫曼树,压缩软件)

一:思考 1.电报发送:二战的时候大家都知道那时候普遍会应用电报,如果让你来设计一个电报的发送编码你该如何设计呢? 2.压缩算法:给你10000个字符(每个字符1btye,也就是8bit)的文件&a…

C++:类的六个默认成员函数

文章目录 前言一、构造函数概念特性 二、析构函数概念特性 三、拷贝构造函数概念特性 四、赋值运算符重载运算符重载赋值运算符重载 五、取地址及const取地址操作符重载const成员取地址及const取地址操作符重载 总结 个人主页 : 个人主页 个人专栏 : 《数…

项目工单管理系统有什么用?“的修”报修系统在工单管理方面的优势是什么?

项目工单管理系统主要用于管理和协调项目中的任务和活动,它以帮助企业在项目管理、客户服务、资源优化和团队协作等多个方面实现显著提升,因此被越来越多的企业所采用。 企业使用项目工单管理系统的原因主要有以下几点:   提升工作效率&…

JOSEF约瑟 JL-A/41DK JL-A/42DK JL-A/43DK 无辅源电流继电器 过负荷

JL-A、B DK系列无辅源电流继电器 JL-A/11DK JL-A/31DK JL-A/12DK JL-A/32DK JL-A/13DK JL-A/33DK JL-A/21DK JL-A/22DK JL-A/23DK JL-A/34DK JL-A/35DK JL-A/41DK JL-A/42DK JL-A/43DK JL-A、B/41 DK无辅源电流继电器概述 JL-A、B/41 DK无辅源电流继电器作为继电保护元…

《Web安全基础》06. 逻辑漏洞越权

web 1:逻辑漏洞2:逻辑越权3:修复防御方案4:越权问题4.1:商品购买4.2:找回重置机制4.3:接口安全问题4.4:验证安全 5:相关资源 本系列侧重方法论,各工具只是实现…

LAND 所有路者线图——2023 年 9 月更新

来自世界各地的 LAND 所有者社区,你们好,欢迎阅读我们最新的路线图更新! 我们很高兴能回顾一下我们为实现元宇宙所做的一切努力。让我们开始吧! 简要介绍: ● 社区为每个地点提供专用赋能,促进品牌和用户之…

【C++】结构体内存对齐规则

一、结构体内存对齐(重要) 结构体内存对齐是结构体大小的计算规则,是校招笔试和面试过程中一个十分热门的考点,希望大家认真对待。 在学习结构体内存对齐之前,我们先给两组计算结构体大小的题目,看看你能否做对: //…

口袋参谋:淘宝不限类目,透视竞品实时销量!快试试这个插件

​在运营一家店铺之前,可以先了解各类目宝贝的市场行情,及时掌握不同类目宝贝的价格、销售情况,根据需求制定出属于自己的营销策略。 【可跨类目竞店透视】功能: 支持一键获取任意店铺宝贝概况信息 【跨类目竞店透视】功能使用 …

WavJourney:进入音频故事情节生成世界的旅程

推荐:使用 NSDT场景编辑器快速搭建3D应用场景 若要正确查看音频生成的强大功能,请考虑以下方案。我们只需要提供一个简单的指令,描述场景和场景设置,模型就会生成一个扣人心弦的音频脚本,突出与原始指令的最高上下文相…

如何应对数字时代的网络安全新挑战?

随着数字时代的来临,我们迎来了无限的机遇,同时也伴随着网络安全领域新的挑战。网络攻击变得更加智能化和复杂化,威胁也在不断演化。为了应对这些新挑战,我们必须采取创新的网络安全策略和技术。本文将探讨数字时代网络安全的新挑…

Windows关闭zookeeper、rocketmq日志输出以及修改rocketmq的JVM内存占用大小

JDK-1.8zookeeper-3.4.14rocketmq-3.2.6 zookeeper 进入到zookeeper的conf目录 清空配置文件&#xff0c;只保留下面这一行。zookeeper关闭日志输出相对简单。 log4j.rootLoggerOFFrocketmq 进入到rocketmq的conf目录 logback_broker.xml <?xml version"1.0&q…

电脑c盘满了怎么清理?最新方法分享!(2023版)

“电脑c盘满了真的太恐怖了&#xff01;我平常没有什么清理的习惯&#xff0c;但是今天用电脑的时候&#xff0c;电脑变得异常卡顿。一看才发现是c盘满了&#xff01;但是我电脑中太多重要文件了&#xff0c;有什么比较简单又不容易误删文件的c盘清理方法推荐吗&#xff1f;” …

0门槛限制!快来领取你的专属元宇宙虚拟展厅!

数字化时代中&#xff0c;元宇宙虚拟展厅仿佛成为了一种新的潮流&#xff0c;虚拟展厅的出现为我们呈现出了一个超越现实的全新世界。元宇宙虚拟展厅以其多样性、互动性、沉浸式展示为特点&#xff0c;同产品进行交互&#xff0c;创造出逼真的虚拟环境&#xff0c;为广大用户打…

c++结构体调用类的构造函数

结构体初始化会调用构造函数 using namespace std;class cls{ public:cls(){c 5;cout << "cls init" << endl;};int c; };struct s{s(){cout << a << endl;cout << b.c << endl;};int a;cls b; };int main(){s s1; }结构体构造…

无涯教程-JavaScript - DB函数

描述 DB函数使用固定余额递减法返回指定期间内资产的折旧。 语法 DB (cost, salvage, life, period, [month])争论 Argument描述Required/OptionalCostThe initial cost of the asset.RequiredSalvageThe value at the end of the depreciation (sometimes called the salv…

docker搭建redis哨兵集群和分片集群

搭建哨兵集群 环境准备拉取镜像 搭建目标 &#xff1a; 一主而从三哨兵集群 docker pull redis:6.2.6 创建文件夹及配置文件 我这里在/usr/local/docker/redis目录下 在 redis-master、redis-slave1、redis-slave2 下分别建立data、 redis.conf、 sentinel.conf redis配置文件…

mysql5.8 免安装版(压缩包)win10 安装

目录 1、下载MySQL5.82、如何安装、配置my.ini配置注意 3初始化mysql3.1. 初始化mysql3.2. 安装mysql服务3.3. 启动mysql3.4. 登录mysql3.5. 修改root密码3.6. 配置远程连接 Mysql5.8安装踩坑记录&#xff0c;推荐使用Docker安装&#xff0c;我是电脑虚拟化可能会蓝屏没用这个功…

vue3+ts+uniapp小程序封装获取授权hook函数

vue3tsuniapp小程序封装获取授权hook函数 小程序授权的时候&#xff0c;如果点击拒绝授权&#xff0c;然后就再也不会出现授权了&#xff0c;除非用户手动去右上角…设置打开 通过uni官方api自己封装一个全局的提示: uni.getSetting :http://uniapp.dcloud.io/api/other/settin…