单机部署zookeeper集群

这篇具有很好参考价值的文章主要介绍了单机部署zookeeper集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、集群部署

1、环境

系统 CentOS 7.6
jdk jdk1.8.0_162
zookeeper zookeeper-3.6.2

2、zookeeper集群规划

zookeeper节点 客户端连接端口 交换信息端口 选举通信端口 数据目录 事务日志目录
2181 2181 2661 3661 ./2181/zkdata ./2181/zklogs
2182 2182 2662 3662 ./2182/zkdata ./2182/zklogs
2183 2183 2663 3663 ./2183/zkdata ./2183/zklogs

3、环境准备

  1. 创建目录
cd /data/test
mkdir -p 2181/zkdata
mkdir -p 2181/zklogs
mkdir -p 2182/zkdata
mkdir -p 2182/zklogs
mkdir -p 2183/zkdata
mkdir -p 2183/zklogs
  1. 解压安装包
tar -zxvf zookeeper-3.6.2.tar.gz -C 2181/
tar -zxvf zookeeper-3.6.2.tar.gz -C 2182/
tar -zxvf zookeeper-3.6.2.tar.gz -C 2183/
  1. 修改配置文件
    vi 2181/zookeeper-3.6.2/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/data/test/2181/zkdata
dataLogDir=/data/test/2181/zklogs
clientPort=2181
maxClientCnxns=300
server.1=192.168.192.128:2661:3661
server.2=192.168.192.128:2662:3662
server.3=192.168.192.128:2663:3663

其他两节点注意修改 dataDir、dataLogDir、clientPort 为对应的值

  1. 配置服务器编号
echo 1 > 2181/zkdata/myid
echo 2 > 2182/zkdata/myid
echo 3 > 2183/zkdata/myid

4、操作 zookeeper

① 启动各个节点

./2181/zookeeper-3.6.2/bin/zkServer.sh --config /data/test/2181/zookeeper-3.6.2/conf start
./2182/zookeeper-3.6.2/bin/zkServer.sh --config /data/test/2182/zookeeper-3.6.2/conf start
./2183/zookeeper-3.6.2/bin/zkServer.sh --config /data/test/2183/zookeeper-3.6.2/conf start./2181/zookeeper-3.6.2/bin/zkServer.sh start
./2182/zookeeper-3.6.2/bin/zkServer.sh start
./2183/zookeeper-3.6.2/bin/zkServer.sh start

②查看进程是否启动

jps

③查看状态

./2181/zookeeper-3.6.2/bin/zkServer.sh --config /data/test/2181/zookeeper-3.6.2/conf status
./2182/zookeeper-3.6.2/bin/zkServer.sh --config /data/test/2182/zookeeper-3.6.2/conf status
./2183/zookeeper-3.6.2/bin/zkServer.sh --config /data/test/2183/zookeeper-3.6.2/conf status

④连接 zookeeper

./2183/zookeeper-3.6.2/bin/zkCli.sh -server 192.168.192.128:2181

⑤退出客户端

[zk: 192.168.192.128:2181(CONNECTED) 0] quit

⑥停止 zookeeper

./2181/zookeeper-3.6.2/bin/zkServer.sh --config /data/test/2181/zookeeper-3.6.2/conf stop
./2182/zookeeper-3.6.2/bin/zkServer.sh --config /data/test/2182/zookeeper-3.6.2/conf stop
./2183/zookeeper-3.6.2/bin/zkServer.sh --config /data/test/2183/zookeeper-3.6.2/conf stop

二、常用命令

1、创建普通节点

  1. 永久节点 + 不带序号
[zk: localhost:2181(CONNECTED) 7] create /test
Created /test
[zk: localhost:2181(CONNECTED) 8] create /test/disorder disorder
Created /test/disorder
  1. 永久节点 + 带序号
[zk: localhost:2181(CONNECTED) 13] create -s /test/order order1
Created /test/order0000000002
[zk: localhost:2181(CONNECTED) 14] create -s /test/order order2
Created /test/order0000000003
[zk: localhost:2181(CONNECTED) 15] create -s /test/order order3
Created /test/order0000000004

