热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

Linux下搭建Zookeeper一.Zookeeper配置说明1.Zookeeper的三种工作模式单机模式:可能存在单点故障;集群模式:在多台机器上部署Zookeeper集群

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/下:


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

1.4 创建 data 和 logs

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

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



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

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



使环境变量生效

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



查看Zookeeper状态

zkServer.sh status



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 :# 命令参数
ZooKeeper -server host:port cmd argsstat path [watch]set path data [version]ls path [watch]delquota [-n|-b] pathls2 path [watch]setAcl path aclsetquota -n|-b val pathhistory redo cmdnoprintwatches on|offdelete path [version]sync pathlistquota pathrmr pathget path [watch]create [-s] [-e] path data acladdauth scheme authquit getAcl pathclose 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

 


推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 本文介绍了sqlserver云存储和本地存储的区别,云存储是将数据存储在网络上,方便查看和调用;本地存储是将数据存储在电脑磁盘上,只能在存储的电脑上查看。同时提供了几种启动sqlserver的方法。此外,还介绍了如何导出数据库的步骤和工具。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 集成电路企业在进行跨隔离网数据交换时面临着安全性问题,传统的数据交换方式存在安全性堪忧、效率低下等问题。本文以《Ftrans跨网文件安全交换系统》为例,介绍了如何通过丰富的审批流程来满足企业的合规要求,保障数据交换的安全性。 ... [详细]
author-avatar
哇哈时候_206
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有