热门标签 | 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

 


推荐阅读
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 本文介绍如何在Linux系统中卸载预装的OpenJDK,安装指定版本的JDK 1.8,并配置防火墙以确保系统安全性和软件兼容性。 ... [详细]
  • Linux系统中Java程序Too Many Open Files问题的深入解析与解决方案
    本文详细分析了在Linux环境下运行的Java应用程序中可能出现的“Too many open files”异常现象,探讨其成因及解决方法。该问题通常出现在高并发文件访问或大量网络连接场景下,对系统性能和稳定性有较大影响。 ... [详细]
  • 基于Node.js、Express、MongoDB和Socket.io的实时聊天应用开发
    本文详细介绍了使用Node.js、Express、MongoDB和Socket.io构建的实时聊天应用程序。涵盖项目结构、技术栈选择及关键依赖项的配置。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • 本文将详细介绍通过CAS(Central Authentication Service)实现单点登录的原理和步骤。CAS由耶鲁大学开发,旨在为多应用系统提供统一的身份认证服务。文中不仅涵盖了CAS的基本架构,还提供了具体的配置实例,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 从码农到创业者:我的职业转型之路
    在观察了众多同行的职业发展后,我决定分享自己的故事。本文探讨了为什么大多数程序员难以成为架构师,并阐述了我从一家外企离职后投身创业的心路历程。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • 深入解析 Android IPC 中的 Messenger 机制
    本文详细介绍了 Android 中基于消息传递的进程间通信(IPC)机制——Messenger。通过实例和源码分析,帮助开发者更好地理解和使用这一高效的通信工具。 ... [详细]
  • 本文详细介绍了如何解压并安装MySQL集群压缩包,创建用户和组,初始化数据库,配置环境变量,并启动相关服务。此外,还提供了详细的命令行操作步骤和常见问题的解决方案。 ... [详细]
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社区 版权所有