首页 > 系统相关 >Day08_03_分布式教程之Linux下搭建Zookeeper

Day08_03_分布式教程之Linux下搭建Zookeeper

时间:2022-12-23 15:38:19浏览次数:38  
标签:03 Day08 Zookeeper sh 集群 usr path local


Linux下搭建Zookeeper

一.Zookeeper 配置说明

1. Zookeeper 的三种工作模式

  • 单机模式: 可能存在单点故障;
  • 集群模式: 在多台机器上部署 ​​Zookeeper​​ 集群,适合线上环境使用;
  • 伪集群模式: 在一台机器同时运行多个 ​​Zookeeper​​ 实例,仍然有单点故障问题.当然,其中配置的端口号是要错开的,适合实验环境模拟集群使用.

2. Zookeeper 的三种端口号

  • 2181: 客户端连接 ​​Zookeeper​​ 集群使用的监听端口号;
  • 3888: 选举 ​​Leader​​ 使用;
  • 2888: 集群内机器通讯使用的端口(​​Leader​​ 和 ​​Follower​​ 之间数据同步使用的端口号, ​​Leader​​ 监听此端口).

3. Zookeeper 单机模式配置文件

配置文件路径: ​​/conf/zoo.cfg​

clientPort=2181
dataDir=/data
dataLogDir=/datalog
tickTime=2000
  • clientPort: 这个端口就是客户端连接 ​​Zookeeper​​ 服务器的端口,​​Zookeeper​​ 会监听这个端口,接受客户端的访问请求;
  • dataDir: ​​Zookeeper​​ 保存数据的目录;
  • dataLogDir: ​​Zookeeper​​ 保存日志的目录;
  • tickTime: 这个时间是作为 ​​Zookeeper​​ 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每隔 ​​tickTime​​ 时间就会发送一个心跳.

4. Zookeeper 集群模式配置文件

配置文件路径:​​/conf/zoo.cfg​

clientPort=2181
dataDir=/data
dataLogDir=/datalog
tickTime=2000
initLimit=5
syncLimit=2
autopurge.snapRetainCount=3
autopurge.purgeInterval=0
maxClientCnxns=60
server.1=192.168.0.1:2888:3888
server.2=192.168.0.2:2888:3888
server.3=192.168.0.3:2888:3888
  • initLimit: 配置 ​​Zookeeper​​ 接受客户端(这里所说的客户端不是用户连接 ​​Zookeeper​​ 服务器的客户端,而是 ​​Zookeeper​​ 服务器集群中连接到 ​​Leader​​ 的 ​​Follower​​ 服务器)初始化连接时最长能忍受多少个心跳时间间隔数,当已经超过 ​​initLimit​​(默认为 10)个心跳的时间(也就是 ​​tickTime​​)长度后,如果 ​​Zookeeper​​ 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败,总的时间长度就是 ​​5 * 2000 = 10​​ 秒;
  • syncLimit: 配置 ​​Leader​​ 与 ​​Follower​​ 之间发送消息时请求和应答的时间长度,最长不能超过多少个 ​​tickTime​​ 的时间长度,总的时间长度就是 ​​2 * 2000 = 4​​ 秒;
  • 定时清理(​​Zookeeper​​ 从 3.4.0 开始提供了自动清理快照和事务日志的功能),以下两个参数配合使用:
  • autopurge.purgeInterval: 指定了清理频率,单位是小时,需要填写一个 1 或更大的整数,默认是 0,表示不开启自己清理功能;
  • autopurge.snapRetainCount: 指定了需要保留的文件数目,默认是保留 3 个.
  • maxClientCnxns: 限制连接到 ​​Zookeeper​​ 的客户端的数量,限制并发连接的数量,它通过 IP 来区分不同的客户端.此配置选项可以用来阻止某些类别的 ​​Dos​​ 攻击,将它设置为 0 或者忽略而不进行设置将会取消对并发连接的限制.
  • **server.A=B:C:D **: 其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 IP 地址;C 表示的是这个服务器与集群中的 ​​Leader​​ 服务器交换信息的端口(​​2888​​);D 表示的是万一集群中的 ​​Leader​​ 服务器挂了,需要一个端口来重新进行选举,选出一个新的 ​​Leader​​,而这个端口就是用来执行选举时服务器相互通信的端口(​​3888​​).如果是伪集群的配置方式,由于 B 都是一样,所以不同的 ​​Zookeeper​​ 实例通信端口号不能一样,所以要给它们分配不同的端口号.

