虚拟机-zookeeper集群搭建

前言

zookeeper的搭建以及集群搭建是很是简单的、咱们在工做中经常使用的就是单点模式集群模式html

本篇的内容为:apache

  • Zookeeper运行模式
  • Zookeeper搭建(单点、集群)

官网zookeeper搭建参考:https://zookeeper.apache.org/...centos

正文

1、Zookeeper 运行模式

Zookeeper单点模式集群模式bash

  • 单点模式(standalone mode)- Zookeeper 只运行在单个服务器上,经常使用于开发测试阶段,这种模式比较简单,可是不能保证Zookeeper服务的高可用性恢复性
  • 集群模式(replicated mode)- 这种模式叫作“复制模式”;这个模式下,Zookeeper运行于一个集群上,适合生产环境。
    同一个集群下的server节点被称为_quorum_,翻译过来就是“一个正式会议的法定人数”;在集群模式下,最少须要三个server节点。而且官方推荐你使用奇数数量的server节点来组成集群。至于为何,和Zookeeper的读写策略和一致性协议有关。

2、Zookeeper搭建

单点模式

  1. 去官网下载对应源码压缩包,而后上传到服务器
  2. 解压,tar -zxvf zookeeper-***.tar.gz
  3. 进入到源码目录下的conf目录,根据zoo_sample.cfg,建立一个配置文件zoo.cfg,启动时默认就是按照zoo.cfg这个配置文件的信息来启动服务器

    # Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,
    # 也就是每一个 tickTime 时间就会发送一个心跳。
    tickTime=2000 
    # Zookeeper 保存数据的目录
    dataDir=/opt/zookeeper/data
    # Zookeeper 保存日志文件的目录
    dataLogDir=/opt/zookeeper/log
    # 客户端链接Zookeeper 服务器的端口
    # Zookeeper 会监听这个端口,接受客户端的访问请求
    clientPort=2181
  4. 修改环境变量测试

    vi ~/.bashrc  
    
    export ZOOKEEPER_HOME=/usr/local/zookeeper 
    export PATH=$PATH:$ZOOKEEPER_HOME/bin  
    
    source ~/.bashrc
  5. 进入到源码目录下的bin目录,执行zkServer.sh脚本文件便可spa

    # 启动
    zkServer.sh start
    # 关闭
    zkServer.sh stop
  6. 查看当前zookeeper 状态翻译

    [root@localhost bin]# sh zkServer.sh status 
    ZooKeeper JMX enabled by default
    Using config: /opt/zookeeper-3.4.8/bin/../conf/zoo.cfg
    Mode: standalone

Mode:standalone能够看到如今的节点启动类型:单点模式。日志

集群模式

集群模式的搭建和单点模式的差异不大,若是按照官方的最低要求,就是三台服务器,在这三台服务器上面分别执行一下上述单点模式的步骤,同一集群下的每台服务器的配置文件相似。code

基于上述单点模式搭建,集群模式的搭建,咱们须要作如下更改:

  1. 每台机器上 conf/zoo.cfg 配置文件的参数设置,须要添加集群的信息.

    tickTime=2000
    dataDir=/opt/zookeeper/data
    dataLogDir=/opt/zookeeper/log
    clientPort=2181
     # 集群相关配置
    # 容许 follower 链接并同步到 leader 的初始化链接时间 
    # 好比这里就是容许 5个 tick 的时间
    initLimit=5
    # leader 与 follower 之间发送消息,请求和应答时间长度。
    # 若是 follower 在设置的时间内不能与leader 进行通讯,那么此 follower 将被丢弃。
    # 好比这里就是容许 2个 tick 的时间
    syncLimit=2
    # 集群信息
    server.1=centos1:2888:3888
    server.2=centos2:2888:3888
    server.3=centos3:2888:3888

    server.id=host:port1:port2标识了不一样Zookeeper服务器的信息,其中 id 是一个数字,表示这个是服务器的编号;host是这个服务器的 ip 地址;至于port1port2参照官网的描述较为准确.
    "2888"和"3888",Zookeeper 节点使用前面那个端口(port1)来与其余节点创建链接。这个链接是必须创建的,由于不一样节点之间须要通讯。打比方说,follower节点须要“同意”leader节点的更新命令。更确切一点说,这个节点是用于follower节点和leader节点之间的通讯。当一个leader节点出现了,follower节点会在port1上与leader节点创建一个TCP链接。由于默认的leader选举也是用TCP,咱们如今就须要另外一个端口来用于leader选举,这就是port2的做用。

    归纳来讲,port1通讯端口,port2选举端口。

  2. 在每一个Zookeeper服务器对应的dataDir目录下须要建立一个名为myid的文件,这个文件中仅含有一行的内容,指定的是自身的 id 值,就是server.id=host:port1:port2中的id值。这个 id 值必须是集群中惟一的
  3. 确认每台服务器上的zoo.cfgmyid文件修改建立以后,在三个节点上分别执行命令zkServer.sh start,启动zookeeper server。
  4. 查看集群状态

    一、jps(查看进程:会出现:QuorumPeerMain ) 
    二、zkServer.sh status(查看集群状态,主从信息)

3、Zookeeper搭建详细操做

1.zookeper包上传

文件上传:
上传: scp localpath username@ip:remotepath
文件下载:
scp -r remote_username@remote_ip:remote_folder local_folder

scp /Users/xiexinming/software/package/zookeeper-3.4.9.tar.gz root@10.1.200.244:/usr/local/

2.zookeper解压修更名称

一、解压

tar -zxvf zookeeper-3.4.9.tar.gz

二、删除jar包,而后重命名

image.png

3.配置环境变量

vi ~/.bashrc  

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

source ~/.bashrc

image.png

4.修改配置文件

拷贝一份已经存在的样本文件,而后进行编辑
进入zookeeper的配置文件中:
cd ./zookeeper/conf
image.png

咱们在/opt下新建目录:zookeeper
而后咱们修改zookeeper的配置文件。

mkdir /opt/zookeeper/data
mkdir /opt/zookeeper/log

修改里面的基本配置文件:

dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/log
server.1=centos01:2888:3888
server.2=centos02:2888:3888 

设置zookeeper的id
进入zookeeper的data目录中去,设置他的id

cd /opt/zookeeper/data  
echo 1 > myid

image.png
上面myid里面内容为1,表明的是当前zookeeper机器编号。

5.其余机器zookeeper配置

scp -r /usr/local/zookeeper centos02:/usr/local ,修改环境变量,在centos02将myid的内容改成2 (echo 2 > myid)

scp -r /usr/local/zookeeper centos03:/usr/local,修改环境变量,在centos03将myid的内容改成3 (echo 3 > myid)

在另外一台机器查看:

image.png

修改环境变量:

vi ~/.bashrc  
export ZOOKEEPER_HOME=/usr/local/zookeeper 
export PATH=$PATH:$ZOOKEEPER_HOME/bin  
source ~/.bashrc

设置zookeeper的id
进入zookeeper的data目录中去,设置他的id

cd /opt/zookeeper/data  
echo 2 > myid

6.zookeeper启动

zookeeper是最基本基本的系统,全部能够直接跑

二台机器上执行:

一、启动zookeeper:

zkServer.sh start

二、查看集群状态

一、jps(查看进程:会出现:QuorumPeerMain ) 
二、zkServer.sh status(查看集群状态,主从信息)

image.png