一、zookeeper简介
ZooKeeper 是一种用于分布式应用程序的分布式开源协调服务。它是一个为分布式应用提供高一致性服务的软件,可以使用它实现负载均衡、配置管理,命名服务等功能
二、单节点安装
以下安装以3.6.4版本为例进行讲解
1、获取安装包并解压
cd $HOME/middle
wget -c https://dlcdn.apache.org/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz
tar -zxvf apache-zookeeper-3.6.4-bin.tar.gz
2、zookeeper目录结构
yiifung@master01 apache-zookeeper-3.6.4-bin]$ ll
total 36
drwxr-xr-x. 2 yiifung yiifung 4096 Dec 18 2022 bin --------------启动脚本以及命令行所在位置
drwxr-xr-x. 2 yiifung yiifung 77 Dec 18 2022 conf --------------配置文件所在位置
drwxr-xr-x. 5 yiifung yiifung 4096 Dec 18 2022 docs ------------文档文件
drwxrwxr-x. 2 yiifung yiifung 4096 Jul 31 21:18 lib
-rw-r--r--. 1 yiifung yiifung 11358 Dec 18 2022 LICENSE.txt
-rw-r--r--. 1 yiifung yiifung 2084 Dec 18 2022 NOTICE.txt
-rw-r--r--. 1 yiifung yiifung 1963 Dec 18 2022 README.md
-rw-r--r--. 1 yiifung yiifung 3166 Dec 18 2022 README_packaging.md
[yiifung@master01 apache-zookeeper-3.6.4-bin]$
#配置文件目录
[yiifung@master01 apache-zookeeper-3.6.4-bin]$ cd conf/
[yiifung@master01 conf]$ ll
total 12
-rw-r--r--. 1 yiifung yiifung 535 Dec 18 2022 configuration.xsl
-rw-r--r--. 1 yiifung yiifung 3435 Dec 18 2022 log4j.properties
-rw-r--r--. 1 yiifung yiifung 1148 Dec 18 2022 zoo_sample.cfg
[yiifung@master01 conf]$
3、修改配置文件
zookeeper的配置文件是conf/zoo.cfg,可以由zoo_sample.cfg复制出来一个并修改
cd $HOME/middle/apache-zookeeper-3.6.4-bin/conf
cp zoo_sample.cfg zoo.cfg
修改后的配置文件如下所示
[yiifung@master01 conf]$ cat zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/yiifung/middle/apache-zookeeper-3.6.4-bin/data
clientPort=2181
4、启动并连接
cd /home/yiifung/middle/apache-zookeeper-3.6.4-bin/bin
[yiifung@master01 bin]$ pwd
/home/yiifung/middle/apache-zookeeper-3.6.4-bin/bin
[yiifung@master01 bin]$ ./zkServer.sh start
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /home/yiifung/middle/apache-zookeeper-3.6.4-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[yiifung@master01 bin]$
连接zookeeper服务器
[yiifung@master01 bin]$ ./zkCli.sh -server 127.0.0.1:2181
[zk: 127.0.0.1:2181(CONNECTED) 0] ls
ls [-s] [-w] [-R] path
[zk: 127.0.0.1:2181(CONNECTED) 1] ls /
[zookeeper]
[zk: 127.0.0.1:2181(CONNECTED) 2]
三、集群安装
对于集群模式,至少需要三台服务器,如果只有两台服务器,则如果其中一台服务器发生故障,则没有足够的机器来形成多数仲裁。则该服务就无法使用,两台服务器本质上不如一台服务器稳定,因为存在两个单点故障。实际上对于集群服务来说,只要大多数节点(除了Observers之外)都启动了,该服务就会可用。所以强烈建议使用奇数台服务器,例如,对于四台机器,ZooKeeper只能处理一台机器的故障;如果两台计算机发生故障,则其余两台计算机不构成多数,所以四台与三台是一样的,但是,使用五台机器,ZooKeeper可以处理两台机器的故障。
通常,三台服务器对于生产安装来说绰绰有余,但为了在维护期间获得最大的可靠性,一般安装五台服务器。对于三台服务器,如果对其中一台服务器执行维护,则在该维护期间,其他两台服务器之一很容易出现故障。如果你有五个正在运行,你可以把一个拿下来进行维护,并且如果其他四个中的一个突然出现故障,该服务仍然可以正常运行。
冗余注意事项应包括环境的所有方面。如果您有三台 ZooKeeper 服务器,但它们的网络电缆都插入同一个网络交换机,那么该交换机的故障将使服务整体瘫痪。
环境准备
IP | 主机名 | 操作系统版本 | zookeeper节点 |
---|---|---|---|
192.168.168.128 | master01 | CentOS Linux release 7.9.2009 (Core) | server.1 |
192.168.168.127 | master02 | CentOS Linux release 7.9.2009 (Core) | server.2 |
192.168.168.126 | master03 | CentOS Linux release 7.9.2009 (Core) | server.3 |
在每台机器上执行如下操作
cd $HOME/middle
wget -c https://dlcdn.apache.org/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz
tar -zxvf apache-zookeeper-3.6.4-bin.tar.gz
cd $HOME/middle/apache-zookeeper-3.6.4-bin
cd conf
cat <<EOF >zoo.cfg
tickTime=2000
dataDir=/home/yiifung/middle/apache-zookeeper-3.6.4-bin/data
clientPort=2181
initLimit=5
syncLimit=2
server.1=192.168.168.128:2888:3888
server.2=192.168.168.127:2888:3888
server.3=192.168.168.126:2888:3888
EOF
在server.N对应的服务器上将server.N中的N值输入到myid文件中
echo 1 >/home/yiifung/middle/apache-zookeeper-3.6.4-bin/data/myid
启动
../bin/zkServer.sh start
连接
../bin/zkCli.sh -server 192.168.168.128:2181
../bin/zkCli.sh -server 192.168.168.127:2181
../bin/zkCli.sh -server 192.168.168.126:2181
集群状态检查
[yiifung@master01 data]$ ../bin/zkServer.sh status
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /home/yiifung/middle/apache-zookeeper-3.6.4-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader
[yiifung@master01 data]$
zkServer命令
[yiifung@master02 logs]$ ../bin/zkServer.sh --help
/usr/bin/java
ZooKeeper JMX enabled by default
Using config: /home/yiifung/middle/apache-zookeeper-3.6.4-bin/bin/../conf/zoo.cfg
Usage: ../bin/zkServer.sh [--config <conf-dir>] {start|start-foreground|stop|version|restart|status|print-cmd}