码迷,mamicode.com
首页 > 其他好文 > 详细

zookeeper学习(一)安装、配置、运行

时间:2016-12-26 00:29:31      阅读:334      评论:0      收藏:0      [点我收藏+]

标签:哪些   sch   hand   log   guid   搜索引擎   完全   dmi   版本   

说明:zookeeper完全可以standalone,也可以伪集群形式,当然生产中都是集群形式。另外,也可以在windows下运行。

如果只是研究用,完全可以在windows下使用standalone或者伪集群形式。

 

为什么要集群?当然是为了更稳定的服务。另外因为这货的机制是超过半数节点存活才可以提供服务,所以集群时不要将数量搞成偶数 -- 不是不可以,只是很别扭。

个人是用了三台虚拟机(主要是想研究下大数据云计算之类的,集群是必须),CentOS 6.8 x64,Basic Server模式安装。对了,虚拟机是virtual box (简称vbox)。

 

------------------------------这部分信息不需要的可以略过:开始--------------------------------

安装vbox、新建虚拟机、安装CentOS的过程就不说了,如果需要可以自行百度,或者私信我也行。

有一点要提一下,网卡设置,我用的是桥接,也建议大家使用桥接,原因如下。

vbox的网络连接有三种:NAT (转换)、桥接、Host-only (仅主机)。

各自的特点是:NAT可以访问外网,但主机与虚拟机之间不能直接通信(可以通过端口转发,个人不喜欢);桥接是局域网独立IP,可以访问外网;Host-only则只能与主机通信,不能外网。

因为涉及到虚拟机之间的交互以及主机与虚拟机之间的交互,个人更喜欢桥接,给每个虚拟机配置固定的局域网ip即可 -- 缺点也有,就是换一个环境就不能使用了,除非局域网是类似的(网关、许可等)。

CentOS配置ip很简单,可以使用setup命令配置,半图形化的操作。或者修改/etc/sysconfig/network-scripts/ifcfg-eth0中的内容 -- 记得重启网络服务service network restart。

建议在装完一个系统之后,做一个快照,再将需要的软件如JDK、redis、zookeeper等都上传上去,然后配置好环境变量等,再做一个快照。(略)

然后,克隆该系统,记得选择重新生成网卡硬件地址。

然后,进入复制出来的系统,使用上面提到的方法修改ip,记得删除里面的UUID和硬件地址(修改也行)。--此时重启网络服务是无效的,因为系统缓存了一些网络信息。

缓存的信息位于 /etc/udev/rules.d/70-presistent-net.rules,删除该文件,最后重启系统,搞定。

------------------------------这部分信息不需要的可以略过:结束--------------------------------

 

1、下载

官方地址:http://zookeeper.apache.org/releases.html

可以找镜像网站下载:http://mirrors.hust.edu.cn/apache/zookeeper/  等等。

我下载的是当前最新的release版本:zookeeper-3.4.9.tar.gz。

2、解压

tar -zxvf zookeeper-3.4.9.tar.gz   ,解压出来的文件夹是zookeeper-3.4.9 (我的已经重命名为zookeeper,为了方便)。

3、配置 (standalone)

进入解压后的文件夹,里面有一个conf文件夹,其中包含了三个文件:

-rw-rw-r--. 1 1001 1001  535 8月  23 15:39 configuration.xsl
-rw-rw-r--. 1 1001 1001 2161 8月  23 15:39 log4j.properties
-rw-rw-r--. 1 1001 1001  922 8月  23 15:39 zoo_sample.cfg

复制一份 zoo_sample.cfg,重命名为zoo.cfg -- zookeeper启动需要加载zoo.cfg文件。

其中的内容:

[root@localhost conf]# cat zoo_sample.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=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
[root@localhost conf]#

其他的都好说,最重要的是要设置dataDir -- 保存快照的位置,注意,不要使用/tmp,这是临时文件夹。

我设置的位置是 zookeeper文件夹下面的data:

dataDir=/root/zookeeper/data

至此,zookeeper已经可以standalone运行了。

4、运行服务端 (standalone)

