Zookeeper安装部署

 

    之前部署hadoop&hbase集群的时候使用的hbase内置的zookeeper所以一直也没有对zookeeper进行独立的部署,近期需要独立部署使用,借机也总结一篇文档

 

         zookeeper是一个分布式的开源框架,能够提供高性能的分布式服务,应用场景涉猎:数据发布与订阅;软负载均衡;命名服务;分布式通知/协调;集群管理和master选举;分布式锁和分布式队列等等

 

有两种运行的模式:Standalone模式和Distributed模式

 

Standalone模式安装:

 

1.首先安装java环境

查看当前是否存在java

wKiom1LKaqOhYRrPAABSTa0rcKw683.jpg

 

系统自带的openjdk需要卸载,查看:

rpm -qa|grep gcj

wKioL1LKasrBMg8tAAAnEaqgvVU645.jpg

 

yum -y remove java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64

yum -y remove libgcj-4.4.7-3.el6.x86_64

 

安装java环境:

java版本:jdk1.7.0_17

 

解压缩安装包到/usr/local下:

tar zxvf jdk-7u17-linux-x64.tar.gz -C /usr/local

添加环境变量:

export JAVA_HOME=/usr/local/jdk1.7.0_17

export PATH=$PATH:$JAVA_HOME/bin

export CLASSPATH=.:JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

 

然后source /etc/profile

查看环境变量:

wKiom1LKavzTOfzmAAAvsfQtZPM094.jpg

 

2.下载并解压缩zookeeper

官方下载地址:http://zookeeper.apache.org/releases.html#download

选择镜像地址并下载

选择版本:zookeeper-3.4.5.tar.gz

3.拷贝配置文件并修改

cp zoo_sample.cfg zoo.cfg 

修改dataDir 默认是:/tmp/zookeeper系统重启后/tmp目录会清空

修改dataDir目录,默认端口是2181不做修改:

wKioL1LKa2zj9wkxAAAp9obkqaA941.jpg

 

4.创建数据目录:

mkdir -p /data/zookeeper/data

5.启动zookeeper并验证

/usr/local/zookeeper-3.4.5/bin/zkServer.sh start

wKioL1LKa6izLwf_AAA08ZaBE_I865.jpg

 

查看端口的监听情况:

wKioL1LKbF2yHjhmAACT6eNrwiI164.jpg

 

 

Distributed模式安装:

Distributed模式的zookeeper集群有两个重要的角色:分别是LeaderFollower,所以集群中的每个节点之间需要相互的通信,在没有内部DNS解析的前提下,需要在zookeeper集群的每个节点上配置/etc/hosts文件,�r(�s��t)�q这一点和hadoop集群是一个道理

1.首先编辑/etc/hosts文件

wKiom1LKbH2APIhVAAASrLUNrpc377.jpg

2.修改之前配置的standealone节点的配置:

新增:

wKiom1LKbJ3hbyttAAAUOblaiAI370.jpg

与/etc/hosts对应的命名方式相对应

 

3.分发zookeeper的安装文件到其他的节点

scp -r zookeeper-3.4.5/ root@zookeeper2:/usr/local/

同样需要创建dataDir指定的目录和安装java环境

 

4.分别创建myid文件,用来标识当前的主机,文件内容为数字,zoo.cfgserver.X中的数字一致,存放的目录为dataDir指定的目录

[root@zookeeper1 ~]# echo "1"> /data/zookeeper/data/myid

[root@zookeeper2 ~]# echo "2"> /data/zookeeper/data/myid

 

5.启动zookeeper的集群

[root@zookeeper1 ~]# /usr/local/zookeeper-3.4.5/bin/zkServer.sh start

[root@zookeeper2 ~]# /usr/local/zookeeper-3.4.5/bin/zkServer.sh start

在每个zookeeper的节点上分别启动zookeeper的服务

因为启动的顺序有先后而zookeeper启动的时候会尝试去连接集群中的其他的节点,先启动的节点在zkServer.sh同级目录的zookeeper.out文件中有出现报错的可能,可以忽略

wKiom1LKbZWgEijxAAAxeyVxD1k161.jpg

 

6.查询各节点的角色(验证使用,可忽略)

当集群中的所有的节点的服务都启动后,我们可以观察各个节点的角色:

注:Zookeeper采用的是Leader election的选举算法,集群的运行过程中,只有一个Leader,其他的都是Follower,当Leader出现宕机或者其他的问题时,会从剩下的Follower节点中重新选举一个Leader

命令:

/usr/local/zookeeper-3.4.5/bin/zkServer.sh status

wKiom1LKbeuSPZ5UAAAy74NEzbc007.jpg

wKiom1LKbgbBte0jAAA0JyWvM2I811.jpg

 

由此可见zookeeper2leader,不过对于客户端,zookeeper的集群是一个整体,可以在任何的一个节点上建立到服务集群的连接~\(�R��Q)/~

 

你可能感兴趣的:(zookeeper,zookeeper分布式)