单机安装
JDK
在安装Zookeeper之前首先要确保已经正确安装了JDK,关于JDK的安装就不做描述,只列出在不同环境下JDK的配置。
- Windows:在环境变量中添加${jdk_path}\bin目录
- Linux:在
/etc/profile
文件最后添加如下代码,并保存文件
Windows
从Zookeeper官网下载最新稳定版本,当前是3.4.9。
解压下载的文件到指定目录,然后在Windows Command下切换到此目录
执行start..
打开文件夹并拷贝zookeeper-3.4.9\conf\zoo_sample.cfg
文件命名为zookeeper-3.4.9\conf\zoo.cfg
,修改其中dataDir
为dataDir=c:/zookeeper
,其中几个参数释义如下
tickTime |
zookeeper中使用的基本时间,单位毫秒. |
dataDir |
数据目录. 可以是任意目录. |
dataLogDir |
log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置. |
clientPort |
监听client连接的端口号. |
然后在命令行切换到zookeeper-3.4.9\bin
目录下执行zkServer.cmd
命令,启动Windows单机版Zookeeper
重新打开一个command并切到zookeeper安装目录的bin目录下,执行zkCli.cmd -server localhost:2181
验证是否正常启动。
Linux
从Zookeeper官网下载最新稳定版本,当前是3.4.9,并解压。
拷贝zookeeper-3.4.9\conf\zoo_sample.cfg
文件命名为zookeeper-3.4.9\conf\zoo.cfg
然后在命令行切换到zookeeper-3.4.9\bin
目录下,添加脚本命令执行权限,并执行zkServer.sh
命令,启动Linux单机版Zookeeper
执行zkCli.sh -server localhost:2181
验证是否正常启动。
伪集群
伪集群即在单台机器中启动多个zookeeper进程, 并组成一个集群. 以下以Linux下部署三个节点为例。
拷贝三份zookeeper,并按照如下修改对应的conf\zoo.cfg
文件
修改zoo.cfg文件
- vi zookeeper-3.4.9_1/conf/zoo.cfg
- vi zookeeper-3.4.9_2/conf/zoo.cfg
- vi zookeeper-3.4.9_3/conf/zoo.cfg
initLimit |
zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为10, 说明时间限制为10倍tickTime, 即10*2000=20000ms=20s. |
syncLimit |
该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即10000ms=10s. |
server.id=host:portA:portB |
其中id被称为Server ID是一个1-255之间的数字,用来标识该机器在集群中的机器序号,并对应myid中的数字。host是该server所在的IP地址. hostA配置该server和集群中的leader交换消息所使用的端口. hostB配置选举leader时所使用的端口. 由于配置的是伪集群模式, 所以各个server的hostA, hostB参数必须不同. |
创建data
和log
目录
创建myid文件
启动
验证
为了验证配置安装是否正确,在zookeeper实例1下创建一个目录,然后通过zkCli在另外两个zookeeper实例下看能否查看到。
集群
集群的配置与伪集群基本类似,由于集群模式下,各个Zookeeper部署在不同的机器上,所以zoo.cfg可以配置为完全一致。
需要注意的各Server的dataDir下myid中的内容必须与zoo.cfg中配置的一致,并且不能重复。
参考资料
百度百科:zookeeper
Zookeeper官网:http://zookeeper.apache.org/
《从PAXOS到ZOOKEEPER分布式一致性原理与实践》 - 倪超
Zookeeper 安装和配置: http://coolxing.iteye.com/blog/1871009