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
打开配置文件准备修改写入配置文件
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/
配置环境变量
打开配置文件准备在末尾修改写入配置文件
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