ZooKeeper是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。ZooKeeper是作为分布式协调服务,是不需要依赖于Hadoop的环境,也可以为其他的分布式环境提供服务。

zookeeper有单机、伪集群、集群三种部署方式,可根据自己对可靠性的需求选择合适的部署方式。下边对这三种部署方式逐一进行讲解。

一、单机安装

准备:

关闭防火墙:systemctl stop firewalld.service
禁止防火墙自动启动:systemctl disable firewalld.service

关闭selinux : setenforce 0
禁止selinux启动:vim /etc/selinux/config

  1. SELINUX=disabled

各节点的host解析:

  1. 10.0.0.11 node01
  2. 10.0.0.12 node02
  3. 10.0.0.13 node03

1.1 下载
进入要下载的版本的目录,选择.tar.gz文件下载,这里我们选择最新版
下载链接:http://archive.apache.org/dist/zookeeper/

  1. wget http://archive.apache.org/dist/zookeeper/zookeeper-3.5.5/apache-zookeeper-3.5.5-bin.tar.gz

1.2 安装
使用tar解压要安装的目录即可
这里以解压到/usr/local,实际安装根据自己的想安装的目录修改(注意如果修改,那后边的命令和配置文件中的路径都要相应修改)

  1. tar xf apache-zookeeper-3.5.5-bin.tar.gz
  1. -C /usr/local/src/ ln -s /usr/local/src/apache-zookeeper-3.5.5-bin /usr/local/zookeeper

1.3 配置
在主目录下创建data和logs两个目录用于存储数据和日志:

  1. mkdir -p /data/zookeeper/{data,logs}

在conf目录下新建zoo.cfg文件,写入以下内容保存:

vim /usr/local/zookeeper/conf/zoo.cfg

  1. tickTime=2000
  2. dataDir=/data/zookeeper/data
  3. dataLogDir=/data/zookeeper/logs
  4. clientPort=2181

添加环境变量:

  1. echo -e 'export ZOOKEEPER_HOME=/usr/local/zookeeper\nexport PATH=$ZOOKEEPER_HOME/bin:$PATH' >>/etc/profile
  2. source /etc/profile

1.4 启动和停止
进入bin目录,启动、停止、重启(start、stop、restart和status)分和查看当前节点状态(包括集群中是何角色)别执行:

  1. zkServer.sh start

二、伪集群模式
伪集群模式就是在同一主机启动多个zookeeper并组成集群,下边以在node01主机上创3个zookeeper组集群为例。将单节点的zookeeper,复制成zookeeper1/zookeeper2/zookeeper3三份。

2.1 zookeeper1配置
zookeeper1配置文件修改如下:

vim /usr/local/zookeeper1/conf/zoo.cfg

  1. tickTime=2000
  2. dataDir=/usr/local/zookeeper1/data
  3. dataLogDir=/usr/local/zookeeper1/logs
  4. clientPort=2181
  5. initLimit=5
  6. syncLimit=2
  7. server.1=node01:2888:3888
  8. server.2=node01:4888:5888
  9. server.3=node01:6888:7888

zookeeper1的/data/zookeeper/data/myid配置如下:

  1. echo '1' > /data/zookeeper/data/myid

2.2 zookeeper2配置
zookeeper2配置文件conf/zoo.cfg修改如下:

vim /usr/local/zookeeper2/conf/zoo.cfg

  1. tickTime=2000
  2. dataDir=/usr/local/zookeeper2/data
  3. dataLogDir=/usr/local/zookeeper2/logs
  4. clientPort=3181
  5. initLimit=5
  6. syncLimit=2
  7. server.1=node01:2888:3888
  8. server.2=node01:4888:5888
  9. server.3=node01:6888:7888

zookeeper2的/data/zookeeper/data/myid配置如下:

  1. echo '2' > /data/zookeeper/data/myid

2.3 zookeeper3配置
zookeeper3配置文件conf/zoo.cfg修改如下:

vim /usr/local/zookeeper3/conf/zoo.cfg

  1. tickTime=2000
  2. dataDir=/usr/local/zookeeper3/data
  3. dataLogDir=/usr/local/zookeeper3/logs
  4. clientPort=4181
  5. initLimit=5
  6. syncLimit=2
  7. server.1=node01:2888:3888
  8. server.2=node01:4888:5888
  9. server.3=node01:6888:7888

zookeeper3的/data/zookeeper/data/myid配置如下:

  1. echo '3' > /data/zookeeper/data/myid

启动zookeeper,启动顺序随意没要求。

  1. zkServer.sh start

三、集群模式
集群模式就是在不同主机上安装zookeeper然后组成集群的模式;下边以在node01、node02和node03三台主机为例。将第1.1到1.3步中安装好的zookeeper打包复制到node02和node03上,并都解压到同样的目录下。

3.1 conf/zoo.cfg文件修改
三个zookeeper的conf/zoo.cfg修改如下:

vim /usr/local/zookeeper/conf/zoo.cfg

  1. tickTime=2000
  2. dataDir=/data/zookeeper/data
  3. dataLogDir=/data/zookeeper/logs
  4. clientPort=2181
  5. initLimit=5
  6. syncLimit=2
  7. server.1=node01:2888:3888
  8. server.2=node02:2888:3888
  9. server.3=node03:2888:3888

#2888端口号是zookeeper服务之间通信的端口,而3888是zookeeper与其他应用程序通信的端口,对于137和138,由于安装目录都是zookeeper所以dataDir和dataLogDir不需要改变,又由于在不同机器上所以clientPort也不需要改变
所以此时137和138的conf/zoo.cfg的内容与136一样即可。
3.2 /data/zookeeper/data/myid文件修改
136 /data/zookeeper/data/myid修改如下:

  1. echo '1' > /data/zookeeper/data/myid

137 /data/zookeeper/data/myid修改如下:

  1. echo '2' > /data/zookeeper/data/myid

138 /data/zookeeper/data/myid修改如下:

  1. echo '3' > /data/zookeeper/data/myid

启动zookeeper集群,启动顺序随意没要求。

  1. zkServer.sh start

四、 验证Zookeeper集群是否安装成功。
可以验证一下是否启动成功:

  1. ps -ef | grep zookeeper

4.1分别在3台虚拟机上查看zookeeper的状态。

  1. zkServer.sh status

4.2连接其中一台的zookeeper

  1. zkCli.sh -server node02:2181

4.3写入数据

  1. create /test data

4.4再连接另外一台的zookeeper

  1. zkCli.sh -server node03:2181

4.5如果能获取到刚才写入的数据,则Zookeeper集群安装成功。

  1. get /test

五、报错及处理
应用连接zookeepr报错:Session 0x0 for server node01/node01:2181,unexpected error,closing socket connection and attempting reconnect;
先看端口能否telnet通,如果通则使用zkServer.sh status查看zk是否确实已启动,没启查看zookeeper.out中的报错。
zookeeper.out中报错:“zookeeper address already in use”;显然端口被占用,要么是其他进程占用了配置的端口,要么是上边配置的clientPort和server中的端口有重复。
zookeeper.out中报错:Cannot open channel to 2 at election address /node01:3888;这应该只是组成集群的node02节点未启动,到node02启动起来zk即会正常。

