Zookeeper的安装和配置十分简单,既可以配置成单机模式,也可以配置成集群模式。
修改其配置文件:
Server启动之后,就可以启动client连接server了, 执行脚本:
# bin/zkCli.sh -server localhost: 2181
可以为zookeeper增加其内存,只需要编辑bin目录下的 zkEnv.sh,在文件的底部增加如下设置:
export JVMFLAGS="-Xms1024m -Xmx2048m $JVMFLAGS"
# cp -R zookeeper1 zookeeper2
# cp -R zookeeper1 zookeeper3
修改配置文件里面的data目录(参数dataDir)/clientPort,并增加如下配置:
# vi zookeeper1/conf/zoo.cfg
dataDir=/opt/zookeeper1/data
clientPort=2181
单机模式
点击这里下载zookeeper的安装包或wget方式下载,然后解压并拷贝到合适目录,进入zookeeper目录下的conf子目录:
# wget http://www.apache.org/dist//zookeeper/zookeeper-3.3.6/zookeeper-3.3.6.tar.gz
# tar zxvf zookeeper-3.3.6.tar.gz
# mv zookeeper-3.3.6 zookeeper1
# cd /opt/zookeeper1
# mkdir -p data
# cp conf/zoo_sample.cfg conf/zoo.cfg
修改其配置文件:
# vi conf/zoo.cfg
tickTime=2000 #心跳时间
initLimit=5
syncLimit=2
dataDir=/opt/zookeeper1/data #数据保存目录 clientPort=2181 #客户端连接端口
参数说明:
- tickTime: zookeeper中使用的基本时间单位,毫秒值。
- initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower。initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间。 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s。
- syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度。 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms。
- dataDir: 数据目录,可以是任意目录。
- dataLogDir: log目录,同样可以是任意目录。如果没有设置该参数,将使用和dataDir相同的设置。
- clientPort: 监听client连接的端口号。
至此, zookeeper的单机模式已经配置好。启动server只需运行脚本
# bin/zkServer.sh startServer启动之后,就可以启动client连接server了, 执行脚本:
# bin/zkCli.sh -server localhost: 2181
可以为zookeeper增加其内存,只需要编辑bin目录下的 zkEnv.sh,在文件的底部增加如下设置:
export JVMFLAGS="-Xms1024m -Xmx2048m $JVMFLAGS"
伪集群模式
所谓伪集群,是指在单台机器中启动多个zookeeper进程, 并组成一个集群。这里以配置3个zookeeper进程为例。
将zookeeper的目录拷贝2份:# cp -R zookeeper1 zookeeper2
# cp -R zookeeper1 zookeeper3
修改配置文件里面的data目录(参数dataDir)/clientPort,并增加如下配置:
# vi zookeeper1/conf/zoo.cfg
dataDir=/opt/zookeeper1/data
clientPort=2181
###
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
server.3=127.0.0.1:8883:7773
# vi zookeeper2/conf/zoo.cfg
dataDir=/opt/zookeeper2/data
clientPort=2182
dataDir=/opt/zookeeper3/data
clientPort=2183
并在上面的dataDir指定目录下增加myid文件, 写入一个数字, 该数字表示这是第几号server。 该数字必须和zoo.cfg文件中的server.X中的X一一对应,即/opt/zookeeper1/data/myid文件中写入1, /opt/zookeeper2/data/myid文件中写入2, /opt/zookeeper3/data/myid文件中写入3。
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
server.3=127.0.0.1:8883:7773
参数说明:
#server.A=B:C:D 其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 #Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 #Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
#server.A=B:C:D 其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 #Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 #Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
# vi zookeeper2/conf/zoo.cfg
dataDir=/opt/zookeeper2/data
clientPort=2182
###
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
server.3=127.0.0.1:8883:7773
# vi zookeeper3/conf/zoo.cfg
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
server.3=127.0.0.1:8883:7773
dataDir=/opt/zookeeper3/data
clientPort=2183
###
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
server.3=127.0.0.1:8883:7773
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772
server.3=127.0.0.1:8883:7773
并在上面的dataDir指定目录下增加myid文件, 写入一个数字, 该数字表示这是第几号server。 该数字必须和zoo.cfg文件中的server.X中的X一一对应,即/opt/zookeeper1/data/myid文件中写入1, /opt/zookeeper2/data/myid文件中写入2, /opt/zookeeper3/data/myid文件中写入3。
集群模式
集群模式的配置和伪集群基本一致。
由于集群模式下, 各server部署在不同的机器上,因此各server的conf/zoo.cfg文件可以完全一样,不必担心端口冲突什么的。
需要注意的是, 各server的dataDir目录下的myid文件中的数字必须不同。
启动
./bin/zkServer.sh start
停止
./bin/zkServer.sh stop
注:命令行参考 (See: http://zookeeper.apache.org/doc/r3.3.6/zookeeperAdmin.html)
验证启动状态
telnet 127.0.0.1 2181
用法
dubbo.registry.address=zookeeper://192.168.0.138:2181?backup=192.168.0.139:2181
或者
测试zk服务
执行$ zkCli.sh -server 192.168.0.138:2181,检查指定服务器是否成功启动。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9399028/viewspace-2105694/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/9399028/viewspace-2105694/