准备3台服务器(或更多的奇数台服务器)
我这里安装了3台虚拟机,IP地址分别是
192.168.1.232
192.168.1.200
192.168.1.233
虚拟机的安装,请参考Windows安装CentOS7
建议安装后切换一下yum源,否则后面的下载可能会出现问题,yum源切换参考:CentOS7更换yum源
安装JDK,参考:CentOS7安装OpenJDK
首先为所有服务器建立新用户
建立用户参考 CentOS7建立用户 和 CentOS7添加用户到sudoers
上面三台服务器我都建立了相同的 zookeeper 用户
修改每台机器的hostname名称,参考 CentOS7修改hostname
我这里对应ip的hostname分别是
192.168.1.232(zookeeper1)
192.168.1.200(zookeeper2)
192.168.1.233(zookeeper3)
修改每台机器的 /etc/hosts 文件,添加 IP 与主机名映射
- vi /etc/hosts
-
![](https://i-blog.csdnimg.cn/blog_migrate/e25c37cc0ae5ec0b89f7a14de6d02871.png)
改完之后,用cat命令查看一下内容,确保每台服务器的hosts文件内容都是一样的
![](https://i-blog.csdnimg.cn/blog_migrate/ce47bc1f7391cf5c8d5bf9e0ede50d10.png)
![](https://i-blog.csdnimg.cn/blog_migrate/4258271ddd8c9e2f2b8e96a016ac4cc8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/43b676da5f93022fd6ec07bdbc45e314.png)
为每台服务器下载最新zookeeper文件到zookeeper用户目录中
首先切换用户为zookeeper
- su zookeeper
-
- cd /home/zookeeper/
-
- wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/stable/zookeeper-3.4.9.tar.gz
-
![](https://i-blog.csdnimg.cn/blog_migrate/8c6d085ff55cc5be5026e5f3d6dcf530.png)
在所有服务器中解压缩zookeeper文件,解压后的文件夹名称为zookeeper
- tar -zxvf zookeeper-3.4.9.tar.gz
-
![](https://i-blog.csdnimg.cn/blog_migrate/702c6467da122c49881d86e90345e2c3.png)
- mv zookeeper-3.4.9 zookeeper
-
![](https://i-blog.csdnimg.cn/blog_migrate/c2f2de7b080268790f0403cca6d7a24e.png)
在所有服务器zookeeper目录中创建data、logs目录
- mkdir /home/zookeeper/zookeeper/data
-
- mkdir /home/zookeeper/zookeeper/logs
-
![](https://i-blog.csdnimg.cn/blog_migrate/0c14cbc178a1eee03c4891ca3583927b.png)
在所有服务器的zookeeper/conf目录中,copy一份zoo_sample.cfg,并重命名为zoo.cfg
- cp /home/zookeeper/zookeeper/conf/zoo_sample.cfg /home/zookeeper/zookeeper/conf/zoo.cfg
-
- vi /home/zookeeper/zookeeper/conf/zoo.cfg
-
- tickTime=2000
- initLimit=10
- syncLimit=5
- dataDir=/home/zookeeper/zookeeper/data #修改这里
- dataLogDir=/home/zookeeper/zookeeper/logs #新增这里
- clientPort=2181
- server.1=zookeeper1:2881:3881 #新增这里
- server.2=zookeeper2:2881:3881 #新增这里
- server.3=zookeeper3:2881:3881 #新增这里
-
![](https://i-blog.csdnimg.cn/blog_migrate/2c50b366c77941467ce3edcdf2373d29.png)
在所有服务器的zookeeper/data目录中,创建myid文件,并在里面编写对应的编号,例如hostname为zookeeper1的服务器,myid内容就是1;zookeeper2服务器的myid内容就是2,以此类推,这个地方的编号,参考的是zoo.cfg中server.n的配置
- vi /home/zookeeper/zookeeper/data/myid
-
使用cat命令查看如下
![](https://i-blog.csdnimg.cn/blog_migrate/ac74005306507d72a9061408cacfecaf.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a7f16155d0612dbac0a46c35afcc2334.png)
![](https://i-blog.csdnimg.cn/blog_migrate/cb519c3f52c6d9e4b68896aa0a65ba36.png)
到此zookeeper已经安装完毕,下面分别启动所有服务器的zookeeper服务
- cd ~
-
- /home/zookeeper/zookeeper/bin/zkServer.sh start
-
所有服务器启动完毕后,可以看到
Starting zookeeper ... STARTED
然后可以通过status命令,查看当前服务器的状态
- /home/zookeeper/zookeeper/bin/zkServer.sh status
-
可以看到下面两种信息,follower表示此节点为从节点,leader表示此节点为主节点
Mode: follower
Mode: leader
![](https://i-blog.csdnimg.cn/blog_migrate/042c1f79e0b0130a5adb8ec5d4daaf21.png)
![](https://i-blog.csdnimg.cn/blog_migrate/dd8cb7f9cc6fc7e9f317b6e61fc3314b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/1bdfcdd82fe709bbdc7d89a88140fcdb.png)
停止服务,需要分别在所有服务器中执行
/home/zookeeper/zookeeper/bin/zkServer.sh stop