一、单机版安装
1、安装Zookeeper
官网地址:https://zookeeper.apache.org/
#下载安装包 wget https://mirrors.bfsu.edu.cn/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz #解压 tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz 修改文件夹名称 mv apache-zookeeper-3.6.2-bin zookeeper #创建数据保存文件夹 mkdir zookeeper/data #修改配置文件 vi zookeeper/conf/zoo_sample.cfg
主要修改数据保存的目录
dataDir=/root/rj/zk/zookeeper/data
复制zoo_sample.cfg为zoo.cfg,因为zk默认加载zoo.cfg配置文件,这里复制一份或者重命名都可以
cp zoo_sample.cfg zoo.cfg
修改profile文件
vi /etc/profile
插入内容
export ZK_HOME=/root/rj/zk/zookeeper
export PATH=$ZK_HOME/bin:$PATH
重新加载profile文件
source /etc/profile
启动zk
[root@lcl-aliyun conf]# zkServer.sh start ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
2、操作Zookeeper
#开启 [root@lcl-aliyun conf]# zkServer.sh start ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED #查看状态 [root@lcl-aliyun ~]# zkServer.sh status ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: standalone #重启 [root@lcl-aliyun ~]# zkServer.sh restart ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/bin/../conf/zoo.cfg ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED #停止 [root@lcl-aliyun ~]# zkServer.sh stop ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/bin/../conf/zoo.cfg Stopping zookeeper ... STOPPED
二、集群搭建
1、先搭建一台服务器
按照上面单机单机配置完毕后,还需要修改zoo.cfg配置文件,这里要说明一下配置server中的两个ip,2888是zk集群通讯的端口号,3888是集群leader选举的端口号,这两个端口号不局限于2888和3888,也不要求每一台都设置一样,可以随意设置,这个在搭建伪集群的时候就可以模拟。
clientPort=2181 dataDir=/root/rj/zk/zookeeper/data server.1=192.168.206.128:2888:3888 server.2=192.168.206.129:2888:3888 server.3=192.168.206.130:2888:3888 server.4=192.168.206.134:2888:3888:observer
创建myid并为myid赋值,这里主要是为了leader选举时,判断那台服务器被选举为leader的。
echo 1 > /root/rj/zk/zookeeper/data/myid
其实到这里一台服务器就配置完毕了,但是,有序多台服务器需要通讯,因此需要关闭防火墙
#临时关闭
systemctl stop firewalld.service
#禁止防火墙(开机不启动)
systemctl disable firewalld.service
启动zk节点
[root@localhost zk]# zkServer.sh start ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED
查看状态,可以看到并没有启动成功,这是因为我们配置了4个节点,其中包含三个可选举节点,因此需要至少两台服务器选举才可以成功。
[root@localhost zk]# zkServer.sh status ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Error contacting service. It is probably not running.
然后配置剩余的三台服务器,其配置方式跟上面配置一样,只有一点区别,就是observer节点需要添加peerType=observer标识,将其标记为observer
clientPort=2181 dataDir=/root/rj/zk/zookeeper/data #observer服务器特有配置 peerType=observer server.1=192.168.206.128:2888:3888 server.2=192.168.206.129:2888:3888 server.3=192.168.206.130:2888:3888 server.4=192.168.206.134:2888:3888:observer
启动server2服务器,同时查看其状态
[root@localhost logs]# zkServer.sh start ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/bin/../conf/zoo.cfg Starting zookeeper ... STARTED [root@localhost logs]# zkServer.sh status ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: leader
此时再来查看server1的状态,发现其也已经启动
[root@localhost zk]# zkServer.sh status ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: follower
然后再启动server3和server4,查看状态,都已启动成功,server4为observer
[root@localhost zk]# zkServer.sh status ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: observer
三、伪集群搭建
1、创建4个不同的配置文件
[root@lcl-aliyun conf]# cp zoo.cfg zoo1.cfg [root@lcl-aliyun conf]# cp zoo.cfg zoo2.cfg [root@lcl-aliyun conf]# cp zoo.cfg zoo3.cfg [root@lcl-aliyun conf]# cp zoo.cfg zoo4.cfg [root@lcl-aliyun conf]# ls configuration.xsl zoo1.cfg zoo3.cfg zoo.cfg log4j.properties zoo2.cfg zoo4.cfg zoo_sample.cfg
2、修改配置文件
修改zoo1.cfg--zoo4.cfg文件,修改端口号及目录,同时添加通讯端口和选举端口,并设置server.4为observer,在observer服务器中添加peerType=observer标识。
clientPort=2181 dataDir=/root/rj/zk/zookeeper/data1
#observer服务器特有配置 peerType=observer
server.1=8.131.245.53:2666:3666 server.2=8.131.245.53:2777:3777 server.3=8.131.245.53:2888:3888 server.4=8.131.245.53:2999:3999:observer
创建数据存放目录
mkdir /root/rj/zk/zookeeper/data1 /root/rj/zk/zookeeper/data2 /root/rj/zk/zookeeper/data3 /root/rj/zk/zookeeper/data4
创建myid文件并为myid文件赋值
[root@lcl-aliyun conf]# echo 1 > /root/rj/zk/zookeeper/data1/myid [root@lcl-aliyun conf]# echo 2 > /root/rj/zk/zookeeper/data2/myid [root@lcl-aliyun conf]# echo 3 > /root/rj/zk/zookeeper/data3/myid [root@lcl-aliyun conf]# echo 4 > /root/rj/zk/zookeeper/data4/myid
启动服务器
zkServer.sh start /root/rj/zk/zookeeper/conf/zoo1.cfg
zkServer.sh start /root/rj/zk/zookeeper/conf/zoo2.cfg
查看状态
[root@lcl-aliyun logs]# zkServer.sh status /root/rj/zk/zookeeper/conf/zoo2.cfg ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/conf/zoo2.cfg Client port found: 2182. Client address: localhost. Client SSL: false. Mode: leader [root@lcl-aliyun logs]# zkServer.sh status /root/rj/zk/zookeeper/conf/zoo1.cfg ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/conf/zoo1.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: follower
集群启动成功,然后再启动剩余的两个虚拟主机,启动后查看状态
[root@lcl-aliyun logs]# zkServer.sh status /root/rj/zk/zookeeper/conf/zoo3.cfg ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/conf/zoo3.cfg Client port found: 2183. Client address: localhost. Client SSL: false. Mode: follower [root@lcl-aliyun logs]# zkServer.sh status /root/rj/zk/zookeeper/conf/zoo4.cfg ZooKeeper JMX enabled by default Using config: /root/rj/zk/zookeeper/conf/zoo4.cfg Client port found: 2184. Client address: localhost. Client SSL: false. Mode: observer