首页 > 其他分享 >zk-复制安装

zk-复制安装

时间:2023-02-25 23:46:01浏览次数:48  
标签:zk cfg zookeeper 3.4 复制 master 安装 节点

 

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

 

一、Zookeeper介绍

1. 介绍Zookeeper之前先来介绍一下分布式

1.1 分布式主要是下面两个方面:

1) 任务拆分

  任务拆分指的是把传统的单节点服务拆分成多个节点服务部署到不同的机器上对外提供服务。比如一个传统服务有订单+支付+物流等3个模块,拆分成订单系统、支付系统、物流系统3个服务。
2) 节点分工

  如上面的服务拆分后,订单系统、支付系统、物流系统各司其职
说明:

分布式解决高可用,高并发的。

集群解决的是高可用。

集群从物理上来定义,分布式一种工作方式。
例如:一个工作任务需要10个小时(单节点)
分布式:10台机器,任务只需要1个小时就能够完成
集群:10台机器,任务还是10个小时。

1.2 分布式协作中的难点:

如果让你设计一个分布式系统,你预见到什么问题?
1) 保证节点高可用(节点故障)
2) 数据的一致性
3) 通讯异常
4) 网络分区
.......

2.  Zookeeper简介

Zookeeper就是用来解决分布式协作中的难点的

zookeeper是google的chubby项目开源实现。最早是hadoop的子项目

Zookeeper的使用场景:

小米米聊、淘宝Taokeeper其实是类zookeeper。

Kafka使用zookeeper。消息发布订阅,其中zk就是用于检测节点崩溃。实现主题的发现,并且保持主题的生产和消费状态。

Hbase三段查找,Root-Region=》Meta Region=》Region(Table)。hbase的元数据信息放在HBase。HMaster挂掉,马上要节点恢复。
Hadoop。NameNode(SecondaryNameNode),HA Hadoop。一般情况下一个简单的hadoop集群,只有一个NameNode,如果NameNode挂掉,hadoop集群不可用。HA Haoop里面就要用到zk。

3. Zookeeper解决哪些问题

3.1 Master节点管理

  解决的问题:Master高可用(挂掉以后,谁来负责工作),保证唯一。

3.2 配置文件管理

  解决的问题:统一把配置文件存放zk,由ZK统一分发修改的内容到各台机器。

3.3 发布与订阅

  发布者(producer)将数据发布到zk节点上,供订阅者(consumer)动态获取

3.4 分布式锁

  分布式环境访问同一个资源,由第三方配锁实现。
  解决的问题:由zk统一进行协调,保证数据的一致性。

3.5 集群的管理

  Worker集群监控。保证主数据和备份数据的一致

二、Zookeeper安装配置

环境准备:

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

1. 安装

1.1.下载

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

1.2.解压

tar -zxvf zookeeper-3.4.6.tar.gz

2. 配置

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

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

ERROR [master:3890:QuorumCnxManager$Listener@517] - Exception while listening
java.net.SocketException: Unresolved address

vim /etc/hosts

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

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

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的端口

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
 
复制代码

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
复制代码

 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
复制代码

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

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分布式搭建完成!!!

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
复制代码

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台

三、ZK Shell的使用

1. 连接zk

zkCli.sh [-server ip:port]

示例:

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

./zkCli.sh -server master:2181

2. 列出zk中的节点

ls、ls2

 示例:

 

3. 创建节点

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

说明:

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

-s: 顺序节点

-e: 临时节点

acl:访问权限控制

示例:

3.1 创建一个zk-test的节点,数据是123 不带-s 、-e默认是持久节点

create /zk-test "123"

3.2 创建顺序节点

create  -s   /zk-test  “test123”

 

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

 

3.3 创建临时节点

create -e /zk-test123 "test1234"

 

说明:

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

3.4 创建子节点test

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

4. 删除节点命令

delete 

示例:

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

delete /zk-test/test
delete /zk-test

 递归删除一个znode

rmr path 

示例:

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

rmr  /zk-test

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 #子节点个数
复制代码

6. 更新节点数据

set  /zk-123 “d”

 

7. 连接到指定节点

connect host:port

 示例:

复制代码
连接到2181
connect master:2181

连接到2182
connect master:2182

连接到2183
connect master:2183
复制代码

说明:

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

 

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有多少空间可以用

9. 查看配额

listquota path

10. 查看节点的状态

stat path

示例:

查看节点zk-123的状态

stat  /zk-123

 

 

  分类: Zookeeper 谢谢推荐! 关注我 收藏该文   小不点啊