注意: ​​server.A​​​ 中的 A 是在 ​​dataDir​​​ 配置的目录中创建一个名为 ​​myid​​ 的文件里的值(如: 1).

二. Linux 下手动安装 Zookeeper

​Zookeeper​​ 部署有三种方式:单机模式、集群模式、伪集群模式,以下采用手动安装的方式进行单机部署.

注意: 集群为大于等于3的奇数,如 3、5、7,不宜太多,集群机器多了选举和数据同步耗时长,不稳定.

1. 单机模式安装

1.1 下载Zookeeper

点击官网下载地址​下载指定版本的​​Zookeeper​​,然后上传到服务器.

1.2 上传安装文件

安装目录在​​/usr/local/​​下:


Day08_03_分布式教程之Linux下搭建Zookeeper_服务器

将​​Zookeeper​​​复制到​​/usr/local/​​目录下.

cp /home/yyg/桌面/zookeeper-3.4.6.tar.gz /usr/local/

1.3 解压缩Zookeeper

tar -zxvf zookeeper-3.4.6.tar.gz

Day08_03_分布式教程之Linux下搭建Zookeeper_客户端_02

1.4 创建 data 和 logs

在​​/usr/local/​​目录下,创建两个目录用于存储数据和日志.

cd /usr/local/zookeeper-3.4.6
mkdir data
mkdir logs


Day08_03_分布式教程之Linux下搭建Zookeeper_服务器_03

1.5 修改配置文件

cd /usr/local/zookeeper-3.4.6/conf/

#修改配置文件名称为zoo.cfg
mv zoo_sample.cfg zoo.cfg

#修改配置信息
dataDir=/usr/local/zookeeper-3.4.6/data
dataLogDir=/usr/local/zookeeper-3.4.6/logs

Day08_03_分布式教程之Linux下搭建Zookeeper_zookeeper_04

1.6 将Zookeeper添加到环境变量

编辑profile文件

vim /etc/profile

在profile文件末尾新增配置信息

export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6/
export PATH=$ZOOKEEPER_HOME/bin:$PATH
export PATH


Day08_03_分布式教程之Linux下搭建Zookeeper_客户端_05

使环境变量生效

source /etc/profile

Zoookeeper相关命令

#启动Zookeeper服务
zkServer.sh start

#查看状态Zookeeper服务
zkServer.sh status

#重启Zookeeper服务
zkServer.sh restart

#停止Zookeeper服务
zkServer.sh stop

1.7 启动Zookeeper

zkServer.sh start


Day08_03_分布式教程之Linux下搭建Zookeeper_zookeeper_06

查看Zookeeper状态

zkServer.sh status


Day08_03_分布式教程之Linux下搭建Zookeeper_服务器_07

2. 伪集群模式安装

伪集群模式就是在同一主机启动多个 ​​Zookeeper​​​ 并组成集群,下边以在 ​​192.168.1.103​​​ 主机上创 3 个 ​​Zookeeper​​ 组集群为例.

将通过单机模式安装的 ​​Zookeeper​​​,复制成​​zookeeper1,zookeeper2,zookeeper3​​ 三份.

2.1 zookeeper1

  • 修改配置文件
tickTime=2000
dataDir=/usr/local/zookeeper1/data
dataLogDir=/usr/local/zookeeper1/logs
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.1.103:2888:3888
server.2=192.168.1.103:4888:5888
server.3=192.168.1.103:6888:7888
  • 设置服务器 ID
echo '1' > data/myid

2.2 zookeeper2

  • 修改配置文件
tickTime=2000
dataDir=/usr/local/zookeeper2/data
dataLogDir=/usr/local/zookeeper2/logs
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.1.103:2888:3888
server.2=192.168.1.103:4888:5888
server.3=192.168.1.103:6888:7888
  • 设置服务器 ID
echo '2' > data/myid

2.3 zookeeper3

  • 修改配置文件
tickTime=2000
dataDir=/usr/local/zookeeper3/data
dataLogDir=/usr/local/zookeeper3/logs
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.1.103:2888:3888
server.2=192.168.1.103:4888:5888
server.3=192.168.1.103:6888:7888
  • 设置服务器 ID
echo '3' > data/myid

2.4 启动和停止

分别启动服务器,顺序无所谓.

./zkServer.sh start
./zkServer.sh stop
./zkServer.sh restart
./zkServer.sh status

3. 集群模式安装

