目录:
- 单机安装
- 下载
- 上传、解压
- 修改环境变量
- 修改配置文件
- 启动
- 验证
- 伪分布式安装
- 下载
- 上传、解压
- 修改环境变量
- 修改配置文件
- 启动
- 验证
- 全分布式安装(准备3台虚拟机测试)
- 下载(3台虚拟机同操作)
- 上传、解压(3台虚拟机同操作)
- 修改环境变量(3台虚拟机同操作)
- 修改配置文件
- 启动
- 验证
一.单机安装
详细步骤:
- 下载:下载zookeeper的tar包 http://archive.apache.org/dist/zookeeper/zookeeper-3.4.10/
- 上传、解压到/home目录下
# tar -zxvf zookeeper-3.4.10.tar.gz - 修改环境变量,将bin目录添加到PATH路径下
# vi /etc/profile#最后两行添加 ZOOKEEPRE_HOME=/home/zookeeper-3.4.10 PATH=$PATH:$ZOOKEEPER_HOME/bin - 修改配置文件
将/conf路径下的zoo_sample.cfd文件更改名称为zoo.cfd,并修改如下 (修改文中的一行即可)
基本配置说明:
-
tickTime
心跳基本时间单位,以毫秒为单位, 默认值是 2000,ZK基本上所有的时间都是这个时间的整数倍。 -
initLimit
默认值是 10,tickTime的个数,表示在leader选举结束后,followers与leader同步需要的时间,如果followers比较多或者说leader的数据灰常多时,同步时间相应可能会增加,那么这个值也需要相应增加。当然,这个值也是follower和observer在开始同步leader的数据时的最大等待时间(setSoTimeout) -
syncLimit
tickTime的个数,默认值是 5。这时间容易和上面的时间混淆,它也表示follower和observer与leader交互时的最大等待时间,只不过是在与leader同步完毕之后,进入正常请求转发或ping等消息交互时的超时时间。 -
dataDir
内存数据库快照存放地址,如果没有指定事务日志存放地址(dataLogDir),默认也是存放在这个路径下,建议两个地址分开存放到不同的设备上。 -
clientPort
配置ZK监听客户端连接的端口
maxClientCnxns: 在 socket 级别限制单个客户端与单台服务器之前的并发连接数量, 可以通过 IP 地址来区分不同的客户端。它用来防止某种类型的 DoS 攻击, 包括文件描述符耗尽。默认值是 60。将其设置为 0 将完全移除并发连接数的限制。 -
autopurge.snapRetainCount
配置 ZooKeeper 在自动清理的时候需要保留的数据文件快照的数量和对应的事务日志文件, 默认值是 3。 -
autopurge.purgeInterval
和参数 autopurge.snapRetainCount 配套使用, 用于配置 ZooKeeper 自动清理文件的频率, 默认值是 1, 即默认开启自动清理功能, 设置为 0 则表示禁用自动清理功能。
-
tickTime
- 启动与关闭zookeeper
- 启动
# zkServer.sh start - jps查看服务进程
# jps - 关闭
# zkServer.sh stop
- 启动
二.伪分布式安装
步骤:
- 下载、上传、解压、安装、修改环境变量同【单机安装】
- 修改配置文件
-
第一步:将zoo.cfg复制3份
结果如下图所示:执行以下命令: # cd conf # cp zoo.cfg zoo1.cfg # cp zoo.cfg zoo2.cfg # cp zoo.cfg zoo3.cfg -
第二步:修改zoo1.cfg 、zoo2.cfg 、zoo3.cfg,和【单机安装中zoo.cfg相比,有3处修改】,结果如下图
zoo1.cfg
zoo2.cfgserver.1=localhost:2887:3887 server.2=localhost:2888:3888 server.3=localhost:2889:3889 说明:格式为 server.serverid=host:tickpot:electionport server: 固定写法 serverid: 每个服务器的指定ID(必须处于1-255之间,必须每一台机器不能重复) host: 主机名或者ip地址 tickpot: 心跳通信端口 electionport: 选举端口
zoo3.cfg -
第三步:除了修改 zoo.cfg 配置文件,集群模式下还要配置一个文件 myid。
注:如果是集群模式,在我们启动zookeeper服务之前,我们需要在它的dataDir下创建myid文件,内容为它的id。所以我们配置的是集群模式,我们需要先创建myid文件。
在zookeeper安装目录下创建目录data1,data1下面创建myid 里面的内容为1,
在zookeeper安装目录下创建目录data2,data1下面创建myid 里面的内容为2,
在zookeeper安装目录下创建目录data3,data2下面创建myid 里面的内容为3。
-
第一步:将zoo.cfg复制3份
-
启动
由于所有的配置文件都在/conf文件夹下面,因此要执行三次,而且要加文件名的参数(使用的是相对路径),不然会默认执行zoo.cfg这个文件 -
验证
jps查看进程:可以看到开启了3个zk -
查看zk状态
查看leader和follower:只有一个leader
三.全分布式安装
详细步骤:
- 准备3台虚拟机,并且3台虚拟机之间免密传输
假设第一台虚拟机的ip为192.168.200.11 假设第二台虚拟机的ip为192.168.200.12 假设第三台虚拟机的ip为192.168.200.13 - 3台虚拟机都安装:
- 下载
- 解压
- 配置环境变量(1-3步同【单机安装】)
- 修改配置文件 zoo.cfg
#指定ZooKeeper数据存储目录 dataDir=/home/zookeeper-3.4.10/data #指定ZooKeeper日志存储目录 dataDirLog=/home/zookeeper-3.4.10/log #直接在文件中追加 #格式:server.服务器编号=主机名:心跳端口:选举端口 server.1=192.168.200.11:2888:3888 server.2=192.168.200.12:2888:3888 server.3=192.168.200.13:2888:3888如果三台虚拟机都设置了ip映射
[[email protected] /]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.200.11 kd01 192.168.200.12 kd02 192.168.200.13 kd03 [[email protected] /]#那么zoo.cfg也可以为:
#指定ZooKeeper数据存储目录 dataDir=/home/zookeeper-3.4.10/data #指定ZooKeeper日志存储目录 dataDirLog=/home/zookeeper-3.4.10/log #直接在文件中追加 #格式:server.服务器编号=主机名:心跳端口:选举端口 server.1=kd01:2888:3888 server.2=kd02:2888:3888 server.3=kd03:2888:3888 - 创建myid文件:
注:如果是集群模式,在我们启动zookeeper服务之前,我们需要在它的dataDir下创建myid文件,内容为它的id。所以我们配置的是集群模式,我们需要先创建myid文件。-
第一步:根据zoo.cfg配置文件中的 dataDir=/home/zookeeper-3.4.10/data,在三台虚拟机的zookeeper安装目录下创建data目录,然后创建mydi文件,并且将server.id的id添加到myid文件中。
1号虚拟机:[[email protected] /]$ mkdir /home/zookeepeer-3.4.10/data [[email protected] /]$ cd /home/zookeepeer-3.4.10/data [[email protected] data]$ echo 1 > myid2号虚拟机:
[[email protected] /]$ mkdir /home/zookeepeer-3.4.10/data [[email protected] /]$ cd /home/zookeepeer-3.4.10/data [[email protected] data]$ echo 2 > myid -
3号虚拟机:
[[email protected] /]# mkdir /home/zookeepeer-3.4.10/data [[email protected] /]# cd /home/zookeepeer-3.4.10/data [[email protected] data]$ echo 3 > myid第二步:在三台虚拟机的zookeeper安装目录下创建log目录
# mkdir /home/zookeeper-3.4.10/log
-
第一步:根据zoo.cfg配置文件中的 dataDir=/home/zookeeper-3.4.10/data,在三台虚拟机的zookeeper安装目录下创建data目录,然后创建mydi文件,并且将server.id的id添加到myid文件中。
-
启动:3台虚拟机都启动zookeeper
启动:zkServer.sh start 停止:zkServer.sh stop 查看状态:zkServer.sh status 查看进程 :jps 3台机器上都有QuorumPeerMain进程