服务器 1:192.168.1.81  端口:2181、2881、3881

服务器 2:192.168.1.82  端口:2182、2882、3882

服务器 3:192.168.1.83  端口:2183、2883、3883

#创建相应的用户

切换到 root 用户权限,执行以下命令:

# useradd –m zk –G zk –s /bin/bash

# password zk

# su – zk

1、 修改操作系统的/etc/hosts 文件,添加 IP 与主机名映射:

# zookeeper cluster servers

192.168.1.81   zookeeper-01

192.168.1.82   zookeeper-02

192.168.1.83   zookeeper-03

2、 下载或上传 zookeeper-3.4.6.tar.gz 到/home/zk/zookeeper 目录:

$ cd /home/zk/zookeeper

$ wget http://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz

3、 解压 zookeeper 安装包,并按节点号对 zookeeper 目录重命名:

$ tar -zxvf zookeeper-3.4.6.tar.gz

服务器 1:

$ mv zookeeper-3.4.6 node-01

服务器 2:

$ mv zookeeper-3.4.6 node-02

服务器 3:

$ mv zookeeper-3.4.6 node-03

4、 在各 zookeeper 节点目录下创建以下目录:

$ cd /home/zk/zookeeper/node-0X  (X 代表节点号 1、2、3,以下同解)

$ mkdir data

$ mkdir logs

5、 将 zookeeper/node-0X/conf 目录下的 zoo_sample.cfg 文件拷贝一份,命名为 zoo.cfg:

$ cp zoo_sample.cfg zoo.cfg

6、 修改 zoo.cfg 配置文件:

zookeeper/node-01 的配置(/home/zk/zookeeper/node-01/conf/zoo.cfg)如下:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/home/zk/zookeeper/node-01/data

dataLogDir=/home/zk/zookeeper/node-01/logs

clientPort=2181

server.1= zookeeper-01:2881:3881

server.2= zookeeper-02:2882:3882

server.3= zookeeper-03:2883:3883

zookeeper/node-02 的配置(/usr/local/zookeeper/node-02/conf/zoo.cfg)如下:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/usr/local/zookeeper/node-02/data

dataLogDir=/usr/local /zookeeper/node-02/logs

clientPort=2182

server.1= zookeeper-01:2881:3881

server.2= zookeeper-02:2882:3882

server.3= zookeeper-03:2883:3883

zookeeper/node-03 的配置(/usr/local /zookeeper/node-03/conf/zoo.cfg)如下:

tickTime=2000

initLimit=10

syncLimit=5

dataDir=/usr/local /zookeeper/node-03/data

dataLogDir=/usr/local /zookeeper/node-03/logs

clientPort=2183

server.1= zookeeper-01:2881:3881

server.2= zookeeper-02:2882:3882

server.3= zookeeper-03:2883:3883

参数说明:

tickTime=2000

tickTime 这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每

个 tickTime 时间就会发送一个心跳。

initLimit=10

initLimit 这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper

服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长

能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服

务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。

syncLimit=5

syncLimit 这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少

个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒。

dataDir=/usr/local/zookeeper/node-01/data

dataDir顾名思义就是Zookeeper保存数据的目录,默认情况下Zookeeper将写数据的日志文件也保存在

这个目录里。

clientPort=2181

clientPort 这个端口就是客户端(应用程序)连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端

口接受客户端的访问请求。

server.A=B:C:D

server.1= zookeeper-01:2881:3881

server.2= zookeeper-02:2882:3882

server.3= zookeeper-03:2883:3883

A 是一个数字,表示这个是第几号服务器;

B 是这个服务器的 IP 地址(或者是与 IP 地址做了映射的主机名) ;

C 第一个端口用来集群成员的信息交换,表示这个服务器与集群中的 Leader 服务器交换信息的端口;

D 是在 leader 挂掉时专门用来进行选举 leader 所用的端口。

注意:如果是伪集群的配置方式,不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不

同的端口号

7、 在 dataDir=/usr/local/zookeeper/node-0X/data 下创建 myid 文件

编辑 myid 文件,并在对应的 IP 的机器上输入对应的编号。如在 node-01 上,myid 文件内容就是

1,node-02 上就是 2,node-03 上就是 3:

$ vi /usr/local/zookeeper/node-01/data/myid  ## 值为 1

$ vi /usr/local/zookeeper/node-02/data/myid  ## 值为 2

$ vi /usr/local /zookeeper/node-03/data/myid  ## 值为 3

8、 在防火墙中打开要用到的端口 218X、288X、388X

切换到 root 用户权限,执行以下命令:

# chkconfig iptables on

# service iptables start

编辑/etc/sysconfig/iptables

# vi /etc/sysconfig/iptables

如服务器 01 增加以下 3 行:

## zookeeper

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2881 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 3881 -j ACCEPT

重启防火墙:

# service iptables restart

查看防火墙端口状态:

# service iptables status

9、启动并测试 zookeeper(要用 zookeeper 用户启动,不要用 root):

(1)使用zookeeper用户到/usr/local/zookeeper/node-0X/bin 目录中执行:

$ /usr/local/zookeeper/node-01/bin/zkServer.sh start

$ /usr/local/zookeeper/node-02/bin/zkServer.sh start

$ /usr/local/zookeeper/node-03/bin/zkServer.sh start

(2) 输入 jps 命令查看进程:

$ jps

1456 QuorumPeerMain

