环境准备
在官网上下载zookeeper软件包, 较新的版本
,需要下载名后面以-bin结尾的,不带-bin的是源码。
博主使用的软件版本以及服务器:
- zookeeper版本:apache-zookeeper-3.6.2-bin.tar.gz
- 服务器:Ubuntu 18.04.5 LTS
单机部署
- 使用解压命令解压文件 tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz
- 进入解压之后的目录 cd apache-zookeeper-3.6.2-bin
- 在zookeeper的根目录创建data目录
- 进入conf目录,把zoo_simple.cfg 更名未zoo.cfg (cd conf | mv zoo_simple.cfg zoo.cfg)
- 编辑zoo.cfg,把dataDir目录指定到第三步创建的data目录路径。(dataDir=/usr/local/src/apache-zookeeper-3.6.2-bin/data)
- 进入bin目录,启用server (./zkServer.sh start)
控制台打印下面的信息则表示启动成功
如果打印为下面信息,则表示没启动成功
启动失败的原因, 可以使用./zkServer.sh start-foreground 打印出启动包错的原因
如果是报的端口已经被占用,那么可以修改conf/zoo.cfg中admin.serverPort 来指定端口号(默认文件中是没这个属性的)
再次启动则会启动成功
伪集群部署
伪集群环境(把多个zookeeper部署在同一个服务器上),跟单机环境配置大体差不多。
- 创建一个根目录,名为zookeeperCluster
- 使用解压命令解压文件 tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz -C zookeeperCluster
- 复制2份解压之后的目录名, 分别名为01,02,03
- 在01,02,03的根目录 创建data目录,在data目录里面创建logs目录
- 在01,02,03的data目录,分别创建myid文件,文件里面的内容,分别为1,2,3(指定当前服务的标识)
- 进入conf目录,把zoo_simple.cfg 更名未zoo.cfg (cd conf | mv zoo_simple.cfg zoo.cfg)
- 编辑zoo.cfg文件,修改dataDir=/usr/local/src/zookeeperCluster/apache-zookeeper-3.6.2-bin-01/data,dataLogDir=/usr/local/src/zookeeperCluster/apache-zookeeper-3.6.2-bin-01/data/logs(前缀以自己系统创建的目录为准)
- 在zoo.cfg最后面加上(
1,2,3
表示第5步写入到myid中的值,172.16.216.12
表示服务器内网ip,2881
为服务器之间通信端口,3881
为服务器之间的投票选举端口)
server.1=172.16.216.12:2881:3881
server.2=172.16.216.12:2882:3882
server.3=172.16.216.12:2883:3883 - 在01,02,03台的zoo.cfg中, 分别配置clientPort,需要为不同