2、创建短暂节点

  1. 短暂节点 + 不带序号
[zk: localhost:2181(CONNECTED) 17] create -e /test/tmp tmp1
Created /test/tmp
  1. 短暂节点 + 带序号
[zk: localhost:2181(CONNECTED) 1] create -e -s /test/tmp tmp2
Created /test/tmp0000000006
[zk: localhost:2181(CONNECTED) 2] create -e -s /test/tmp tmp3
Created /test/tmp0000000007

3、查看节点

[zk: localhost:2181(CONNECTED) 12] ls /test/tmp0000000006
[]
[zk: localhost:2181(CONNECTED) 13] ls -s /test/tmp0000000006
[]
cZxid = 0x200000014
ctime = Thu Aug 24 17:09:06 CST 2023
mZxid = 0x200000014
mtime = Thu Aug 24 17:09:06 CST 2023
pZxid = 0x200000014
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x100012134830002
dataLength = 4
numChildren = 0
[zk: localhost:2181(CONNECTED) 14]

4、获得节点的值

[zk: localhost:2181(CONNECTED) 3] get /test/tmp0000000006
tmp2
[zk: localhost:2181(CONNECTED) 3]
[zk: localhost:2181(CONNECTED) 3]
[zk: localhost:2181(CONNECTED) 4] get -s /test/tmp0000000006
tmp2
cZxid = 0x200000014
ctime = Thu Aug 24 17:09:06 CST 2023
mZxid = 0x200000014
mtime = Thu Aug 24 17:09:06 CST 2023
pZxid = 0x200000014
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x100012134830002
dataLength = 4
numChildren = 0
[zk: localhost:2181(CONNECTED) 5]

5、修改节点数据值

[zk: localhost:2181(CONNECTED) 17] set /test/disorder disorder2

三、知识

1、配置文件详解

配置项 默认值 配置描述
tickTime 2000 通信心跳时间,Zookeeper服务器与客户端心跳时间,单位毫秒
initLimit 10 Leader 和 Follower 初始连接时能容忍的最多心跳数(tickTime的数量)
syncLimit 5 Leader 和 Follower 之间通信时间如果超过 syncLimit * tickTime ,Leader 认为 Follwer 死掉,从服务器列表中删除 Follwer
dataDir /tmp/zookeeper 保存 zookeeper 中的数据
dataLogDir 默认指定在dataDir目录下 zookeeper事务日志的存储路径
clientPort 2181 客户端连接端口,zookeeper 会监听这个端口,接受客户端的访问请求
server.A=B:C:D server.序号=IP:内部同步端口:选举端口
server.A=B:C:D
A:是一个数字,表示这个是第几号服务器;集群模式下配置一个文件 myid,这个文件在 dataDir 目录下,这个文件里面有一个数据就是 A 的值,Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比较从而判断到底是哪个 server。
B:是这个服务器的地址。
C:是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口。
D:是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

2、选举机制

假设ZooKeeper由5台服务器组成

SID:服务器ID。用来唯一标识一台ZooKeeper集群中的机器,每台机器不能重复,和myid一致。

ZXID:事务ID。ZXID是一个事务ID,用来标识一次服务器状态的变更。在某一时刻,集群中的每台机器的ZXID值不一定完全一致,这和ZooKeeper服务器对于客户端“更新请求”的处理逻辑有关。

Epoch:每个Leader任期的代号。没有Leader时同一轮投票过程中的逻辑时钟值是相同的。每投完一次票这个数据就会增加
  1. 首次启动

①服务器1启动,发起一次选举。服务器1投自己一票。此时服务器1票数一票,不够半数以上(3票),选举无法完成,服务器1状态保持为 LOOKING

②服务器2启动,再发起一次选举。服务器1和2分别投自己一票并交换选票信息:此时服务器1发现服务器2的myid比自己目前投票推举的(服务器1)大,更改选票为推举服务器2。此时服务器1票数0票,服务器2票数2票,没有半数以上结果,选举无法完成,服务器1,2状态保持 LOOKING

