频道栏目
首页 > 资讯 > 其他综合 > 正文

zookeeper单机伪集群配置

16-07-01        来源:[db:作者]  
收藏   我要投稿

zookeeper简介

Zookeeper 分布式服务框架是曾Apache Hadoop的一个子项目,现在是一个独立的顶级项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

通读下面几个链接,可以对zookeeper有个大致了解

简单介绍:Apache ZooKeeper - 维基百科 项目主页:Apache ZooKeeper - Home IBM developerWorks:分布式服务框架 Zookeeper – 管理分布式环境中的数据 文档outline:ZooKeeper 3.4 Documentation

单机单server运行

基本上照着ZooKeeper Getting Started Guide走一遍就OK了,这里简单描述下步骤

环境要求:各种系统都行,java 1.6+ 下载压缩包,解压 把解压目录下conf/zoo_sample.cfg复制一份在同目录下,重命名为zoo.cfg,dataDir属性可设置成别的 执行解压目录下的bin/zkServer.sh start开启zookeeper 执行解压目录下的bin/zkCli.sh -server 127.0.0.1:2181连接zookeeper

这时可以看到连接成功和一些欢迎信息,如果日志选项没改的话,默认是INFO级别,所以会在控制台看到一些日志输出,至此,已经运行成功,可以输入help查看帮助命令,试着玩一玩ls,create,get,set,delete等命令体验下

伪分布式

官网对分布式讲的不是很详细,这里简单记录一下

大体流程就是把压缩包解压三份,每份单独配置conf/zoo.cfg,并在dataDir对应的目录下添加一个只含数字的文本文件myid表明自己是哪台服务器。

部署规模为3的单机伪机群

以我的电脑为例,我新建了一个根目录zookeeper,并在该目录下分别新建了三个文件夹:server0,server1,server2,然后在每个文件夹解压zookeeper的压缩包,并另外新建datalogs文件夹来分别存放数据和日志,目录结构如下:

.
├── server0
│   ├── data
│   ├── logs
│   └── zookeeper-3.4.8
├── server1
│   ├── data
│   ├── logs
│   └── zookeeper-3.4.8
└── server2
    ├── data
    ├── logs
    └── zookeeper-3.4.8

然后在每个data目录下创建一个myid的文件(另外两个文件是运行后自动生成的,开始没有),里面写入一个数字,这个数字和配置文件里的一致

mi@mi-OptiPlex-9020:~/MyPrograms/zookeeper/server0/data$ cat 
myid                  version-2/            zookeeper_server.pid
mi@mi-OptiPlex-9020:~/MyPrograms/zookeeper/server0/data$ cat myid 
0

配置conf/zoo.cfg,比如我的server0目录下的配置文件,其他几个类似:

# 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=/home/mi/MyPrograms/zookeeper/server0/data
dataLogDir=/home/mi/MyPrograms/zookeeper/server0/logs
# the port at which the clients will connect
clientPort=2180

## 单机集群
server.0=127.0.0.1:2880:3880
server.1=127.0.0.1:2881:3881
server.2=127.0.0.1:2882:3882

server.A=B:C:D:其中 A 是一个数字,就是myid里的那个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址,C和D是两个端口。

两个端口的作用,官网描述如下:

Finally, note the two port numbers after each server name: ” 2888” and “3888”. Peers use the former port to connect to other peers. Such a connection is necessary so that peers can communicate, for example, to agree upon the order of updates. More specifically, a ZooKeeper server uses this port to connect followers to the leader. When a new leader arises, a follower opens a TCP connection to the leader using this port. Because the default leader election also uses TCP, we currently require another port for leader election. This is the second port in the server entry.

简单来说,第一个端口用来集群成员的信息交换以及与集群中的Leader 服务器交换信息,第二个端口是在leader挂掉时专门用来进行选举leader所用。

因为是伪分布式,所以dataDir,clientPort也不一样,同时C,D两个端口也不能相同。

启动ZooKeeper伪机群的所有服务器

分别进入三个服务器文件夹的解压目录的/bin目录下,启动服务:

bin/zkServer.sh start
接入客户端

进入解压目录的/bin目录下(3个server中任意一个),连接任意一个服务器,比如我就是进入了server2的目录下,连接的server0

bin/zkCli.sh  -server 127.0.0.1:2180

运行截图

zookeeper_单机集群运行截图

 
相关TAG标签
上一篇:ElasticSearch Java Api -删除索引
下一篇:MyBatis入门第4天--MyBatis与Spring整合及逆向工程
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站