简介
本篇是从实战出发,搭建zookeeper集群。zookeeper可以当做一个内存数据库(但是只是存少量配置数据,不能存大量数据),主要是对项目配置做集中管理、服务的注册发现、分布式锁等等。
前置条件
准备奇数台虚拟机,最少3台,我这里准备了4台,目的是偶数台比较复杂,方便以后学习用。
node01、node02、node03、node04这4台虚拟机
- 配置好ip、hostname等等
- 安装好jdk,我这里是jdk1.8,并配置好环境变量。shell命令jps可用即可。
安装zookeeper
官网下载二进制安装文件
新版本的安装文件名中含有bin,所以我下载的是zookeeper-3.7.0-bin.tar.gz
[root@node01 ~]# cd soft
[root@node01 soft]# wget https://downloads.apache.org/zookeeper/current/apache-zookeeper-3.7.0-bin.tar.gz
解压并移动到指定目录
我移动到了/opt/mmm/zk目录下
[root@node01 soft]# tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
[root@node01 soft]# mv apache-zookeeper-3.7.0-bin /opt/mmm/zk/
复制并修改配置文件
[root@node01 zk]# cd apache-zookeeper-3.7.0-bin/conf
[root@node01 conf]# cp zoo_sample.cfg zoo.cfg
[root@node01 conf]# vi zoo.cfg
##zookeeper的数据存放目录
dataDir=/var/mmm/zk
##集群配置
server.1=node01:2888:3888
server.2=node02:2888:3888
server.3=node03:2888:3888
server.4=node04:2888:3888
配置myid
每个节点都有自己的myid,与zoo.cfg中的server.x=node0x:2888:3888相对应
[root@node01 conf]# mkdir -p /var/mmm/zk
[root@node01 conf]# echo 1 > /var/mmm/zk/myid
配置zookeeper的环境变量
[root@node01 conf]# vi /ect/profile
export JAVA_HOME=/usr/java/default
export ZOOKEEPER_HOME=/opt/mmm/zk/apache-zookeeper-3.7.0-bin
export PATH=$PATH:$JAVA_HOME/bin:$ZOOKEEPER_HOME/bin
[root@node01 conf]# source /ect/profile
分发zookeeper安装目录和环境变量文件到其它节点
执行scp命令,并输入其它节点的密码即可
最后执行source /ect/profile 使环境变量生效
[root@node01 conf]# cd ../../
[root@node01 zk]# scp -r apache-zookeeper-3.7.0-bin node02:·pwd·
[root@node01 zk]# scp -r apache-zookeeper-3.7.0-bin node03:·pwd·
[root@node01 zk]# scp -r apache-zookeeper-3.7.0-bin node04:·pwd·
[root@node01 zk]# scp /etc/profile node02:/etc/
[root@node01 zk]# scp /etc/profile node03:/etc/
[root@node01 zk]# scp /etc/profile node04:/etc/
其它节点配置myid
[root@node02 ~]# echo 2 > /var/mmm/zk/myid
[root@node03 ~]# echo 3 > /var/mmm/zk/myid
[root@node04 ~]# echo 4 > /var/mmm/zk/myid
启动zookeeper
[root@node01 ~]# zkServer.sh start
[root@node02 ~]# zkServer.sh start
[root@node03 ~]# zkServer.sh start
[root@node04 ~]# zkServer.sh start
客户端连接
[root@node01 ~]# zkCli.sh