在一台服务器搭建 zk 伪集群,也就是同一台机器上跑几个 zk,下面搭建三台 zk 的伪集群。
安装
下载并解压 zk 压缩包
// 下载带 bin 的包,不然可能会报 Error: Could not find or load main class ... 错误
$ wget http://archive.apache.org/dist/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz
$ tar zxvf apache-zookeeper-3.6.1-bin.tar.gz
移动 apache-zookeeper-3.6.1 到指定目录,这里可以根据自己的意愿移动到指定的目录
$ mv apache-zookeeper-3.6.1-bin /usr/tools/apache-zookeeper-3.6.1
配置
进入 apache-zookeeper-3.6.1 的 conf 目录下,并复制配置文件
$ cd /usr/tools/apache-zookeeper-3.6.1
$ cp zoo_sample.cfg zoo-1.cfg
vi zoo1.cfg
打开配置文件
tickTime=2000 # zk 服务器之间,或者客户端与服务器之间维持心跳的时间间隔,每个 tickTime 发送一个请求
initLimit=10 # zk 中 leader 接受 follwer 服务器初始化连接时,最长能接受多少个 tickTime 的时间间隔,2000 * 10 = 20000(ms)
syncLimit=5 # Leader 与 follwer 之间发送消息,请求和应答的时间长度,最长不超过多少个 tickTime 的时间间隔
dataDir=/usr/tools/apache-zookeeper-3.6.1/data1 # zk 保存目录的地方
clientPort=2181 #客户端连接 zk 服务器的端口,zk 监听这个端口,接受客户端请求
#server.a=b:c:d , a:表示第几号服务器,b:服务器的ip地址,
#c:集群中与 leader 交换信息的端口,d:当 leader 服务器挂了,通过这个端口来重新选举 leader
#因为是在同一台机器上搭建的伪集群,所有 c,d 都不能一样
server.1 = 127.0.0.1:2881:3881
server.2 = 127.0.0.2:2882:3882
server.3 = 127.0.0.3:2883:3883
将 zoo1.cfg 分别复制两份 zoo2.cfg, zoo3.cfg
$ cp zoo1.cfg zoo2.cfg
修改 zoo2.cfg 文件
dataDir=/usr/tools/apache-zookeeper-3.6.1/data2
clientPort=2182
$ cp zoo1.cfg zoo3.cfg
修改 zoo3.cfg 文件
dataDir=/usr/tools/apache-zookeeper-3.6.1/data3
clientPort=2183
在 /usr/tools/apache-zookeeper-3.6.1
目录下,分别创建 data1,data2,data3 目录。并且在每个目录下创建 myid 文件,写入当前 zk 服务器的 id, 用于标识 zk 服务器。
$ cd /usr/tools/apache-zookeeper.3.6.1
$ mkdir data1 data2 data3
$ cd /usr/tools/apache-zookeeper.3.6.1/data1
$ vi myid
1
$ cd /usr/tools/apache-zookeeper.3.6.1/data2
$ vi myid
2
$ cd /usr/tools/apache-zookeeper.3.6.1/data3
$ vi myid
3
启动
$ cd /usr/tools/apache-zookeeper-3.6.1/bin
$ ./zkServer.sh start-foreground conf/zoo1.cfg
$ ./zkServer.sh start-foreground conf/zoo2.cfg
$ ./zkServer.sh start-foreground conf/zoo3.cfg
使用 start-foreground 前台启动程序的命令,程序会在当前 console 中运行,如果使用 supervisord 管理 zk 进程的话,则需要使用 start-foreground 启动,否则会报错。
Zookeeper 服务命令
1. 启动ZK服务: sh bin/zkServer.sh start
2. 查看ZK服务状态: sh bin/zkServer.sh status
3. 停止ZK服务: sh bin/zkServer.sh stop
4. 重启ZK服务: sh bin/zkServer.sh restart
zkCli 连接服务器命令
连接服务器,可以连接本地,或者远程 zk 服务器。
使用命令 ./zkCli.sh -server IP:端口
$ cd /usr/tools/apache-zookeeper-3.6.1/bin
#连接本地 zk 服务器
$ ./zkCli.sh -server localhost:2182
参考链接:
https://dubbo.apache.org/zh-cn/docs/admin/install/zookeeper.html