“Zookeeper:安装、集群搭建”的版本间差异

来自Wikioe
跳到导航 跳到搜索
(建立内容为“== 安装 == 在安装ZooKeeper之前,请确保你的系统是在以下任一操作系统上运行: * 任意Linux OS - 支持开发和部署。适合演示应…”的新页面)
 
 
(未显示同一用户的8个中间版本)
第1行: 第1行:
== 安装 ==
[[category:Zookeeper]]
 
== 关于 ==
Zookeeper 更多用作分布式协调服务,所以集群的搭建配置是重点。
 
 
zookeeper 用到了三个端口,其作用:
# '''2181''' : 对 client 端提供服务;
# '''2888''' : 集群内机器通信使用;
# '''3888''' : 选举 leader 使用;
 
== 单机安装 ==
在安装ZooKeeper之前,请确保你的系统是在以下任一操作系统上运行:
在安装ZooKeeper之前,请确保你的系统是在以下任一操作系统上运行:
* 任意Linux OS - 支持开发和部署。适合演示应用程序。
* 任意Linux OS - 支持开发和部署。适合演示应用程序。
第5行: 第16行:
* Mac OS - 仅支持开发。
* Mac OS - 仅支持开发。


ZooKeeper服务器是用Java创建的,它在'''JVM'''上运行。你需要使用JDK 6或更高版本。
ZooKeeper服务器是用Java创建的,它在'''JVM'''上运行(需要使用JDK 6或更高版本)。
 


