zookeeper有两种运行模式:集群模式和单机模式。
下载zookeeper安装包:http://apache.fayea.com/zookeeper/
下载完成,通过 tar -zxvf 解压。
一般情况下,在开发测试环境,没有这么多资源的情况,而且也不需要特别好的稳定性的前提下,我们可以使用单机部署。
初次使用zookeeper,需要将conf目录下的zoo_sample.cfg文件copy一份重命名为zoo.cfg修改dataDir目录,dataDir表示日志文件存放的路径。
在zookeeper集群中,各个节点总共有三种角色,分别是:leader\follower\observer集群模式,采用模拟3台机器来搭建zookeeper集群。分别复制安装包到三台机器上并解压,同时copy一份zoo.cfg。
-
修改配置文件
server.1=IP1:2888:3888【2888:访问zookeeper的端口,3888:重新选举leader的端口】
server.2=IP2:2888:3888
server.3=IP3:2888:3888
其格式为:server.A=B:C:D
A:是一个数字,表示这个是第几号服务器
B:是这个服务器的IP地址
C:表示的是这个服务器于集群中的Leader服务器交换信息的端口
D:表示的是万一集群中的Leader服务器挂了,需要一个端口来重新进行选举,选出一个新Leader。而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于B都是一样,所以不同的Zookeeper实例通信端口号不能一样,所以要给他们分配不同的端口号。
在集群模式下,集群中每台机器都需要感知到整个集群是由哪几台机器组成的,在配置文件中,按照格式server.id=host:prot:port,每一行代表一个机器配置。id:指的是server ID,用来标识机器在集群中的机器序号。
-
新建dataDir目录,设置myid
在每台zookeeper机器上,都需要在数据目录(dataDir)下创建一个myid文件,该文件只有一行内容,对应每台机器的ServerID数字。比如:server.1的myid文件内容就是1.【必须确保每个服务器的myid文件中的数字不同,并且和自己所在机器的zoo.cfg中server.id的id值一致,id的范围是1-255】
-
启动zookeeper。
参考在https://hub.docker.com中搜索zookeeper在镜像介绍中又使用docker镜像安装单机和集群环境的详细说明。
docker机器上新建文件:stack.yml,将项目内容复制到yml文件中。
services:
zoo1:
image: zookeeper
restart: always
hostname: zoo1
ports:
- 2181:2181
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo2:
image: zookeeper
restart: always
hostname: zoo2
ports:
- 2182:2181
environment:
ZOO_MY_ID: 2
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181
zoo3:
image: zookeeper
restart: always
hostname: zoo3
ports:
- 2183:2181
environment:
ZOO_MY_ID: 3
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181
然后使用命令 docker-compose -f stack.yml up
如果没有安装docker-compose 参考docker的官方文档:https://docs.docker.com/compose/install/
等待启动完成后使用:./zkCli.sh -server 宿主机IP:2181 即可登录。
启动ZK服务:
bin/zkServer.sh start
查看 ZK 服务状态:
bin/zkServer.sh status
停止 ZK 服务:
bin/zkServer.sh stop
重启 ZK 服务:
bin/zkServer.sh restart
连接服务器
zkCli.sh -timeout 0 -r -server ip:port
创建目录
mkdir -p /usr/local/soft/zookeeper
cd /usr/local/soft/zookeeper
下载解压
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz
tar -zxvf zookeeper-3.4.9.tar.gz
cd zookeeper-3.4.9
mkdir data
mkdir logs
修改配置文件
cd conf
cp zoo_sample.cfg zoo.cfg
修改zoo.cfg
# 数据文件夹
dataDir=/usr/local/services/zookeeper/zookeeper-3.4.9/data
# 日志文件夹
dataLogDir=/usr/local/services/zookeeper/zookeeper-3.4.9/logs
配置环境变量
vim /etc/profile
在尾部追加
# zk env
export ZOOKEEPER_HOME=/usr/local/soft/zookeeper/zookeeper-3.4.9/
export PATH=$ZOOKEEPER_HOME/bin:$PATH
export PATH
编译生效
source /etc/profile
启动ZK
cd ../bin
zkServer.sh start
查看状态
zkServer.sh status