zookeeper3.5.5集群部署的更多相关文章

  1. centos6.5环境下zookeeper-3.4.6集群环境部署及单机部署详解

    centos6.5环境下Zookeeper-3.4.6集群环境部署 [系统]Centos 6.5 集群部署 [软件]准备好jdk环境,此次我们的环境是open_jdk1.8.0_101 zookeep ...

  2. HP DL160 Gen9服务器集群部署文档

    HP DL160 Gen9服务器集群部署文档 硬件配置=======================================================Server        Memo ...

  3. ZooKeeper简介与集群部署

    ZooKeeper 是一个开源的分布式协调服务,由雅虎公司创建,是Google Chubby的开源实现,ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的 ...

  4. 消息中间件kafka+zookeeper集群部署、测试与应用

    业务系统中,通常会遇到这些场景:A系统向B系统主动推送一个处理请求:A系统向B系统发送一个业务处理请求,因为某些原因(断电.宕机..),B业务系统挂机了,A系统发起的请求处理失败:前端应用并发量过大, ...

  5. Zookeeper+Kafka集群部署(转)

    Zookeeper+Kafka集群部署 主机规划: 10.200.3.85  Kafka+ZooKeeper 10.200.3.86  Kafka+ZooKeeper 10.200.3.87  Kaf ...

  6. Dubbo+zookeeper构建高可用分布式集群(二)-集群部署

    在Dubbo+zookeeper构建高可用分布式集群(一)-单机部署中我们讲了如何单机部署.但没有将如何配置微服务.下面分别介绍单机与集群微服务如何配置注册中心. Zookeeper单机配置:方式一. ...

  7. zookeeper的单实例和伪集群部署

    原文链接: http://gudaoyufu.com/?p=1395 zookeeper工作方式 ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现 ...

  8. Centos6下zookeeper集群部署记录

    ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等. Zookeeper设计目的 最终一致性:client不论 ...

  9. Zookeeper+Kafka集群部署

    Zookeeper+Kafka集群部署 主机规划: 10.200.3.85  Kafka+ZooKeeper 10.200.3.86  Kafka+ZooKeeper 10.200.3.87  Kaf ...

随机推荐

  1. urllib库:分析Robots协议

    1from urllib.robotparser import RobotFileParser 2import ssl 3from urllib.request import urlopen 4ssl ...

  2. AKKA学习(一)

    AKKA简介 什么是AKKA Akka是一个由Scala编写的,能兼容Sacala和JAVA的,用于编写高可用和高伸缩性的Actor模型框架.它基于了事件驱动的并发处理模式,性能非常的高,并且有很高的 ...

  3. [BZOJ 1013] [JSOI2008]球形空间产生器

    [BZOJ 1013] [JSOI2008]球形空间产生器 题面 给出一个n维球体上的n+1个点,求球心坐标 分析 设球心坐标为\((x_1,x_2,\dots x_n)\),由于一个球体上的所有点到 ...

  4. MyBatis时间排序问题

    在数据中create_time字段是DateTime类型, 逆向工程后实体类中对应的成员变量类型为Date 时间排序代码为: 测试结果: 时间排序错乱. 解决方法: 1,在数据库创建varchar类型 ...

  5. php之CGI、FastCGI、php-fpm运行原理

    学好一门语言,必须懂得他得运行原理,php之CGI.FastCGI.php-fpm运行原理 早期的webserver只处理html等静态文件,但是随着技术的发展,出现了像php等动态语言.webser ...

  6. NlData初学者开发篇(ORM)

    一, 简介:NlData是一个个人开发的ORM,为了学习而学习,是基于表达式实现的一个ORM 二,先简单介绍使用,如下,配置是统一接口 NlClient client = new NlClient(n ...

  7. luogu P5342 [TJOI2019]甲苯先生的线段树

    传送门 你个好好的省选怎么可以出CF原题啊,你们这个题害人不浅啊,这样子出题像极了cxk,说到cxk,我又想起了他是NBA形象大使,跟我是西游文化大使一样一样的,今年下半年... 别说了,jinsai ...

  8. webpack3 打包

    1. 基于 webpack 3.0 2.步骤.说明 2.1 webpack 本地初始化.安装基本包 npm init         >  package.json npm i  webpack ...

  9. Delphi上机步骤

  10. Nagios监控系统部署(源码)(四)

    Nagios监控系统部署(源码)   1. 概述2. 部署Nagios2.1 创建Nagios用户组2.2 下载Nagios和Nagios-plugin源码2.3 编译安装3. 部署Nagios-pl ...