zookeeper 下载地址为: [https://zookeeper.apache.org/releases.html https://zookeeper.apache.org/releases.html]。
zookeeper 下载地址为: [https://zookeeper.apache.org/releases.html https://zookeeper.apache.org/releases.html]。
第51行: 第61行:
Mode: standalone
Mode: standalone
</syntaxhighlight>
</syntaxhighlight>
 
# 启动客户端:
==== 帮助命令 ====
#: <syntaxhighlight lang="java" highlight="">
启动客户端:
<syntaxhighlight lang="java" highlight="">
$ sh zkCli.sh
$ sh zkCli.sh
</syntaxhighlight>
</syntaxhighlight>
 
#: 帮助命令:
帮助命令:
#: <syntaxhighlight lang="java" highlight="">
<syntaxhighlight lang="java" highlight="">
ZooKeeper -server host:port <cmd> <args>
ZooKeeper -server host:port cmd args
                  stat path [watch]
        stat path [watch]
                  set path data [version]
        set path data [version]
                  ls path [watch]
        ls path [watch]
                  delquota [-n|-b] path
        delquota [-n|-b] path
                  ls2 path [watch]
        ls2 path [watch]
                  setAcl path acl
        setAcl path acl
                  setquota -n|-b val path
        setquota -n|-b val path
                  history  
        history  
                  redo cmdno
        redo cmdno
                  printwatches on|off
        printwatches on|off
                  delete path [version]
        delete path [version]
                  sync path
        sync path
                  listquota path
        listquota path
                  rmr path
        rmr path
                  get path [watch]
        get path [watch]
                  create [-s] [-e] path data acl
        create [-s] [-e] path data acl
                  addauth scheme auth
        addauth scheme auth
                  quit  
        quit  
                  getAcl path
        getAcl path
                  close  
        close  
                  connect host:port
        connect host:port
</syntaxhighlight>
</syntaxhighlight>


第102行: 第109行:


== 集群搭建 ==
== 集群搭建 ==
<syntaxhighlight lang="java" highlight="">
【以下使用 virtualbox 示范三台 zookeeper 服务端集群搭建步骤(云服务器或者物理机同理)】
 
 
安装:
# 创建三台虚拟机环境(centos)并安装好 java 开发工具包 JDK。
#: IP:192.168.3.33
#:: [[File:Zookeeper:集群搭建:节点1:环境.png|600px]]
#: IP:192.168.3.35
#:: [[File:Zookeeper:集群搭建:节点2:环境.png|600px]]
#: IP:192.168.3.37
#:: [[File:Zookeeper:集群搭建:节点3:环境.png|600px]]
#* 查看 ip 地址可以用 '''ifconfig''' 命令;
# 安装:(按照安装步骤)在服务器分别安装 zookeeper;
 


配置:(在所有服务器中分别操作,以下以第一台为例)
# 创建“'''数据目录'''”(dataDir)、“'''日志目录'''”(dataLogDir);
# 创建“'''myid'''”文件:
#: <syntaxhighlight lang="java" highlight="">
vim /tmp/zookeeper/myid
1
</syntaxhighlight>
</syntaxhighlight>
#* myid 是一个名称为“myid”的文本文件,默认位于“数据目录”下;
#* myid 的内容是且只能是一个数字,用于表示节点在集群中的唯一编号(必须确定每个节点的myid不同);
# 创建配置文件“'''zoo.cfg'''”:
## 修改“dataDir”、“dataLogDir”;
##: <syntaxhighlight lang="java" highlight="">
dataDir = /path/to/zookeeper/data
dataLogDir = /path/to/zookeeper/log
</syntaxhighlight>
##* 分别对应于第一步创建的“数据目录”、“日志目录”;
## 配置“clientPort”:
##: <syntaxhighlight lang="java" highlight="">
clientPort = 2181
</syntaxhighlight>
##* 表示客户端连接集群节点所用的端口号;
## 配置“节点信息”:(,每一台机器需要包括集群所有节点的信息):
##: <syntaxhighlight lang="java" highlight="">
server.1=192.168.3.33:2888:3888
server.2=192.168.3.35:2888:3888
server.3=192.168.3.37:2888:3888
</syntaxhighlight>
##* 格式为“server.id = host:port:port”,每一行表示集群的一个节点,id、host 分别对应一台机器的 myid、ip 的配置;
##* 前一个 port 表示节点间通信的端口,后一个 port 表示用于选举的端口;
##* 每台机器的配置文件都需要配置全部节点的信息。
## 配置“时间选项”:
##: <syntaxhighlight lang="java" highlight="">
tickTime = 2000
initLimit = 5
syncLimit = 2
</syntaxhighlight>
##* “tickTime”:单元时间,zookeeper的时间计算单元,默认 3000,单位 ms;
##* “initLimit”:节点的初始化时间,tickTime的倍数,默认 10;
##* “syncLimit”:心跳最大延迟周期,tickTime的倍数,默认 5;
启动集群:
#: 分别启动三台服务器的 Zookeeper;
#* 启动前需要关闭防火墙(生产环境需要打开对应端口)
#*: <syntaxhighlight lang="java" highlight="">
systemctl stop firewalld
</syntaxhighlight>
#* 首先启动 192.168.3.33 时,若此时查看日志出现报错是正常现象:(因为另外两台还没启动,暂时连接不上)
#*: [[File:Zookeeper:集群搭建:节点1:启动.png|600px]]
集群启动完成后,查看三台机器状态:
: IP:192.168.3.33
:: [[File:Zookeeper:集群搭建:节点1:状态.png|600px]]
: IP:192.168.3.35
:: [[File:Zookeeper:集群搭建:节点2:状态.png|600px]]
: IP:192.168.3.37
:: [[File:Zookeeper:集群搭建:节点3:状态.png|600px]]
至此,集群搭建成功!
* Mode:leader 代表主节点,follower 代表从节点,此处为一主二从。

2021年9月28日 (二) 19:49的最新版本


关于

Zookeeper 更多用作分布式协调服务,所以集群的搭建配置是重点。


zookeeper 用到了三个端口,其作用:

  1. 2181 : 对 client 端提供服务;
  2. 2888 : 集群内机器通信使用;
  3. 3888 : 选举 leader 使用;

单机安装

在安装ZooKeeper之前,请确保你的系统是在以下任一操作系统上运行:

  • 任意Linux OS - 支持开发和部署。适合演示应用程序。
  • Windows OS - 仅支持开发。
  • Mac OS - 仅支持开发。

ZooKeeper服务器是用Java创建的,它在JVM上运行(需要使用JDK 6或更高版本)。

zookeeper 下载地址为: https://zookeeper.apache.org/releases.html

Zookeeper:下载.png

Linux


安装步骤:

  1. 使用 wget 命令下载,并提取文件:
    $ wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz
    $ tar -zxvf zookeeper-3.4.14.tar.gz
    
  2. 创建数据目录:
    $ cd zookeeper-3.4.14
    $ mkdir data
    
  3. 创建并修改配置文件“zoo.cfg”:
    $ cd zookeeper-3.4.14
    $ cd conf/
    $ cp zoo_sample.cfg zoo.cfg
    $ vi zoo.cfg
    
    tickTime = 2000
    dataDir = ../data
    clientPort = 2181
    initLimit = 5
    syncLimit = 2
    
  4. 启动 ZooKeeper 服务器:
    $ bin/zkServer.sh start
    $ JMX enabled by default
    $ Using config: /Users/../zookeeper-3.4.6/bin/../conf/zoo.cfg
    $ Starting zookeeper ... STARTED
    
  5. 查看服务端状态(启动单机节点):
    $ bin/zkServer.sh status
    $ JMX enabled by default
    $ Using config: /Users/../zookeeper-3.4.6/bin/../conf/zoo.cfg
    Mode: standalone
    
  6. 启动客户端:
    $ sh zkCli.sh
    
    帮助命令:
    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
    

Windows


安装步骤:

  1. 下载文件并解压:
    Zookeeper:安装(Windows):下载文件并解压.png
  2. 创建数据、日志目录:
    Zookeeper:安装(Windows):创建数据、日志目录.png
  3. 创建并修改配置文件“zoo.cfg”:(从conf目录下的“zoo_sample.cfg”文件复制而来)
    Zookeeper:安装(Windows):创建并修改配置文件“zoo.cfg”1.png
    Zookeeper:安装(Windows):创建并修改配置文件“zoo.cfg”2.png
  4. 启动 ZooKeeper 服务器:(双击 zkServer.cmd 启动程序)
    Zookeeper:安装(Windows):启动 ZooKeeper 服务器1.png
    Zookeeper:安装(Windows):启动 ZooKeeper 服务器2.png
    控制台显示“bind to port 0.0.0.0/0.0.0.0:2181”,表示服务端启动成功!
  5. 启动 ZooKeeper 客户端:
    Zookeeper:安装(Windows):启动 ZooKeeper 客户端.png

集群搭建

【以下使用 virtualbox 示范三台 zookeeper 服务端集群搭建步骤(云服务器或者物理机同理)】


安装:

  1. 创建三台虚拟机环境(centos)并安装好 java 开发工具包 JDK。
    IP:192.168.3.33
    Zookeeper:集群搭建:节点1:环境.png
    IP:192.168.3.35
    Zookeeper:集群搭建:节点2:环境.png
    IP:192.168.3.37
    Zookeeper:集群搭建:节点3:环境.png
    • 查看 ip 地址可以用 ifconfig 命令;
  2. 安装:(按照安装步骤)在服务器分别安装 zookeeper;


配置:(在所有服务器中分别操作,以下以第一台为例)

  1. 创建“数据目录”(dataDir)、“日志目录”(dataLogDir);
  2. 创建“myid”文件:
    vim /tmp/zookeeper/myid
    1
    
    • myid 是一个名称为“myid”的文本文件,默认位于“数据目录”下;
    • myid 的内容是且只能是一个数字,用于表示节点在集群中的唯一编号(必须确定每个节点的myid不同);
  3. 创建配置文件“zoo.cfg”:
    1. 修改“dataDir”、“dataLogDir”;
      dataDir = /path/to/zookeeper/data
      dataLogDir = /path/to/zookeeper/log
      
      • 分别对应于第一步创建的“数据目录”、“日志目录”;
    2. 配置“clientPort”:
      clientPort = 2181
      
      • 表示客户端连接集群节点所用的端口号;
    3. 配置“节点信息”:(,每一台机器需要包括集群所有节点的信息):
      server.1=192.168.3.33:2888:3888
      server.2=192.168.3.35:2888:3888
      server.3=192.168.3.37:2888:3888
      
      • 格式为“server.id = host:port:port”,每一行表示集群的一个节点,id、host 分别对应一台机器的 myid、ip 的配置;
      • 前一个 port 表示节点间通信的端口,后一个 port 表示用于选举的端口;
      • 每台机器的配置文件都需要配置全部节点的信息。
    4. 配置“时间选项”:
      tickTime = 2000
      initLimit = 5
      syncLimit = 2
      
      • “tickTime”:单元时间,zookeeper的时间计算单元,默认 3000,单位 ms;
      • “initLimit”:节点的初始化时间,tickTime的倍数,默认 10;
      • “syncLimit”:心跳最大延迟周期,tickTime的倍数,默认 5;


启动集群:

  1. 分别启动三台服务器的 Zookeeper;
    • 启动前需要关闭防火墙(生产环境需要打开对应端口)
      systemctl stop firewalld
      
    • 首先启动 192.168.3.33 时,若此时查看日志出现报错是正常现象:(因为另外两台还没启动,暂时连接不上)
      Zookeeper:集群搭建:节点1:启动.png


集群启动完成后,查看三台机器状态:

IP:192.168.3.33
Zookeeper:集群搭建:节点1:状态.png
IP:192.168.3.35
Zookeeper:集群搭建:节点2:状态.png
IP:192.168.3.37
Zookeeper:集群搭建:节点3:状态.png

至此,集群搭建成功!

  • Mode:leader 代表主节点,follower 代表从节点,此处为一主二从。