③服务器3启动,发起一次选举。此时服务器1和2都会更改选票为服务器3。此次投票结果:服务器1为0票,服务器2为0票,服务器3为3票。此时服务器3的票数已经超过半数,服务器3当选Leader。服务器1,2更改状态为 FOLLOWING,服务器3更改状态为 LEADING

④服务器4启动,发起一次选举。此时服务器1,2,3已经不是LOOKING状态,不会更改选票信息。交换选票信息结果:服务器3为3票,服务器4为1票。此时服务器4服从多数,更改选票信息为服务器3,并更改状态为FOLLOWING

⑤服务器5启动,同4一样更改状态为FOLLOWING

  1. 非首次启动

①当ZooKeeper集群中的一台服务器出现以下两种情况之一时,就会开始进入Leader选举
• 服务器初始化启动。
• 服务器运行期间无法和Leader保持连接。

②当一台机器进入Leader选举流程时,当前集群也可能会处于以下两种状态:
• 集群中存在Leader。
对于第一种已经存在Leader的情况,机器试图去选举Leader时,会被告知当前服务器的Leader信息,对于该机器来说,仅仅需要和Leader机器建立连接,并进行状态同步即可。

• 集群中不存在Leader。
ZooKeeper由5台服务器 SID分别为1、2、3、4、5,ZXID分别为8、8、8、7、7,并且此时SID为3的服务器是Leader。某一时刻3和5服务器出现故障,因此开始进行Leader选举。

SID EPOCH ZXID SID
SID1 1 8 1
SID2 1 8 2
SID4 1 7 4

选举Leader规则:
①EPOCH大的直接胜出
②EPOCH相同,事务id大的胜出
③事务id相同,服务器id大的胜出

3、节点类型

持久(Persistent):客户端和服务器端断开连接后,创建的节点不删除
(1)持久化目录节点:客户端与Zookeeper断开连接后,该节点依旧存在
(2)持久化顺序编号目录节点:客户端与Zookeeper断开连接后,该节点依旧存
在,只是Zookeeper给该节点名称进行顺序编号

短暂(Ephemeral):客户端和服务器端断开连接后,创建的节点自己删除
(1)临时目录节点:客户端与Zookeeper断开连接后,该节点被删除
(2)临时顺序编号目录节点:客户端与 Zookeeper 断开连接后 , 该 节 点 被 删 除 , 只 是Zookeeper给该节点名称进行顺序编号

4、写流程

1、写请求发送给Leader节点
单机部署zookeeper集群,Linux运维,zookeeper

2、写请求发送给follower节点
单机部署zookeeper集群,Linux运维,zookeeper

5、命令行语法

单机部署zookeeper集群,Linux运维,zookeeper

6、当前节点详细数据

单机部署zookeeper集群,Linux运维,zookeeper
(1)czxid:创建节点的事务 zxid
(2)ctime:znode 被创建的时间(从 1970 年开始)
(3)mzxid:znode 最后更新的事务 zxid
(4)mtime:znode 最后修改的时间(从 1970 年开始)
(5)pZxid:znode 最后更新的子节点 zxid
(6)cversion:znode 子节点变化号,znode 子节点修改次数
(7)dataversion:znode 数据变化号
(8)aclVersion:znode 访问控制列表的变化号
(9)ephemeralOwner:如果是临时节点,这个是 znode 拥有者的 session id。如果不是临时节点则是 0
(10)dataLength:znode 的数据长度
(11)numChildren:znode 子节点数量文章来源地址https://www.toymoban.com/news/detail-656853.html

