最近在看《从Paxos到Zookeeper分布式一致性原理与实践》这本书,项目中要用Zookeeper来做集群,先来记录一下集群环境的搭建。
1、我们准备三台互相联网的Linux机器;(可以用VM创建3台虚拟机,系统镜像使用Centos7)
CentOS7镜像下载地址:http://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso
附:VM安装后,网络适配器一般默认为NAT模式,如果创建的虚拟机不能联网,可以输入命令
vi /etc/sysconfig/network-scripts/ifcfg-ens33 对配置文件进行编辑,将ONBOOT=no改为ONBOOT=yes,点击Esc,输入:wq!保存退出。如图
这里的ens33为网卡,可以使用ip addr或ifconfig来查看自己网卡,如图是我的虚拟机网卡
2、由于Zookeeper基于Java开发,所以需要安装Java运行环境;
下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
这里选择Java8 linux 64位压缩包下载
配置好Java环境变量
vi /etc/profile 在最后加入
#JDK全局环境变量配置
export JAVA_HOME=/opt/jdk1.8.0_251
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
点击Esc,输入:wq!保存退出;
使用命令source /etc/profile使环境变量即刻生效;键入java可查看是否配置成功,如图
3、下载Zookeeper安装包
下载地址:https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.6.1/apache-zookeeper-3.6.1-bin.tar.gz
这里我用的3.6.1版本(截止2020年6月份最新的稳定版本),下载后解压,这里我解压到/opt/apache-zookeeper-3.6.1-bin目录。
我们进入cd /opt/apache-zookeeper-3.6.1-bin/conf/目录将zoo_sample.cfg文件重命名为zoo.cfg,并按如下配置做简单修改
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/var/lib/zookeeper
clientPort=2181
#分别对应三台服务器,server.1,server.2,server.3,这里的数字需要在dataDir目录下创建一个名为myid的文件,在该文件第一行写上一个数字,与这里的1,2,3对应。id的范围为1-255. IP对应三台服务器IP
server.1=192.168.25.128:2888:3888
server.2=192.168.25.129:2888:3888
server.3=192.168.25.130:2888:3888
对另外两台机器做同样配置即刻。
注意:myid文件中数字必须与zoo.cfg中配置的编号对应。
这里我们的机器一myid内容为数字1,机器二myid内容为数字2,机器三myid内容为数字3。
至此,我们的基本配置完毕,可以使用zkServer.sh来启动Zookeeper。如下:
[root@localhost bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.6.1-bin/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
4、验证服务启动是否正常。
使用telnet连接到2181端口,如下:
[root@localhost bin]# telnet 127.0.0.1 2181
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
而后键入 stat 查看状态:
stat
Zookeeper version: 3.6.1--104dcb3e3fb464b30c5186d229e00af9f332524b, built on 04/21/2020 15:01 GMT
Clients:
/127.0.0.1:49786[0](queued=0,recved=1,sent=0)
Latency min/avg/max: 0/0.0/0
Received: 1
Sent: 0
Connections: 1
Outstanding: 0
Zxid: 0x300000000
Mode: follower
Node count: 5
Connection closed by foreign host.
输出以上信息,意味着我们的服务启动正常了。
注意:如果输入stat出现如下提示,说明你只启动了一台服务器的Zookeeper,未组成集群
stat
This ZooKeeper instance is not currently serving requests
另外若telnet命令未安装,可使用yum install telnet来安装telnet客户端。
结束。
如果电脑配置不是很好的话,Zookeeper提供单机模式,一般开发测试环境我们可以用一台机器来运行Zookeeper,这里我们只需要将zoo.cfg文件做如下修改重启ZK即可。
tickTime=2000
initLimit=5
syncLimit=2
dataDir=/var/lib/zookeeper
clientPort=2181
server.1=192.168.25.128:2888:3888