很简单,执行./bin/zkServer.sh start 即可,启动完毕会有提示。

zkServer.sh 必须附加参数,参数可以是startrestartstatusstop等。

5、运行客户端

很简单,执行./bin/zkCli.sh host:port 即可,如果是连接当前主机,可以省略host:port。

6、操作

连接后就可以进行操作了。如果不知道有哪些操作,可以输入help查看(或者胡乱敲一串也行,会提示有哪些命令),或者搜索引擎。

[zk: localhost:2181(CONNECTED) 18] help
ZooKeeper -server host:port cmd args
    stat path [watch]
    set path data [version]
    ls path [watch]
    delquota [-n|-b] path
    ls2 path [watch]
    setAcl path acl
    setquota -n|-b val path
    history 
    redo cmdno
    printwatches on|off
    delete path [version]
    sync path
    listquota path
    rmr path
    get path [watch]
    create [-s] [-e] path data acl
    addauth scheme auth
    quit 
    getAcl path
    close 
    connect host:port
[zk: localhost:2181(CONNECTED) 19]

create负责创建路径并设值;

get负责获取路径的值;

set负责修改路径的值;

delete负责删除路径;

rmr负责删除路径;--暂不清楚与delete的区别

ls负责查看路径

ls2负责查看路径

stat负责统计路径信息

quit退出客户端

 

注意,这里只是简略的说一下,具体的请自行研究。

创建:create /com “intel”

[zk: localhost:2181(CONNECTED) 3] create /com "intel"
Created /com

获取:get /com

[zk: localhost:2181(CONNECTED) 0] get /com
intel
cZxid = 0x10000001d
ctime = Sun Dec 25 17:33:43 CST 2016
mZxid = 0x10000001d
mtime = Sun Dec 25 17:33:43 CST 2016
pZxid = 0x10000001d
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 5
numChildren = 0

修改:set /com “google”

[zk: localhost:2181(CONNECTED) 2] set /com "google"
cZxid = 0x10000001d
ctime = Sun Dec 25 17:33:43 CST 2016
mZxid = 0x100000021
mtime = Sun Dec 25 17:36:12 CST 2016
pZxid = 0x10000001d
cversion = 0
dataVersion = 1
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0

需要注意,不能凭空get或set,必须先create才可以操作。否则会提示节点不存在:

[zk: localhost:2181(CONNECTED) 5] set /com/a "a"
Node does not exist: /com/a

删除:delete /com

删除之后再获取就会提示节点不存在:

[zk: localhost:2181(CONNECTED) 6] delete /com
[zk: localhost:2181(CONNECTED) 7] get /com
Node does not exist: /com

 

各个命令具体意义请自行搜索,这里仅作测试。


7、设置(集群)

① 修改zoo.cfg,在最后添加内容:

# clusters
server.1=192.168.0.210:2888:3888
server.2=192.168.0.211:2888:3888
server.3=192.168.0.212:2888:3888

②设置myid:

注意,server.X中的X是指服务器的id,需要在${dataDir}myid文件里设置(需要手动新建该文件,默认不存在)。

其后的内容是host:2888:3888,暂时不明白2888:3888的含义。但host可以是主机名,也可以是ip,看个人习惯了。

别忘了设置myid文件及其内容!!!

linux可以使用    echo “X” > /root/zookeeper/data/myid    搞定 -- 注意换成自己的路径。

8、启动服务器(集群)

还是 ./bin/zkServer.sh start ,只不过要将集群中的所有服务器都启动起来。

如果之前已启动,建议关闭或重启:./bin/zkServer.sh stop  或./bin/zkServer.sh restart

9、客户端(集群)

还是 ./bin/zkCli.sh,只不过此时可以选择连接的服务器,仍然可以连接当前主机的服务器。

10、操作(集群)

很简单,在一个客户端里新建一个节点,然后在另一个客户端修查看、修改即可。

不再细说。

zookeeper学习(一)安装、配置、运行

标签:哪些   sch   hand   log   guid   搜索引擎   完全   dmi   版本   

原文地址:http://www.cnblogs.com/larryzeal/p/6220576.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!