集群模式就是在不同主机上安装 ​​Zookeeper​​,然后组成集群的模式,操作步骤同上,此处不再赘述.

三. Zookeeper 常用命令

1. zkServer命令

  • 启动服务
./zkServer.sh start
  • 停止服务
./zkServer.sh stop
  • 重启服务
./zkServer.sh restart
  • 执行状态
./zkServer.sh status

2. zkClient命令

  • 客户端连接服务器并进入 ​​Bash​​ 模式.
./zkCli.sh -server <ip>:<port>

# 命令参数
ZooKeeper -server host:port cmd args
stat path [watch]
set path data [version]
ls path [watch]
delquota [-n|-b] path
ls2 path [watch]
setAcl path acl
setquota -n|-b val path
history
redo cmdno
printwatches on|off
delete path [version]
sync path
listquota path
rmr path
get path [watch]
create [-s] [-e] path data acl
addauth scheme auth
quit
getAcl path
close
connect host:port
  • 创建节点(​​Bash​​模式)
create /test "hello zookeeper"
  • 查询节点(​​Bash​​模式)
get /test

# 输出如下
Hello Zookeeper
cZxid = 0x100000004
ctime = Fri Oct 19 05:11:47 GMT 2018
mZxid = 0x100000004
mtime = Fri Oct 19 05:11:47 GMT 2018
pZxid = 0x100000004
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 15
numChildren = 0
  • 删除节点(​​Bash​​模式)
delete /test

 

标签:03,Day08,Zookeeper,sh,集群,usr,path,local
From: https://blog.51cto.com/u_7044146/5965779

相关文章

  • Day11_03_Redis教程之Redis服务器客户端安装配置及配置文件详解
    Redis服务器客户端安装配置及配置文件详解一.Redis的安装在ubuntu18.04下,可以直接通过命令安装.1.更新系统环境$sudoapt-getupdate#更新软件列表$sudoapt-getupgra......
  • SpringBoot2.x系列教程之SpringBoot2.x配置大全03
    SpringBoot2.x系列教程之SpringBoot2.x配置大全作者:一一哥一.SpringBoot2.x配置大全(下)#THREADDUMPENDPOINT(ThreadDumpEndpoint)management.endpoint.threaddump.cache.......
  • SpringBoot2.x系列教程17--Web开发03之支持jsp
    SpringBoot系列教程17--Web开发03之支持jsp作者:一一哥咱们都知道,在SpringMVC中是支持JSP的,但是在SpringBoot中,其实不建议使用JSP。因为在使用嵌入式servlet容器时,有一些......
  • SpringBoot2.x系列教程03--新纪元之SpringBoot初相见
    作者:一一哥一.概述当这个世界上大家都用木棍石头打架的时候,就看谁的人多力气大,谁就容易获胜。但是当热兵器产生以后,人多也扛不住船坚炮利!SpringBoot的诞生,无异于从冷兵......
  • 03_Java筑基之Java编程基础
    03_Java筑基之Java编程基础我们是学习软件开发的,必然离不开计算机,所以在进行学习之前,首先要了解一些必要的计算机基础知识.一.计算机基础1.......
  • 基于Zookeeper与Redis进行分布式锁的代码实现
    一.分布式锁介绍由于传统的锁是基于Tomcat服务器内部的,搭建了集群之后,导致锁失效,应该使用分布式锁来处理。二.分布式锁解决方案我们要想实现分布式锁,可以使用两种方案:1.基于......
  • 分布式调度zookeeper、单机版、伪分布式、完全分布式
    分布式调度——zookeeper一、 为什么需要zookeeperl 大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等)l 大部分应用需要开发私......
  • 153-Illegal mix of collations for operation 'UNION'
    使用unionall查询,报错:Illegalmixofcollationsforoperation'UNION'相同字段的编码为utf8_general_ci与utf8_unicode_ci,就会报Illegalmixofcollationsfor......
  • typesc03_ts中的数据类型1基本数据类型
     ts类型中的基本数据类型:1.number:任意数字2.string:任意字符3.Boolean:布尔值4.字面量:限制变量的值就是该字面量的值5.any:任意类型,设置类型为any后相当于对改变量......
  • Node.js(笔记03) - path 路径模块
    path 路径模块path 模块是Node.js 官方提供的、用来处理路径的模块。它提供了一系列方法和属性,来满足用户对路径的处理需求。 官方文档:​​https://nodejs.org/dist/la......