到了这里,关于单机部署zookeeper集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux实战——Zookeeper集群安装部署

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 除了为Hadoop和HBase提供协调服务外,Zookeeper也被其它许多软件采用作为

    2023年04月09日
    浏览(42)
  • Linux多虚拟机集群化配置详解(Zookeeper集群、Kafka集群、Hadoop集群、HBase集群、Spark集群、Flink集群、Zabbix、Grafana部署)

    前面安装的软件,都是以单机模式运行的,学习大数据相关的软件部署,后续安装软件服务,大多数都是以集群化(多台服务器共同工作)模式运行的。所以,需要完成集群化环境的前置准备,包括创建多台虚拟机,配置主机名映射,SSH免密登录等等。 我们可以使用VMware提供

    2024年02月04日
    浏览(52)
  • 【运维】Kafka高可用: KRaft(不依赖zookeeper)集群搭建

    本文主要介绍了 kafka raft集群架构: 与旧架构的不同点,有哪些优势,哪些问题 架构成员有哪些,怎么规划。 三节点集群安装、启动与测试 在旧的架构中 Kafka集群包含 多个broker节点和一个ZooKeeper 集群 。如上图集群结构:4个broker节点和3个ZooKeeper节点。Kafka 集群的controller在

    2024年02月03日
    浏览(41)
  • 2、etcd单机部署和集群部署

    上一章我们认识了 etcd ,简单的介绍了 etcd 的基础概念,但是理解起来还是比较抽象的。这一章我们就一起来部署下 etcd 。这样可以让我们对 etcd 有更加确切的认识。 对于平常的学习,其实搭建一个单机节点是够了的。接下来就讲讲怎么搭建单机节点。 本次部署是在 centos

    2024年02月08日
    浏览(44)
  • Docker部署Nacos(单机/集群)

    ​ 注意:本文中的nacos版本为2.2.0 nacos官方文档: https://nacos.io/zh-cn/docs/quick-start-docker.html 1.单机部署 1.1 安装docker ce 环境 1.2 下载nacos镜像 1.3 以单机模式启动nacos 命令解析 : 命令 含义 -v Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定 -p 容器内部端口

    2024年02月04日
    浏览(45)
  • 单机部署K8S集群

    1 系统准备 操作系统: Kubernetes 支持多种Linux发行版,包括但不限于 CentOS、Ubuntu、RHEL等。通常建议使用稳定版本,并且是 64位系统 。我这里使用的是CentOS 8.1版本  硬件配置: 内存(RAM): 每台机器至少需要2GB或更多 ,具体需求根据集群规模和应用程序负载来定。 CPU核心数

    2024年02月20日
    浏览(40)
  • docker部署单机ES集群7.2.0

    初始化es配置文件 调高JVM线程数限制数量 服务部署 es集群部署 确认集群配置 上面是同一台主机建立的,没设置内网ip,所以显示的是docker网络ip,如果是三台内网主机建立集群,建立集群成功后如图所示: 部署elasticsearch-head 便于管理es数据  确认效果 汉化:kibana 7.* 设置中

    2024年02月13日
    浏览(40)
  • Docker 单机/集群 部署 Nacos2.2.0

    1- 拉取镜像 2- 创建数据库 数据库初始化脚本:https://github.com/alibaba/nacos/blob/2.2.0/config/src/main/resources/META-INF/nacos-db.sql 3- 准备挂载的配置文件目录和日志目录 日志目录(空目录):./nacos/logs 配置文件:./nacos/conf/application.properties 拷贝:https://github.com/nacos-group/nacos-docker/blob/v2.2.0

    2024年02月15日
    浏览(37)
  • K8S如何部署Redis(单机、集群)

    在今天的讨论中,我们将深入研究如何将Redis数据库迁移到云端,以便更好地利用云计算的优势提高数据管理的灵活性。 Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息代理。Redis支持多种数据结构,如字符串、列表、集

    2024年02月11日
    浏览(42)
  • Docker高级——Docker部署RabbitMQ(单机,集群,仲裁队列)

    我们在Centos7虚拟机中使用Docker来安装。 方式一:在线拉取 方式二:从本地加载 在课前资料已经提供了镜像包: 上传到虚拟机中后,使用命令加载镜像即可: 执行下面的命令来运行MQ容器: 接下来,我们看看如何安装RabbitMQ的集群。 在RabbitMQ的官方文档中,讲述了两种集群

    2024年02月16日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包