其中,QuorumPeerMain 是 zookeeper 进程,说明启动正常

(3) 查看状态: $ /usr/local/zookeeper/node-01/bin/zkServer.sh status

(4) 查看 zookeeper 服务输出信息:

由于服务信息输出文件在/usr/local/zookeeper/node-0X/bin/zookeeper.out

$ tail -500f zookeeper.out

10、停止 zookeeper 进程:

$ zkServer.sh stop

11、配置 zookeeper 开机使用 zookeeper用户启动:

编辑 node-01、node-02、node-03 中的/etc/rc.local 文件,分别加入:

su - zookeeper –c '/usr/local/zookeeper/node-01/bin/zkServer.sh start'

su - zookeeper -c '/usr/local/zookeeper/node-02/bin/zkServer.sh start'

su - zookeeper -c '/usr/local/zookeeper/node-03/bin/zkServer.sh start'

3、zookeeper 集群模式搭建的更多相关文章

  1. Zookeeper简介及单机、集群模式搭建

    1.zookeeper简介 一个开源的分布式的,为分布式应用提供协调服务的apache项目. 提供一个简单的原语集合,以便于分布式应用可以在它之上构建更高层次的同步服务. 设计非常易于编程,它使用的是 ...

  2. zookeeper集群环境搭建详细图文教程

    zookeeper集群环境搭建详细图文教程 zhoubang @ 2018-01-02 [文档大纲] 友情介绍 软件环境 注意点 环境安装 1. 新建用于存储安装包以及软件安装的目录 2. 下载安装z ...

  3. centos7下安装zookeeper&zookeeper集群的搭建

    一.centos7下安装zookeeper 1.zookeeper 下载地址 https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 2.安装步骤 ...

  4. 面试官:Zookeeper集群怎么搭建?

    哈喽!大家好,我是小奇,一位不靠谱的程序员 小奇打算以轻松幽默的对话方式来分享一些技术,如果你觉得通过小奇的文章学到了东西,那就给小奇一个赞吧 文章持续更新 一.前言 作为一名Java拧螺丝选手,不必 ...

  5. zookeeper集群的搭建以及hadoop ha的相关配置

    1.环境 centos7 hadoop2.6.5 zookeeper3.4.9 jdk1.8 master作为active主机,data1作为standby备用机,三台机器均作为数据节点,yarn资源 ...

  6. Solr集群的搭建以及使用(内涵zookeeper集群的搭建指南)

    1   什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引数据量少的时候 ...

  7. 大数据平台搭建-zookeeper集群的搭建

    本系列文章主要阐述大数据计算平台相关框架的搭建,包括如下内容: 基础环境安装 zookeeper集群的搭建 kafka集群的搭建 hadoop/hbase集群的搭建 spark集群的搭建 flink集 ...

  8. [转]ZooKeeper 集群环境搭建 (本机3个节点)

    ZooKeeper 集群环境搭建 (本机3个节点) 是一个简单的分布式同步数据库(或者是小文件系统) ------------------------------------------------- ...

  9. Linux环境下ZooKeeper集群环境搭建关键步骤

    ZooKeeper版本:zookeeper-3.4.9 ZooKeeper节点:3个节点 以下为Linux环境下ZooKeeper集群环境搭建关键步骤: 前提条件:已完成在Linux环境中安装JDK并 ...

随机推荐

  1. 【CUDA】Win10 + VS2017新 CUDA 项目配置

    一.新建项目 打开VS2017 → 新建项目 → Win32控制台应用程序 → “空项目”打钩 二.调整配置管理器平台类型 右键项目 → 属性 → 配置管理器 → 全改为“x64” 三.配置生成属性 ...

  2. unity中实现监听鼠标的进入和退出某一个UI按钮

    using UnityEngine; using System.Collections; using Assets.Code.myclass; using UnityEngine.UI; using ...

  3. vue-router进阶-1-导航守卫

    导航守卫主要用来通过跳转或取消的方式守卫导航 全局守卫,使用 router.beforeEach 注册一个全局前置守卫 const router = new VueRouter({ ... }) ro ...

  4. 超简单的实现wordcount

    worcount1.0,源码参见GitHub:https://github.com/18382271904/spring_lee_flag.git

  5. manjaro配置

    manjaro配置 Table of Contents manjaro配置 系统 一.初次使用 二.安装软件 输入法 emacs samba 三.配置修改 konsole shell颜色 系统 man ...

  6. @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) 注解的作用

    在学习boot 项目的时候 ,发现在启动类中有一个这个的注解 @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class}) ...

  7. mybatis foreach 遍历list中的坑

    将jdbc改写为mybatis时,传入的条件为list使用到的标签是<where> .<choose>.<when>.<if>.<foreach& ...

  8. json&pickle序列化和软件开发规范

    json和pickle 用于序列化的两个模块 json   用于字符串和python数据类型间进行转换,json只支持列表,字典这样简单的数据类型 但是它不支持类,函数这样的数据类型转换 pickle ...

  9. python 使用jinjia2 生成文件的空格处理

    例如: <div> {% if True %} yay {% endif %} </div> 生成文件为 <div> yay </div> 两种方法解决 ...

  10. 【转载】 星际争霸2的AI环境搭建

    原文地址: https://blog.csdn.net/qq_40244666/article/details/80957644 作者:BOY_IT_IT 来源:CSDN -------------- ...