粉丝 - 394 关注 - 4     +加关注 7 0   您已支持过   « 上一篇: Mysql系列九:使用zookeeper管理远程Mycat配置文件、Mycat监控、Mycat数据迁移(扩容)
» 下一篇: Zookeeper系列二:分布式架构详解、分布式技术详解、分布式事务 posted @ 2018-09-03 00:31  小不点啊  阅读(21728)  评论(1)  编辑  收藏  举报  
评论列表        回复 引用 #1楼 2019-08-09 10:26 jupiter_gao 很详细, 很好 支持(0) 反对(0)     刷新评论刷新页面返回顶部 发表评论 编辑预览     自动补全

 退出 订阅评论 我的博客

 

[Ctrl+Enter快捷键提交]

    编辑推荐:
· 一个诡异的 Pulsar InterruptedException 异常
· .NET 微服务系统迁移至 .NET6.0 的故事
· 研究 c# 异步操作 async await 状态机的总结
· 现代图片性能优化及体验优化指南 - 响应式图片方案
· SQLSERVER 语句交错引发的死锁研究 阅读排行:
· 我花16块得到了一个永久的微型服务器
· .NET微服务系统迁移至.NET6.0的故事
· 2023年:我成了半个外包
· 用ChatGPT,快速设计一个真实的账号系统
· Quartz.Net 主要概念介绍和吐槽   昵称: 小不点啊
园龄: 5年5个月
粉丝: 394
关注: 4 +加关注
< 2023年2月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 1 2 3 4
5 6 7 8 9 10 11

搜索

   

常用链接

我的标签

随笔分类

随笔档案

阅读排行榜

评论排行榜

推荐排行榜

最新评论

    Copyright © 2023 小不点啊
Powered by .NET 7.0 on Kubernetes

标签:zk,cfg,zookeeper,3.4,复制,master,安装,节点
From: https://www.cnblogs.com/daofree/p/17155721.html

相关文章

  • Nmap介绍与安装
    一、概述:Nmap是一款开源、免费的网络探测、安全审计的工具电脑端安装了nmap工具之后,就可以利用nmap向其他主机发送数据包,其他主机收到数据包后会返回信息,nmap会根据这些......
  • 猫抓 浏览器插件安装教程,适用Chrome浏览器和Edge浏览器
    软件截图软件介绍猫抓是一款网页媒体嗅探工具类插件,可以在任意网页中嗅探获取视频链接等数据,可以一键获取需要的链接并自动保存。使用起来十分方便,打开需要下载文件的网......
  • 安装Git后向Github上传项目步骤
    安装Git后首次上传项目到Github需要进行配置,否则无法上传。在任意位置上鼠标右键进入Git操作命令行:先添加用户信息:输入gitconfig--globaluser.email"you@example......
  • Docker安装及基本使用
    一、安装Docker(ubuntu)卸载旧版本(可选)sudoapt-getremovedockerdocker-enginedocker.iocontainerdrunc添加Docker的官方GPG密钥curl-fsSLhttps://mirrors.ustc.......
  • jenkins安装使用
    前言jenkins是CI/CD中部署时候一个重要工具,今天给大家分享一下Jenkins在ubuntu的安装,后面附有window安装链接。作者:良知犹存转载授权以及围观:欢迎关注微信公众号:羽林君......
  • clickHouse安装踩坑
    1.查看版本 clickhouse-server--version2.下载linux机器上wget下载,有两个安装包体积较大wgethttps://packages.clickhouse.com/rpm/stable/clickhouse-server-23.......
  • windows10中安装 php的 pecl_http扩展
    在下面的网址中下载对应版本的三个dll文件  php_raphf.dll , php_propro.dll , php_http.dllhttp://windows.php.net/downloads/pecl/releases/在php.ini中增下......
  • 已解决(MongoDB安装报错)Service ‘MongoDB Server (MongoDB)’ (MongoDB) failed tosta
     报错问题粉丝群里面的一个小伙伴想安装MongoDB但是发生了报错(当时他心里瞬间凉了一大截,跑来找我求助,然后顺利帮助他解决了,顺便记录一下希望可以帮助到更多遇到这个bug......
  • K3S系列文章-使用AutoK3s在腾讯云上安装高可用K3S集群
    开篇《K3s系列文章》《Rancher系列文章》方案在腾讯云上安装K3S后续会在这套K3S集群上安装Rancher方案目标高可用3台master的k3s集群数据备份k......
  • 在线安装zabbix6.0.* _超详细
    简介Zabbix主要有以下几个组件组成:ZabbixServer:Zabbix服务端,是Zabbix的核心组件。它负责接收监控数据并触发告警,还负责将监控数据持久化到数据库中。ZabbixAgent......