搭建zk似乎很简单,只需要如下几步即可:
- 下载安装
- 更改配置文件
- 启动zkServer
下载
进入官网,找到Getting Started一栏,点击Download进入下载页,下载页上会列出最新的版本和最新的稳定版本(latest stable release),通常选择后者即可。当然也会有历史版本。
安装
将下载的.tar.gz 包解压到任意目录下即可,为了方便描述这里将这个任意的自定义目录+解压后的文件目录表示为{path_to_zk},如图:
图中解压在 /opt 目录下,解压后的目录是apache-zookeeper-3.7.1-bin,所以这里的{path_to_zk} 就等价于:
/opt/apache-zookeeper-3.7.1-bin
更改配置文件
进入到 {path_to_zk} 目录下,有如下目录:
进入到 conf 目录,拷贝一份配置文件(zoo_sample.cfg)并命名为 zoo.cfg
cp zoo_sample.cfg zoo.cfg
编辑zoo.cfg文件,重点是如下圈出部分,图中配置了三台机器
其中 dataDir 是zk 的数据目录,然后是配置下面的 server.n ,n 为正整数依次递增。server.n 的值分为三部分,IP+两个端口号——分别用户仲裁通信和选举通信。最后进入到 dataDir 目录下,这个目录也是可以自定义的,图中的目录是 /var/zookeeper/data ,进入后创建 myid 文件,然后将 sever.n 对应的 n 值写入 myid 文件中,按照图中的示例就是 在 192.168.227.10 这台机器上 myid 文件中的内容就是 1 ,192.168.227.11 中是 2, 192.168.227.12 中是 3,下图是查看 192.168.227.10 机器上 myid 文件的内容,值为 1 。
为了更好的理解 server.n 和 myid 的关系,下图是chatGPT的回答:
最后将zoo.cfg配置文件分发到剩下的两台机器,再在剩下的机器上创建对应myid文件并写入对应的值,配置就完成了。
Tips:
#使用 scp 命名远程拷贝,如果出现 Util ssh.server could not be found 错误
#则安装
sudo yum install openssh-server
#打开并开启服务
sudo systemctl start sshd
sudo systemctl enable sshd
启动zkServer
进入到 {path_to_zk} 目录 输入如下命令即可开启zk
#start只是在后台运行
bin/zkServer.sh start
#如果想看zk启动的日志输出,使用 start-foreground
bin/zkServer.sh start-foreground
启动第一台的时候会看到一些报错,类似于如下,只是因为另外的机器还没有启动,等剩下的机器启动完成就好了。
这样就搭建好了。
单台机器多线程
+ 单台机器的时候需要注意一下几点:
1. 不能使用同一个配置文件,需要创建 n 个配置文件,n 为要想实现的实例数。
2. 每个配置文件中 clientPort 和 server.n 中的 TCP 端口号都需要不一样
3.创建n个数据目录,并创建对应的myid
4. 启动时指定不同的配置文件