作为程序员的我们可能都知道,在公司开发过程中如果不是leader和架构,很少有机会自己搭建软件的架构。zookeeper作为Java程序相对来说安装起来很容易,解压即可,省去了编译的过程。可能对于没有了解的小白听到集群感觉很高大上的样子,其实所有的知识都一样,当你学习多了,好多的知识都是相通的,好了废话不多说了,下面开始搭建。
一、准备工作
1、如果你的资源充沛,可以搞几台linux服务器(这里上一篇文章说过这里最好使用2n+1 :为了更充分的利用资源),如果没条件就准备一台虚拟机(这里对虚拟机的安装和linux服务器的安装就不做过多的赘述)
2、下载zookeeper压缩包(最新版直接到官网下载: https://zookeeper.apache.org/ 历史版本:http://archive.apache.org/dist/zookeeper/)这里使用的是3.4.6版本
3、下载jdk压缩包() https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
二、jdk安装
首先看一下你的你的linux服务器有没有安装jdk(java -version) 如果没有进行安装 如果已经安装可以略过jdk的安装
1、使用xshell 和 xftp 连接服务器 ,使用 Xftp 将jdk压缩包上传到服务器上, 建立文件夹/usr/local/java/ ,将文件拷贝到建好的文件夹 , 解压。
mkdir -p /usr/local/java/ ----> mv jdk-8u261-linux-x64.tar.gz /usr/local/java/ -----> tar xf jdk-8u261-linux-x64.tar.gz
2、配置环境变量:
export JAVA_HOME=/usr/local/java/jdk1.8.0_261 export JRE_HOME=/usr/local/java/jdk1.8.0_261/jre export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
3、配置完成后需要让配置文件生效:source /etc/profile
测试安装成功 :java -version 出现Java版本即为成功
三、zookeeper安装
这里搭建以最少数量3台机器为例:在虚拟机建立三台linux服务器 , 使用 ip addr 查看ip地址记录下来
1、建立文件夹 :进入opt 文件夹 , 在opt下创建dongl文件 mkdir /dongl/
2、使用xftp将下载好的zookeeper压缩包上传到/opt/dongl/ 文件夹下 然后解压--------> 解压 文件: tar xf zookeeper-3.4.6.tar.gz
3、进入zookeeper文件夹内 :cd opt/dongl/zookeeper-3.4.6
这里有bin/----->里面有很多的脚本命令
conf/ ------>里面有zoo_sample.cfg配置文件
4、(zookeeper启动默认加载的是zoo.cfg) 所以需要拷贝一份或者将zoo_sample.cfg改名 这里进行拷贝 cp zoo_sample.cfg zoo.cfg
5、进入zoo.cfg 进行配置文件的修改:vi zoo.cfg
tickTime=2000(心跳时间)
initLimit=10 当有一个从节点追随一个主节点时 主节点可以忍受2000*10这么长时间的初始延迟
syncLimit=5 同步时间为2000*5 如果leader 下发同步数据的命令在10s没回复认为follower有问题
dataDir=/**/**/ 存放临时数据 修改目录名 dataDir=/var/dongl/zk
clientPort=2181 客户端连接zookeeper进程使用的端口号
maxClientCnxns=60 zookeeper最大连接数
配置集群server信息:
server.1=192.168.247.132:2888:3888
server.2=192.168.247.133:2888:3888
server.3=192.168.247.134:2888:3888
3888---->当zookeeper主节点(leader)挂掉后 他们通过3888建立连接 ---->选出一个leader--->leader会起一个2888的端口,其他foller通过2888和leader建立socate连接,之后他们的所有通信都在这个2888下进行 前面的1234 为了快速选出leader
6、创建 var/dongl/zk 文件夹 mkdir -p /var/dongl/zk 进入var/dongl/zk 之后持久化的数据会在这个目录下
这个目录下还要放一个东西:myid -----> vi myid ---> 写入上面配置服务的id 即为 server.1 就为1 --->退出
7、配置环境变量:进入profile文件: cd /etc/ ------> vi profile
export JAVA_HOME=/usr/local/java/jdk1.8.0_261 export JRE_HOME=/usr/local/java/jdk1.8.0_261/jre export ZOOKEEPER_HOME=/opt/dongl/zookeeper-3.4.6 export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ZOOKEEPER_HOME/bin export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
8、让profile生效 : source /etc/profile 测试配置是否成功:zk +tal键 会出现命令
到这里单机的zookeeper就安装好了剩下两台机器的安装和上面的相同
9、下面需要将第一台配置好的机器的zookeeper信息copy到另外的集群机器中:
发起一个远程的copy :
scp -r ./dongl/ 192.168.247.133>'pwd'
scp -r ./dongl/ 192.168.247.134>'pwd'
进入另外的机器 查看 配置文件 cd opt/dongl/zookeeper-3.4.6/conf ---->vi zoo.cfg
分别建立/var/dongl/zk 目录 mkdir -p /var/dongl/zk ---->echo 2 > /var/dongl/zk/myid ----> cat /var/dongl/zk/myid 会看到文件中存放一个2
依次给下面的几台机器同样的操作
10、使用命令启动:zkServer.sh help 可以查看命令详情 依次使用 zkServer.sh start 启动 -------->zkServer.sh status 查看状态
四、【总结】
到这里zookeeper的简单集群就搭建好了,是不是也没有想象那么困难 如果有疑问可以互相讨论