Zookeeper系列(二)Zookeeper安装配置
2018-03-07 22:45
381 查看
一、安装方式简介
Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。单机模式:Zookeeper只运行在一台服务器上,适合测试环境;
伪集群模式:就是在一台物理机上运行多个Zookeeper 实例;
集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble)
Zookeeper通过复制来实现高可用性,只要集合体中半数以上的机器处于可用状态,它就能够保证服务继续。为什么一定要超过半数呢?这跟Zookeeper的复制策略有关:zookeeper确保对znode 树的每一个修改都会被复制到集合体中超过半数的机器上。
注:我这里用MAC练习,所以这里介绍的是MAC版本Zookeeper安装,linux版本的参考
Zookeeper安装配置
二、单机模式
Mac安装ZooKeeper方式如下:brew install zookeeper
安装后zookeeper位置:/usr/local/Cellar/zookeeper
安装后zookeeper配置文件位置:/usr/local/etc/zookeeper
安装后zookeeper默认日志输出位置:/usr/local/var/log/zookeeper
配置文件目录下有个zoo.cfg,
f 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=/usr/local/var/run/zookeeper/data/zk1 # the port at which the clients will connect clientPort=2182 server.1=127.0.0.1:2888:3888 # the maximum number of client connections. # increase this if you need to handle more clients #maxClientCnxns=60
参数详解:
1、tickTime:ZK中的一个时间单元。ZK中所有时间都是以这个时间单元为基础,进行整数倍配置的。例如,session的最小超时时间是2*tickTime。
2、initLimit:Follower在启动过程中,会从Leader同步所有最新数据,然后确定自己能够对外服务的起始状态。Leader允许F在initLimit时间内完成这个工作。通常情况下,我们不用太在意这个参数的设置。如果ZK集群的数据量确实很大了,F在启动的时候,从Leader上同步数据的时间也会相应变长,因此在这种情况下,有必要适当调大这个参数了。(No Java system property)
3、syncLimit:在运行过程中,Leader负责与ZK集群中所有机器进行通信,例如通过一些心跳检测机制,来检测机器的存活状态。如果L发出心跳包在syncLimit之后,还没有从F那里收到响应,那么就认为这个F已经不在线了。注意:不要把这个参数设置得过大,否则可能会掩盖一些问题。(No Java system property)
4、dataDir:存储快照文件snapshot的目录。默认情况下,事务日志也会存储在这里。建议同时配置参数dataLogDir, 事务日志的写性能直接影响zk性能。
5、clientPort: 客户端连接server的端口,即对外服务端口,一般设置为2181吧。
6、server.x=[hostname]:nnnnn[:nnnnn]:这里的x是一个数字,与myid文件中的id是一致的。右边可以配置两个端口,第一个端口用于F和L之间的数据同步和其它通信,第二个端口用于Leader选举过程中投票通信。
高级配置:
下面是高级配置参数中可选配置参数,用户可以使用下面的参数来更好的规定Zookeeper的行为:
dataLogdDir
这个操作让管理机器把事务日志写入“dataLogDir”所指定的目录中,而不是“dataDir”所指定的目录。这将允许使用一个专用的日志设备,帮助我们避免日志和快照的竞争。配置
/usr/local/var/run/zookeeper/dataLog
maxClientCnxns
这个操作将限制连接到Zookeeper的客户端数量,并限制并发连接的数量,通过IP来区分不同的客户端。此配置选项可以阻止某些类别的Dos攻击。将他设置为零或忽略不进行设置将会取消对并发连接的限制。
例如,此时我们将maxClientCnxns的值设为1,如下所示:
maxClientCnxns=1
启动Zookeeper之后,首先用一个客户端连接到Zookeeper服务器上。之后如果有第二个客户端尝试对Zookeeper进行连接,或者有某些隐式的对客户端的连接操作,将会触发Zookeeper的上述配置。
(3) minSessionTimeout和maxSessionTimeout
即最小的会话超时和最大的会话超时时间。在默认情况下,minSession=2*tickTime;maxSession=20*tickTime。
1、配置方式如下:
修改zoo.cfg或者新建配置文件都行
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/local/var/run/zookeeper/data clientPort=2181 server.1=localhost:2287:3387
2、添加myid文件
cd /usr/local/var/run/zookeeper/data(配置文件中的dataDir)
vim myid 输入 1 保存,1代表机器编号。
3、启动、查看状态、关闭命令如下:
zkServer start zoo.cfg
zkServer status zoo.cfg
zkServer stop zoo.cfg
注:在查看过程中可能会出现以下问题
Error contacting service. It is probably not running.
网络上有很多种解答,个人总结如下,仅供参考:
1、server.x没和myid里面的数字没对上,必须相同
2、检查配置文件是否配置正确
3、网络上讲的防火墙问题,我没碰到,可检查下,检查方法网络上有的是
4、地址、端口被占用
最主要的是去查看/usr/local/var/log/zookeeper下的日志输出,本人就是从日志输出文件中发现端口被占用,然后解决的。
二、伪集群搭建
我配置的是三个节点的集群,三个节点的配置文件分别如下:zoo.cfg
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/local/var/run/zookeeper/data clientPort=2181 server.1=localhost:2287:3387
server.2=localhost:2288:3388
server.3=localhost:2289:3389
#maxClientCnxns=60
zoo2.cfg
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/local/var/run/zookeeper/data2 clientPort=2182 server.1=localhost:2287:3387 server.2=localhost:2288:3388 server.3=localhost:2289:3389 #maxClientCnxns=60
zoo3.cfg
tickTime=2000 initLimit=10 syncLimit=5 dataDir=/usr/local/var/run/zookeeper/data3 clientPort=2183 server.1=localhost:2287:3387 server.2=localhost:2288:3388 server.3=localhost:2289:3389 #maxClientCnxns=60
然后创建多个相对应的dataDir对应路径,并在dataDir路径下创建对应的myid文件,文件中数字与server.x保持一致,接着分别启动节点:
hxfdeMacBook-Pro:~ hxf$ zkServer start zoo.cfg ZooKeeper JMX enabled by default Using config: /usr/local/etc/zookeeper/zoo.cfg Starting zookeeper ... STARTED hxfdeMacBook-Pro:~ hxf$ zkServer start zoo2.cfg ZooKeeper JMX enabled by default Using config: /usr/local/etc/zookeeper/zoo2.cfg Starting zookeeper ... STARTED hxfdeMacBook-Pro:~ hxf$ zkServer start zoo3.cfg ZooKeeper JMX enabled by default Using config: /usr/local/etc/zookeeper/zoo3.cfg Starting zookeeper ... STARTED hxfdeMacBook-Pro:~ hxf$ jps 848 QuorumPeerMain 874 QuorumPeerMain 861 QuorumPeerMain 877 Jps hxfdeMacBook-Pro:~ hxf$ zkServer status zoo.cfg ZooKeeper JMX enabled by default Using config: /usr/local/etc/zookeeper/zoo.cfg Mode: follower hxfdeMacBook-Pro:~ hxf$ zkServer status zoo2.cfg ZooKeeper JMX enabled by default Using config: /usr/local/etc/zookeeper/zoo2.cfg Mode: leader hxfdeMacBook-Pro:~ hxf$ zkServer status zoo3.cfg ZooKeeper JMX enabled by default Using config: /usr/local/etc/zookeeper/zoo3.cfg Mode: follower hxfdeMacBook-Pro:~ hxf$
从查看命令里看到Mode状态说明成功了,我这里显示的一主两从。在实际操作中,可能会碰到各种问题,比如文件权限问题等,所以要耐心检查,仔细去看下错误日志,一步一步解决。
参考文章:ZooKeeper安装配置
相关文章推荐
- Zookeeper系列(二)安装配置与集群搭建
- Hadoop + Hbase + Zookeeper安装及配置完整版(Hadoop1系列)
- Hadoop系列之zookeeper(分布式协调服务)安装配置
- Zookeeper系列一:Zookeeper介绍、Zookeeper安装配置、ZK Shell的使用
- ZooKeeper系列之二:Zookeeper的安装和配置
- 【Zookeeper&Dubbo系列二】Zookeeper+Dubbo集群安装配置详解
- zookeeper系列(二)——安装配置和jps常用用法
- zookeeper(单机/集群)安装与配置
- ZooKeeper安装与配置
- ZooKeeper安装与配置
- ZOOKEEPER安装配置
- Appium自动化测试系列1 - Appium环境的安装与配置
- Zookeeper的安装和配置(单机模式)
- 浅谈 zookeeper 原理,安装和配置
- Zookeeper的安装配置和简单使用-yellowcong
- ZooKeeper 的安装和配置---单机和集群
- zookeeper集群环境安装配置
- Jenkins入门系列之— Jenkins安装与配置
- Jenkins入门系列之— Jenkins安装与配置
- 安装、部署DPM 2010服务器(DPM配置管理系列一)