Zookeeper安装

安装JDK

Zookeeper使用Java编写,依赖的JDK版本为1.6+,因此zookeeper的运行需要Java环境的支持。

所以我们需要先安装JDK。

查看yum包含的jdk版本

yum search java

或者

yum list java*

选择JDK版本

上面命令列出了JDK的各个版本,这里我们选择java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment

yum install java-1.8.0-openjdk-devel.x86_64

可以在以下网站下载到zookeeper的安装包

配置全局变量

whereis java
ll /usr/bin/java
ll /usr/lib/jvm

配置全局变量的JAVA_HOME路径
配置全局变量的JAVA_HOME路径

打开配置文件准备修改写入配置文件

vi /etc/profile

复制以下三行到文件末尾中,按Insert进入编辑,按esc退出编辑模式,输入:wq保存退出(这里的JAVA_HOME以自己实际的目录为准)

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.232.b09-0.el7_7.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

添加在末尾
添加在末尾

重启全局变量立即生效

source /etc/profile

查看安装jdk是否成功

java -version

如果输入如下信息,就代表安装成功了~

openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)

安装Zookeeper

下载Zookeeper压缩包

因为我们是为了elastic-job准备的环境,所以这里我们选择安装Zookeeper 3.4.6的版本

到这里下载,因为镜像站没有这个资源只能官网下。

我本地虚拟机安装的是mini版本所以很多命令都没得,需要安装,如wget

yum install wget

但是我发现速度实在太慢了,就用了一台美国VPS下载了这个压缩包,再用sz 命令下载到本地再用rz上传到虚拟机。安装rzsz命令如下

yum install lrzsz

wget下载:

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/

解压Zookeeper

解压压缩包,并放置到/usr/local/目录下

tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local/

zk目录
zk目录

配置环境变量

打开配置文件准备在末尾修改写入配置文件

vi /etc/profile

复制以下两行到文件中(这里的ZOOKEEPER_INSTALL以自己实际的目录为准)

export ZOOKEEPER_INSTALL=/usr/local/zookeeper-3.4.6/
export PATH=$PATH:$ZOOKEEPER_INSTALL/bin

执行如下命令使得全局变量生效

source /etc/profile

配置文件修改

创建data目录,下面配置数据目录需要

mkdir data

进入Zookeeper文件所在路径,将zoo.sample.cfg拷贝出一份名字叫zoo.cfg

cd /usr/local/zookeeper-3.4.6/conf/
cp zoo_sample.cfg zoo.cfg
vi zoo.cfg

将zoo.cfg内容修改为:

# 时间参数
tickTime=2000
initLimit=10
syncLimit=5

# 镜像相关参数
autopurge.snapRetainCount=48
autopurge.purgeInterval=1

# 数据目录
dataDir=/usr/local/zookeeper-3.4.6/data

# 端口
clientPort=51903

# zk服务器地址
server.1=192.168.47.68:51904:51905
#server.2=192.168.47.69:51904:51905
#server.3=192.168.47.70:51904:51905

创建myid,在前一个步骤的zoo.cfg文件里面配置dataDir=/usr/local/zookeeper-3.4.6/data, 在这个文件夹里面创建myid文件, 内容是ZK服务器地址里面的序列号。

vi /usr/local/zookeeper-3.4.6/data/myid

myid文件中只有一个数字,即一个Server ID。例如,server.1 的myid文件内容就是“1”。注意,请确保每个server的myid文件中id数字不同,并且和server.id=host:port:port中的id一致。另外,id的范围是1~255。

注:如果配置三个服务就成了构成了集群

启动Zookeeper

zkServer.sh start

查看zk是否启动了

zkServer.sh status

如果如下就说明启动成功

[root@localhost conf]# zkServer.sh start
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@localhost conf]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: standalone

进入ZK客户端

我们本地起一个elastic-job项目连接到ZK来实验一下。

执行如下命令进入客户端:

sh zkCli.sh -server 127.0.0.1:51903

窗口显示如下消息:


WATCHER::

WatchedEvent state:SyncConnected type:None path:null
[zk: 127.0.0.1:51903(CONNECTED) 0]//这里敲命令

即说明进入了ZK

使用ls /查看节点

[zk: 127.0.0.1:51903(CONNECTED) 2] ls /

elastic-job-example-lite-spring   zookeeper

我们注意到elastic-job-example-lite-spring这个是我们本地项目启动的时候注册到zk的节点名称。

使用quit退出。

集群化ZK

我们配置一台之后就可以使用克隆功能再复制2台出来,修改zoo.cfg(如下所示)和ip(见上篇)即可组成集群。

# zk服务器地址
server.1=192.168.47.68:51904:51905
server.2=192.168.47.69:51904:51905
server.3=192.168.47.70:51904:51905

分别启动之后就会触发选举,如下我们就可以知道主节点是68,69,70是从节点

[root@68 ~]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: leader

[root@69 conf]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower

[root@70 ~]# zkServer.sh status
JMX enabled by default
Using config: /usr/local/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower

如果显示的是

JMX enabled by default

Using config: /usr/local/zk/bin/../conf/zoo.cfg

Error contacting service. It is probably not running.

那么有可能是你防火墙没关,由于是虚拟机环境,我们直接关闭防火墙,如果是生产环境建议使用开放端口的方式操作
centos7

#查看防火墙状态
firewall-cmd --state
#关闭防火墙
systemctl stop firewalld.service