Zookeeper集群配置

原创 2018年04月16日 14:11:53

            前言:大数据生态圈一个很重要的角色Zookeeper,是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务-----分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)。作用:简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。

本文搭建zookeeper集群,通过选举制度,来选出一个leader,两个follower,来保证集群的稳定性。

一 、准备工作。

三台虚拟机:

master :192.168.163.145

worker1:192.168.163.146

worker2:192.168.163.147

Java:jdk 1.8.x

三台虚拟机之间的SSH相互通信

以上工作在笔者的Hadoop集群安装配置中都有详细介绍。

https://blog.csdn.net/yangang1223/article/details/79883113

二、安装zookeeper

1.在zookeeper官网或者清华大学镜像站、阿里云镜像站等下载zookeeper3.4.6稳定版。


上传到master节点的/app/下

$tar -zxvf zookeeper-3.4.6.tar.gz

2.进入zookeeper的conf目录中,复制一份zoo.cfg

$cp zoo_sample.cfg zoo.cfg


编辑

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/app/zookeeper/zookeeper-3.4.6/data
dataLogDir=/app/zookeeper/zookeeper-3.4.6/log
# the port at which the clients will connect
clientPort=2181
server.1=master:2888:3888
server.2=worker1:2888:3888

server.3=worker2:2888:3888


然后创建zoo.cfg配置的dataDir和dataLogDir

并在dataDir里创建myid文件 ,给文件里面写上“1”


3.将zookeeper分发到其他两台节点上

[hadoop@master app]$ scp -r zookeeper hadoop@worker1:/app/

[hadoop@master app]$ scp -r zookeeper hadoop@worker2:/app/

4.将worker1和worker2的zookeeper的data目录下的myid文件的内容改成2、3

[hadoop@worker1 zookeeper-3.4.6]$ cd data/
[hadoop@worker1 data]$ ls
myid
[hadoop@worker1 data]$ echo "2" >myid
[hadoop@worker1 data]$ cat myid
2

[hadoop@worker1 data]$ 

[hadoop@worker2 zookeeper-3.4.6]$ cd data/
[hadoop@worker2 data]$ ls
myid
[hadoop@worker2 data]$ echo "3" >myid
[hadoop@worker2 data]$ cat myid
3

为了方便,你也可以在环境变量中添加ZOOKEEPER_HOME和bin目录,也可以不用。

# .bash_profile


# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi


# User specific environment and startup programs
JAVA_HOME=/app/java/jdk1.8.0_141
HADOOP_HOME=/app/hadoop/hadoop-2.7.3
SCALA_HOME=/app/scala/scala-2.11.8
SPARK_HOME=/app/spark/spark-2.1.1
ZOOKEEPER_HOME=/app/zookeeper/zookeeper-3.4.6
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$SPARK_HOME/bin:$SPARK_HOME/sbin:$ZOOKEEPER_HOME/bin

export PATH

5.将~/.bash_profile 分发给各节点 ,source后完成配置

三、启动zookeeper集群

三台依次启动或者你也可以写shell脚本一键使三台机器都启动

[hadoop@master zookeeper-3.4.6]$ zkServer.sh start
JMX enabled by default
Using config: /app/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

[hadoop@worker1 conf]$ zkServer.sh start
JMX enabled by default
Using config: /app/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

[hadoop@worker2 conf]$ zkServer.sh start
JMX enabled by default
Using config: /app/zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

三台都启动后我们可以查看状态,worker1被选举为leader,master和worker2被选举为follower

[hadoop@master zookeeper-3.4.6]$ zkServer.sh status




查看jps进程


四、注意事项

1.三台机器一定要做好时钟同步    

2.可能在启动了一台机器手就查看状态,发现报错,这是由于每台节点都在尝试连接其他节点,三台都启动后,查看结果,逐渐稳定。

Zookeeper集群部署与配置(三)

在上一篇博客中我们讲解了Zookeeper的单机配置,此篇博客将继续介绍Zookeeper的集群部署与配置。环境集群配置的环境与单机配置的环境相同,唯一不同的就是集群是在多台服务器之间配置,当然也有伪...
  • wo541075754
  • wo541075754
  • 2017年02月24日 08:42
  • 3953

Dubbo的Zookeeper单机配置和Zookeeper集群配置

Zookeeper单机配置: 方式一、 dubbo:registry address="zookeeper://10.20.153.10:2181"/> 方式二、 dubbo:regis...
  • xuguokun1986
  • xuguokun1986
  • 2017年04月14日 08:15
  • 838

[dubbo实战] dubbo+zookeeper伪集群搭建

zookeeper作为注册中心,服务器和客户端都要访问,如果有大量的并发,肯定会有等待。所以可以通过zookeeper集群解决。 一、为什么需要zookeeper呢?    大部分分布式应用需要一个主...
  • ggibenben1314
  • ggibenben1314
  • 2015年08月17日 21:52
  • 13243

ZooKeeper集群搭建实例,以及集成dubbo时的配置

ZooKeeper集群搭建实例,以及集成dubbo时的配置
  • IRhythm
  • IRhythm
  • 2016年05月08日 00:03
  • 12537

zookeeper集群式搭建

ZooKeeper是 Apache 的一个顶级项目,为分布式应用提供高效、高可用的分布式协调服务,提供了诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知和分布式锁等分布式基础服务。...
  • zx13525079024
  • zx13525079024
  • 2016年08月13日 10:20
  • 404

zookeeper+kafka集群搭建

基本环境:操作系统 : ubuntu-16.04.2 jdk : jdk1.8.0_144 zookeeper : zookeeper3.4.6 kafka : kafka_2.12-0.11....
  • a807557328
  • a807557328
  • 2017年10月18日 15:03
  • 356

Linux上Zookeeper集群的配置

前提准备: 下载zookeeper安装包:http://zookeeper.apache.org/releases.html 配置一台linux机器(按照如下步骤),并再克隆出两台,再分别配置...
  • xuejingfu1
  • xuejingfu1
  • 2016年08月22日 13:18
  • 3615

Zookeeper集群的安装搭建

前提条件三个zookeeper实例。Zookeeper也是java开发的所以需要安装jdk。1、Linux系统2、Jdk环境。3、Zookeeper。Zookeeper的安装步骤第一步:把zookee...
  • B_evan
  • B_evan
  • 2018年03月29日 16:07
  • 40

Zookeeper 安装和配置---学习三

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper是hadoop的一个子项目,其...
  • liujiayu2
  • liujiayu2
  • 2016年04月11日 10:07
  • 512

Zookeeper的集群配置和Java测试程序

概述Zookeeper是Apache下的项目之一,倾向于对大型应用的协同维护管理工作。IBM则给出了IBM对ZooKeeper的认知: Zookeeper 分布式服务框架是 Apache Hadoop...
  • catoop
  • catoop
  • 2016年03月10日 17:28
  • 24837
收藏助手
不良信息举报
您举报文章:Zookeeper集群配置
举报原因:
原因补充:

(最多只允许输入30个字)