zookeeper集群实战搭建

来源:互联网 发布:网络家装行业发展趋势 编辑:程序博客网 时间:2024/05/16 06:06

一 zookeeper简介


zookeeper是什么?

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集,提供Java和C的接口。

为什么要用zookeeper?

大部分分布式应用需要一个主控、协调器或控制器来管理物理分布的子进程(如资源、任务分配等),目前,大部分应用需要开发私有的协调程序,缺乏一个通用的机制.协调程序的反复编写浪费,且难以形成通用、伸缩性好的协调器,ZooKeeper:提供通用的分布式锁服务,用以协调分布式应用

zookeeper多集群显示形式

zookeeper是一个由多个service组成的集群,一个leader,多个follower,每个server保存一份数据部分,全局数据一致,分布式读写,更新请求转发由leader实施.

大概介绍差不多了,zookeeper英译动物园管理员,顾名思义zookeeper主要起到分发管理作用。原理 详见http://blog.csdn.net/xinguan1267/article/details/38422149

二 zookeeper集群安装

ZooKeeper版本:3.4.5      下载地址http://zookeeper.apache.org

下载命令: wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.5/zookeeper-3.4.5.tar.gz

或则下载在本地 使用 rz  导入

解压:tar zxvf zookeeper-3.4.5.tar.gz

创建集群节点:建议三个  zookeeper-3.4.5-node1  zookeeper-3.4.5-node2  zookeeper-3.4.5-node3

1.创建第一个集群节点

# mv zookeeper-3.4.5 zookeeper-3.4.5-node1
# cd zookeeper-3.4.5-node1

1).编辑配置文件 
# cd zookeeper-3.4.5-node1
conf目录下修改文件名 zoo_sample.cfg 改为 zoo.cfg  
# mv zoo_sample.cfg zoo.cfg
# vim ./conf/zoo.cfg

zkServer

tickTime=# Zookeeper服务器心跳时间,单位毫秒

dataDir= # 数据持久化路径

clientPort=# 连接端口

initLimit=# 投票选举新leader的初始化时间。

syncLimit=# Leader与Follower之间的最大响应时间单位,响应超过syncLimit*tickTime,Leader认为Follwer挂掉,从服务器列表中删除Follwer

dataLogDir=# 日志保存路径  这个要自己新建,具体目录根据自己的实际情况为准!


2).创建zookeeper数据目录data和log

# cd zookeeper-3.4.5-node1

#mkdir data

#mkdir logs


3).新增myid文件  

简介:myid  相当于集群server中的对应服务器编号的变量,myid中的值对应conf目录下zoo.cfg 中 server1,server2,server3

在data目录下创建文件,文件名为“myid”, 编辑该“myid”文件,并在对应的IP的机器上输入对应的编号。

# vi myid  

如在192.168.20.75:2887上,“myid”文件内容就是1,在192.168.20.75:2888上,内容就是2,在192.168.20.75:2889上,内容就是3

端口号不一样其实是伪集群,其实与192.168.1.1192.168.1.2192.168.1.3 效果一样额。

效果如下



2.如果是用iptable的话,在/etc/sysconfig/iptables中加入ZooKeeper的端口: 一般不要配置
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2181 –j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport2182 –j ACCEPT-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport  2183 –j ACCEPT
执行防火墙重启命令:
service iptables restart


3.创建集群节点 2,3    zookeeper-3.4.5-node2  zookeeper-3.4.5-node3
#cp zookeeper-3.4.5-node1 zookeeper-3.4.5-node2 -R
 #cp zookeeper-3.4.5-node1   zookeeper-3.4.5-node3 -R     
修改  zookeeper-3.4.5-node2 与 zookeeper-3.4.5-node3 中的conf目录下的 zoo.cfg对应当前服务器路径
zookeeper-3.4.5-node2zoo.cfg配置
tickTime=2000initLimit=10syncLimit=5clientPort=2182dataDir=/home/grid/zookeeper-3.4.5-node2/datadataLogDir=/home/grid/zookeeper-3.4.5-node2/logsserver.1=192.168.20.75:2887:3887server.2=192.168.20.75:2888:3888server.3=192.168.20.75:2889:3889
同时修改myid 值为2
zookeeper-3.4.5-node3 修改同上。


4.开启zookeeper集群

1).启动
#cd /home/grid/zookeeper-3.4.5-node1/bin
#sh zkServer.sh start      或者   ./zkServer.sh start
启动日志
JMX enabled by defaultUsing config: /home/grid/zookeeper-3.4.5-node1/bin/../conf/zoo.cfgStarting zookeeper ... STARTED

2).查看进程
#jps
15085 QuorumPeerMain6302 Jps15208 QuorumPeerMain6264 QuorumPeerMain

3).检查状态
# ./zkServer.sh status
当启动三台服务后,可观察到集群 leader follower follower 模式,说明zookeeper集群已成功搭建完毕。
server1JMX enabled by defaultUsing config: /home/grid/zookeeper-3.4.5-node1/bin/../conf/zoo.cfgMode: followerserver2JMX enabled by defaultUsing config: /home/grid/zookeeper-3.4.5-node2/bin/../conf/zoo.cfgMode: followerserver3JMX enabled by defaultUsing config: /home/grid/zookeeper-3.4.5-node3/bin/../conf/zoo.cfgMode: leader

4).停止
# ./zkServer.sh stop

5).重启
 # ./zkServer.sh restart

6).zookeeper 客服端登录
sh zkCli.sh  -server 192.168.20.75:2181
可以创建,删除,查询 znode 节点
如创建znode #create /zk myData
详见 http://www.cnblogs.com/likehua/p/3999588.html

2 0