集群环境
主机操作系统:Ubuntu-16.04-x64
主机列表:
zk1: 192.168.103.15
zk2: 192.168.103.5
zk3: 192.168.103.3
jdk环境:jdk1.8
安装步骤
1. 下载zookeeper
从apache 官网下载zookeeper,这里选择3.4.6版本。
$ cd /opt/
$ wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
修改zk1, zk2, zk3 主机/etc/hosts文件
192.168.103.15 zk1
192.168.103.5 zk2
192.168.103.3 zk3
2. 解压并创建目录
$ cd /opt/
$ tar -zxf zookeeper-3.4.6.tar.gz
$ cd zookeeper-3.4.6
创建data目录用于存储数据文件
$ mkdir /opt/zookeeper-3.4.6/data
在data目录下创建myid文件
$ touch /opt/zookeeper-3.4.6/data/myid
3. 配置zookeeper
$ vim /opt/zookeeper-3.4.6/conf/zoo.cfg
编辑如下内容
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper-3.4.6/data
clientPort=2181
server.1=zk1:2888:3888
server.2=zk2:2888:3888
server.3=zk3:2888:3888
配置文件描述
tickTime
- The number of milliseconds of each tick
- 系统心跳间隔,单位为毫秒。如tickTime = 100,则心跳周期为100ms。
dataDir
- the directory where the snapshot is stored.do not use /tmp for storage, /tmp here is just example sakes.
- 存放数据快照的路径
dataLogDir
- 存放日志的路径
initLimit
- The number of ticks that the initial synchronization phase can take
- 当follower最初与leader建立连接时,它们之间会传输相当多的数据,尤其是follower的数据落后leader很多。initLimit配置follower与leader之间建立连接后进行同步的最长时间
syncLimit
- The number of ticks that can pass between sending a request and getting an acknowledgement
- 配置follower和leader之间发送消息,请求和应答的最大时间长度。
clientPort
- the port at which the clients will connect
- zookeeper服务端口
server.id=host:port1:port2
- server.id 其中id为一个数字,表示zk进程的id,这个id也是data目录下myid文件的内容
- host 是该zk进程所在的IP地址
- port1 表示follower和leader交换消息所使用的端口
- port2 表示选举leader所使用的端口
4. 复制到集群
zk2
$ scp -r root@zk1:/opt/zookeeper-3.4.6/ .
zk3
$ scp -r root@zk1:/opt/zookeeper-3.4.6/ .
配置myid
zk1
$ echo 1 >> /opt/zookeeper-3.4.6/data/myid
zk2
$ echo 2 >> /opt/zookeeper-3.4.6/data/myid
zk3
$ echo 3 >> /opt/zookeeper-3.4.6/data/myid
5.启动并验证集群
在zk1, zk2, zk3同时执行
$ /opt/zookeeper-3.4.6/bin/zkServer.sh start
验证zookeeper是否启动
$ jps
如果有QuorumPeerMain这个进程,则说明该节点上zookeeper进程启动了。
$ 23283 Jps
$ 23046 QuorumPeerMain
连接zookeeper服务端
/opt/zookeeper-3.4.6/zkCli.sh -server 127.0.0.1:2181
如果能正确建立连接,则说明集群搭建成功