问题提示:
1.总体没有问题,发现1使用/usr/local/zookeeper/node-01/bin/zkServer.sh status
长时间没反应,报错:
JMX enabled by default
Using config: /usr/local/zookeeper/node-01/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
解决过程:重启后成功,应该是主机名配置在重启后生效
参考附件:
Dubbo视频教程--基础篇--第03节--ZooKeeper注册中心安装详细步骤(单节点).pdf
1.Dubbo 建议使用 Zookeeper 作为服务的注册中心
2.安装配置 Zookeeper
2.1 环境:
文件安装目录: /usr/local/zookeeper-3.4.6
2.2 配置操作系统的/etc/hosts
在文件中添加:
# zookeeper servers
192.168.1.122 edu-mysql-01 #我是在数据库同台机器上配置的
说明,选择zookeeper地址和数据库集群的地址一起,所有名称是edu-mysql-x
2.3切换到/usr/local/,下载 zookeeper-3.4.6,解压 zookeeper 安装包
# cd /usr/local
# wget http://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
注:也可以从本地上传文件
# tar -zxvf zookeeper-3.4.6.tar.gz
2.4 在/usr/local/zookeeper-3.4.6目录下创建以下目录:data log
# cd /usr/local/zookeeper-3.4.6
# mkdir data
# mkdir logs
2.5 将 zookeeper-3.4.6/conf 目录下的 zoo_sample.cfg 文件拷贝一份,命名为为zoo.cfg
# cd conf
# cp zoo_sample.cfg zoo.cfg
2.6 修改 zoo.cfg 配置文件
vi /usr/local/zookeeper-3.4.6/conf/zoo.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=/usr/local/zookeeper-3.4.6/data
dataLogDir=/usr/local/zookeeper-3.4.6/logs
# the port at which the clients will connect
clientPort=2181
#2888,3888 are election port
server.1=192.168.1.122:2888:3888
其中,
2888 端口号是 zookeeper 服务之间通信的端口。
3888 是 zookeeper 与其他应用程序通信的端口。
edu-mysql 是在 hosts 中已映射了 IP 的主机名。(
B 是这个服务器的 IP 地址或/etc/hosts 文件中映射了 IP 的主机名)
initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是5*2000=10 秒。
syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 2*2000=4秒。
server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;
B 是这个服务器的 IP 地址或/etc/hosts 文件中映射了 IP 的主机名;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
2.7 在 dataDir=/usr/local/zookeeper-3.4.6/data 下创建 myid 文件,编辑 myid 文件,并在对应的 IP 的机器上输入对应的编号。如在 zookeeper 上,myid文件内容就是 1。如果只在单点上进行安装配置,那么只有一个 server.1。
$ vi /usr/local/zookeeper-3.4.6/data/myid
1
2.8配置 用户下修改bash_profile,增加 zookeeper 配置:
vi ~/.bash_profile
# zookeeper env
export ZOOKEEPER_HOME=/home/local/zookeeper-3.4.6
export PATH=$ZOOKEEPER_HOME/bin:$PATH
使配置文件生效
$ source ~/.bash_profile
注:
用的root用户
vi /etc/profile
export ZOOKEEPER_HOME=/usr/local/zookeeper-3.4.6
export PATH=$ZOOKEEPER_HOME/bin:$PATH
source /etc/profile
2.9在防火墙中打开要用到的端口 2181、2888、3888
切换到 root 用户权限,执行以下命令:
# chkconfig iptables on
# service iptables start
编辑/etc/sysconfig/iptables
# vi /etc/sysconfig/iptables
增加以下 3 行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
重启防火墙:
# service iptables restart
查看防火墙端口状态:
# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2181
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2888
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3888
8 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
2.10
启动并测试 zookeeper(要用 wusc 用户启动,不要用 root):
(1) 使用 wusc 用户到/home/wusc/zookeeper-3.4.6/bin 目录中执行:
$ zkServer.sh start
(2) 输入 jps 命令查看进程:
$ jps
1456 QuorumPeerMain
1475 Jps
其中,QuorumPeerMain 是 zookeeper 进程,启动正常
(3) 查看状态:
$ zkServer.sh status
(4) 查看 zookeeper 服务输出信息:
由于服务信息输出文件在/home/wusc/zookeeper-3.4.6/bin/zookeeper.out
$ tail -500f zookeeper.out
说明:我用的是root,实际生产不要用
cd /usr/local/zookeeper-3.4.6/bin/
zkServer.sh start
2.11停止 zookeeper 进程:
$ zkServer.sh stop
2.12 配置 zookeeper 开机使用 wusc 用户启动:
编辑/etc/rc.local 文件,加入:
su - wusc -c '/home/wusc/zookeeper-3.4.6/bin/zkServer.sh start'
3.安装配置 Zookeeper集群
参考:03-Dubbo视频教程--高可用架构篇--第01节--ZooKeeper集群的安装、配置、高可用测试.pdf
Dubbo 建议使用 Zookeeper 作为服务的注册中心。
3.1 环境配置
(1)安装JDK
(2)机器规划
Zookeeper 集群中只要有过半的节点是正常的情况下,那么整个集群对外就是可用的。正是基于这个特性,要将 ZK 集群的节点数量要为奇数(2n+1:如 3、5、7 个节点)较为合适
|
IP地址 |
端口 |
服务器 1 |
192.168.1.106 |
2181、2881、3881 |
服务器 2 |
192.168.1.107 |
2182、2882、3882 |
服务器 3 |
192.168.1.108 |
2183、2883、3883 |
(3)修改操作系统的/etc/hosts 文件,添加 IP 与主机名映射:
vi /etc/hosts
# zookeeper cluster servers
192.168.1.106 edu-zk-01
192.168.1.107 edu-zk-02
192.168.1.108 edu-zk-03
注:hosts里面只能写这些内容,不然连接不上
(4)下载或上传 zookeeper-3.4.6.tar.gz 到/usr/local/zookeeper 目录:
# mkdir -p /usr/local/zookeeper
# cd /usr/local/zookeeper
# wget http://apache.fayea.com/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
(1) 没有则yum -y install wget (2)也可以直接上传
(5)解压 zookeeper 安装包,并按节点号对 zookeeper 目录重命名:
# tar -zxvf zookeeper-3.4.6.tar.gz
针对不同的服务器:
服务器 1:# mv zookeeper-3.4.6 node-01
服务器 2:# mv zookeeper-3.4.6 node-02
服务器 3:# mv zookeeper-3.4.6 node-03
(6)在各 zookeeper 节点目录下创建以下目录:
# cd /usr/local/zookeeper/node-0X (X 代表节点号 1、2、3,以下同解)
# mkdir data
# mkdir logs
(7)将 zookeeper/node-0X/conf 目录下的 zoo_sample.cfg 文件拷贝一份,命名为 zoo.cfg:
# cd conf
# cp zoo_sample.cfg zoo.cfg
(8) 修改 zoo.cfg 配置文件:
zookeeper/node-01的配置,如下:
vi /usr/local/zookeeper/node-01/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/node-01/data
dataLogDir=/usr/local/zookeeper/node-01/logs
clientPort=2181
server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883
zookeeper/node-02的配置 ,如下:
vi /usr/local/zookeeper/node-02/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/node-02/data
dataLogDir=/usr/local/zookeeper/node-02/logs
clientPort=2182
server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883
zookeeper/node-03的配置,如下:
vi /usr/local/zookeeper/node-03/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zookeeper/node-03/data
dataLogDir=/usr/local/zookeeper/node-03/logs
clientPort=2183
server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883
参数说明: :
tickTime=2000
tickTime 这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime 时间就会发送一个心跳。
initLimit=10
initLimit 这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。
syncLimit=5
syncLimit 这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度,总的时间长度就是 5*2000=10 秒。
dataDir=/home/wusc/zookeeper/node-01/data
dataDir顾名思义就是Zookeeper保存数据的目录,默认情况下Zookeeper将写数据的日志文件也保存在这个目录里。
clientPort=2181
clientPort 这个端口就是客户端(应用程序)连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口接受客户端的访问请求。
server.A=B:C:D
server.1=edu-zk-01:2881:3881
server.2=edu-zk-02:2882:3882
server.3=edu-zk-03:2883:3883
A 是一个数字,表示这个是第几号服务器;
B 是这个服务器的 IP 地址(或者是与 IP 地址做了映射的主机名) ;
C 第一个端口用来集群成员的信息交换,表示这个服务器与集群中的 Leader 服务器交换信息的端口;
D 是在 leader 挂掉时专门用来进行选举 leader 所用的端口。
注意:如果是伪集群的配置方式,不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。
(9)在 dataDir=/usr/local/zookeeper/node-0X/data 下创建 myid 文件
编辑 myid 文件,并在对应的 IP 的机器上输入对应的编号。
如在 node-01 上,myid 文件内容就是1,node-02 上就是 2,node-03 上就是 3:
$ vi /usr/local/zookeeper/node-01/data/myid ## 值为 1
$ vi /usr/local/zookeeper/node-02/data/myid ## 值为 2
$ vi /usr/local/zookeeper/node-03/data/myid ## 值为 3
(10)在防火墙中打开要用到的端口 218X、288X、388X,切换到 root 用户权限,执行以下命令:
# chkconfig iptables on
# service iptables start
# vi /etc/sysconfig/iptables
如服务器 01 增加以下 3 行:
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
## zookeeper
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2881 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3881 -j ACCEPT
COMMIT
如服务器 02 增加以下 3 行:
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
## zookeeper
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2182 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2882 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3882 -j ACCEPT
COMMIT
如服务器 03 增加以下 3 行:
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
## zookeeper
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2183 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2883 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3883 -j ACCEPT
COMMIT
重启防火墙:
# service iptables restart
查看防火墙端口状态:
# service iptables status
(11)启动并测试 zookeeper(要用 wusc 用户启动,不要用 root): 【说明 我用的是root用户】
(1) 使用 wusc 用户到/home/wusc/zookeeper/node-0X/bin 目录中执行:
$ /usr/local/zookeeper/node-01/bin/zkServer.sh start
$ /usr/local/zookeeper/node-02/bin/zkServer.sh start
$ /usr/local/zookeeper/node-03/bin/zkServer.sh start
(2) 输入 jps 命令查看进程:
$ jps
1456 QuorumPeerMain
其中,QuorumPeerMain 是 zookeeper 进程,说明启动正常
(3) 查看状态:
$ /usr/local/zookeeper/node-01/bin/zkServer.sh status
(4) 查看 zookeeper 服务输出信息:由于服务信息输出文件在
$ tail -f /usr/local/zookeeper/node-0X/bin/zookeeper.out
(12)停止 zookeeper 进程:
$ zkServer.sh stop
(13)配置 zookeeper 开机启动:
使用 wusc 用户启动:
编辑 node-01、node-02、node-03 中的/etc/rc.local 文件,分别加入:
su - wusc -c '/usr/local/tools/zookeeper/node-01/bin/zkServer.sh start'
su - wusc -c '/usr/local/tools/zookeeper/node-02/bin/zkServer.sh start'
su - wusc -c '/usr/local/tools/zookeeper/node-03/bin/zkServer.sh start'
我用的是root用户
编辑 node-01、node-02、node-03 中的/etc/rc.local 文件,分别加入:
su - root -c '/usr/local/zookeeper/node-01/bin/zkServer.sh start'
su - root -c '/usr/local/zookeeper/node-02/bin/zkServer.sh start'
su - root -c '/usr/local/zookeeper/node-03/bin/zkServer.sh start'
===============以下是我的小结:包括单机和集群的安装配置==================
Zookeeper
1.介绍
ZooKeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(DistributedSynchronization)、命名服务(NamingService)、集群维护(GroupMaintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以Standalone模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性.
2.zookeeper单机/集群安装
【单机】
参考链接:http://blog.csdn.net/shirdrn/article/details/7183503
[1] 从Apache网站上(zookeeper.apache.org)下载ZooKeeper软件包,我选择了3.4.6版本的(zookeeper-3.4.6.tar.gz)
[2] 将zookeeper-3.4.6/conf目录下面的 zoo_sample.cfg修改为zoo.cfg,配置文件内容如下所示:
tickTime=2000 # tickTime:这个时间是作为Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
dataDir=/home/hadoop/storage/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
参数说明:见下文
我的操作:
注意:我下载的是zookeeper-3.4.6.tar.gz
通过FTP将文件传到 /home/johnjia/softStore
解压文件到
mkdir /usr/local/zookeeper
cd /home/johnjia/softStore;
tar zxvf ./zookeeper-3.4.6.tar.gz -C /usr/local/zookeeper
cd /usr/local/zookeeper
mv ./zookeeper-3.4.6/ /usr/local/zookeeper
cd /usr/local/zookeeper/conf
mv zoo_sample.cfg zoo.cfg
vi zoo.cfg
参数如下:
tickTime=2000
dataDir=/data/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
[3] 启动ZooKeeper服务器进程:
cd zookeeper-3.3.4/bin
./zkServer.sh start &
3)通过jps命令可以查看ZooKeeper服务器进程,名称为QuorumPeerMain。
在客户端连接ZooKeeper服务器,执行如下命令: bin/zkCli.sh -server dynamic:2181
注:dynamic是我的主机名,
在本机执行,则执行如下命令即可:bin/zkCli.sh
客户端连接信息如下:接着,可以使用help查看Zookeeper客户端可以使用的基本操作命令。
【集群】:
ZooKeeper分布式模式安装(ZooKeeper集群)也比较容易,这里说明一下基本要点:
[1]首先要明确的是,ZooKeeper集群是一个独立的分布式协调服务集群,
“独立”的含义就是说,如果想使用ZooKeeper实现分布式应用的协调与管理,简化协调与管理,任何分布式应用都可以使用,这就要归功于Zookeeper的数据模型(Data Model)和层次命名空间(Hierarchical Namespace)结构,详细可以参考http://zookeeper.apache.org/doc/trunk/zookeeperOver.html在设计你的分布式应用协调服务时,首要的就是考虑如何组织层次命名空间。
下面说明分布式模式的安装配置,过程如下所示:
1) 主机名称到IP地址映射配置
ZooKeeper集群中具有两个关键的角色:Leader和Follower。集群中所有的结点作为一个整体对分布式应用提供服务,集群中每个结点之间都互相连接,所以,在配置的ZooKeeper集群的时候,
每一个结点的host到IP地址的映射都要配置上集群中其它结点的映射信息。
例如,我的ZooKeeper集群中每个结点的配置,以slave-01为例,/etc/hosts内容如下所示: vi /etc/hosts
192.168.199.129 slave-01
192.168.199.130 slave-02
192.168.199.131 slave-03
ZooKeeper采用一种称为Leader election的选举算法。在整个集群运行过程中,只有一个Leader,其他的都是Follower,如果ZooKeeper集群在运行过程中Leader出了问题,
系统会采用该算法重新选出一个Leader。因此,各个结点之间要能够保证互相连接,必须配置上述映射。
ZooKeeper集群启动的时候,会首先选出一个Leader,在Leader election过程中,某一个满足选举算的结点就能成为Leader。整个集群的架构可以参考http://zookeeper.apache.org/doc/trunk/zookeeperOver.html#sc_designGoals。
2)修改ZooKeeper配置文件:
在其中一台机器(johnjia-desktop)上,解压缩zookeeper-3.3.4.tar.gz,修改配置文件conf/zoo.cfg,内容如下所示: cd /usr/local/zookeeper/conf
tickTime=2000
dataDir=/home/hadoop/storage/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=slave-01:2888:3888
server.2=slave-02:2888:3888
server.3=slave-03:2888:3888
上述配置内容说明,可以参考http://zookeeper.apache.org/doc/trunk/zookeeperStarted.html#sc_RunningReplicatedZooKeeper。
3)远程复制分发安装文件
上面已经在一台机器johnjia-desktop上配置完成ZooKeeper,现在可以将该配置好的安装文件远程拷贝到集群中的各个结点对应的目录下
scp -r /usr/local/zookeeper root@slave-02:/usr/local/zookeeper
scp -r /usr/local/zookeeper root@slave-03:/usr/local/zookeeper
scp -r local_folder remote_username@remote_ip:remote_folder
问题: The authenticity of host 'johnjia1-desktop (192.168.199.130)' can't be established
ssh -o StrictHostKeyChecking=no 192.168.199.130
新问题:Warning: Permanently added '192.168.199.130' (ECDSA) to the list of known hosts
实际解决:根据提示输出就OK了
4)设置myid
在我们配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,
conf/zoo.cfg文件中配置的server.X中X为什么数字,则myid文件中就输入这个数字,例如:
root@slave-01:$
cd /usr/local/zookeeper
echo "1" > /home/hadoop/storage/zookeeper/myid
root@slave-02:
cd /usr/local/zookeeper
echo "2" > /home/hadoop/storage/zookeeper/myid
root@slave-03:
cd /usr/local/zookeeper
echo "3" > /home/hadoop/storage/zookeeper/myid
5)启动ZooKeeper集群
在ZooKeeper集群的每个结点上,执行启动ZooKeeper服务的脚本,如下所示:
root@slave-01:
cd /usr/local/zookeeper/bin/
./zkServer.sh start
zkServer.sh start
root@slave-02:
cd /usr/local/zookeeper/bin/
zkServer.sh start
root@slave-03:
cd /usr/local/zookeeper/bin/
zkServer.sh start
tail -500f zookeeper.out
修改主机名 http://www.111cn.net/sys/Ubuntu/76124.htm
我启动的顺序是slave-01>slave-02>slave-03,由于ZooKeeper集群启动的时候,每个结点都试图去连接集群中的其它结点,先启动的肯定连不上后面还没启动的,所以上面日志前面部分的异常是可以忽略的。通过后面部分可以看到,集群在选出一个Leader后,最后稳定了。
其他结点可能也出现类似问题,属于正常。
6)安装验证
可以通过ZooKeeper的脚本来查看启动状态,包括集群中各个结点的角色(或是Leader,或是Follower),
如下所示,是在ZooKeeper集群中的每个结点上查询的结果:
./zkServer.sh status
tail -500f zookeeper.out
一直提示:Error contacting service. It is probably not running.
参考:http://blog.csdn.net/young_kim1/article/details/50425968
vi /etc/hosts
127.0.0.1 localhost
3.Zookeeper配置
(1) 单机配置:
OR
(2) 集群配置
OR
(3)同一Zookeeper,分成多组注册中心
(4)zoo.cfg配置说明
#tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 毫秒时间就会发送一个心跳。
tickTime=2000
#dataDir:Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。
dataDir=/tmp/zookeeper
#dataLogDir:日志文件保存的位置(未配置)
dataLogDir=/tmp/zookeeper/log
#clientPort:这个端口就是客户端连接Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。
clientPort=2181
#initLimit:这个配置项是用来配置 Zookeeper接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。
#当已经超过 10 个心跳的时间(也就是tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。
initLimit=10
其他步骤:
1wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz [适合ubuntu]
我选择:下载传上去
tar -xvf zookeeper-3.4.6.tar.gz
mv ./zookeeper-3.4.6/ /usr/local/zookeeper
修改配置zoo.cfg:
cd /usr/local/zookeeper/conf;
mv zoo_sample.cfg zoo.cfg;
vi zoo.cfg
vi zoo.cfg,内容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/usr/local/zkdir/data
dataLogDir=/usr/local/zkdir/log
clientPort=2181
server.1=192.168.199.153:2888:3888
server.2=192.168.199.154:2888:3888
server.3=192.168.199.155:2888:3888
说明: 这两行说明了,需要创建一个文件夹,分别存放data以及log,所以,在/usr/local下创建文件夹zkdir,也可以创建在其他地方,只要配置中指定就好
dataDir=/usr/local/zkdir/data
dataLogDir=/usr/local/zkdir/log
mkdir /usr/local/zkdir;
mkdir /usr/local/zkdir/data /usr/local/zkdir/log;
在zkdir/data下,创建myid文件,并写入与ip地址相称的服务器编号,比如,192.168.199.153,写入 1;echo 1>myid;
其他两台机器配置相同,不过myid文件写入相应的id号
cd /usr/local/zkdir/data;
touch myid
vi 1
cd /usr/local/zkdir/data;
touch myid
vi 2
cd /usr/local/zkdir/data;
touch myid
vi 3
启动:
cd /usr/local/zookeeper/bin;
./zkServer.sh start
测试:
./zkCli.sh -server 192.168.199.153:2181
其他两台一样配置 另外2台还未设置