服务器 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集群的搭建以及hadoop ha的相关配置

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

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

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

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

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

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

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

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

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

  9. Zookeeper实战之嵌入式执行Zookeeper集群模式

    非常多使用Zookeeper的情景是须要我们嵌入Zookeeper作为自己的分布式应用系统的一部分来提供分布式服务.此时我们须要通过程序的方式来启动Zookeeper.此时能够通过Zookeeper ...

随机推荐

  1. CSS3系列一(概述、选择器、使用选择器插入内容)

    CSS3模块化结构 CSS历史发展 CSS(Cascading Style Sheet),层叠样式表,是用于控制网页样式并允许将样式信息与网页内容分离的一种标记性语言. CSS3属性选择器 E[att ...

  2. Ubuntu Vim 复制到系统粘贴板

    /************************************************************************* * Ubuntu Vim 复制到系统粘贴板 * 说 ...

  3. 关于 knockout js 学习中的疑问 (1)

    最近刚刚学习knockout中遇到如下问题: 1.在给viewModel定义一个方法时,有时后面跟 的this,有的时候没有 如下所示: this.fullName = ko.computed(fun ...

  4. tomcat的webapps文件夹下放更新后的项目就訪问不了

    昨天给同事更新完程序,同事说更新后的程序訪问不了.它曾经的程序叫tj52,更新后的程序叫webapp.也就是tomcat的文件夹有两个文件架,一个叫webapp,一个叫tj52.最后另外一同事给了解决 ...

  5. FortiGate日志中session clash

    1.出现于:FortiGate v5.0和v5.2 2.出现原因 Session clash messages appear in the logs when a new session is cre ...

  6. 描述linux下文件删除的原理

    Linux文件删除原理: Linux是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除. 一般来说,每个文件都有2个link计数器:i_count 和 i ...

  7. Eclipse添加Junit测试

    项目上右键,点击build path->add libraaies->选择Junit 附上惨不忍睹的图(eclipse里展开菜单项时老截屏截不好,不知各位有没有好点的解决方案) 2017. ...

  8. Locks Set by Different SQL Statements in InnoDB

    A locking read, an UPDATE, or a DELETE generally set record locks on every index record that is scan ...

  9. kvm虚拟机不能使用virsh shutdownw命令关闭虚拟机的解决方法

    今天笔者在对kvm虚拟机进行管理时,使用virsh shutdown命令关闭指定的虚拟机时,发现虽然有如下的提示,但其实虚拟机却一直不会真正的关闭. 经过查看virsh命令帮助和上网查询,才得知vir ...

  10. At least one JAR was scanned for TLDs yet contained no TLDs.

    Tomcat提示如下: At least one JAR was scanned for TLDs yet contained no TLDs. =========================== ...