zookeeper集群的搭建
1:包下载
地址:https://zookeeper.apache.org/
2:服务器准备并做一些前置工作
1:安装jdk的运行环境
2:分发服务器脚本
然后是集群环境下,多台服务器,有些操作是一样的,所以为了方便,先弄个同步的脚本
由于我创建的linux是个简洁版,目前还没有xsync的命令,所以先安装一下它
yum -y install rsync
然后修改每个服务器的hosts文件
把服务器地址和名称映射一下,方便后面操作
然后再133主要的操作服务器的/bin目录下,创建xsync脚本文件。内容如下:
vim /bin/xsync
文件内容
#!/bin/bash #1 没有参数,退出 pcount=$# if((pcount==0)); then echo no args; exit; fi #2 获取文件名 p1=$1 fname=`basename $p1` echo fname=$fname #3 获取上级的目录到绝对路径 pdir=`cd -P $(dirname $p1); pwd` echo pdir=$pdir #4 获取当前的用户名称 user=`whoami` #5 循环执行同步 for((host=133; host<=135; host++)); do echo ------------------- cluster-$host -------------- rsync -av $pdir/$fname $user@cluster$host:$pdir done
3:ssh免密登录
完成后,执行一下同步jdk的命令
xsync /opt/souftware/jdk-8u152-linux-x64.tar.gz
从图中,可以看出,这样的话,链接是要输入用户名和密码的,所以为了方便,把ssh免密登录也配置一下
在133主服务器上执行命令:
ssh-keygen -t rsa
然后copy到其他两台机器上
命令:
ssh-copy-id cluster134
然后再试一下同步命令
3:安装zk
1:解压zk包
在zk包目录下执行解压命令,并解压到指定目录下
tar -zxvf apache-zookeeper-3.9.1-bin.tar.gz -C /opt/installs/
2:修改配置文件
解压目录的bin目录下是一些命令脚本,conf是配置文件,先打开配置文件,有些需要修改一下
把这个sample名字最好改一下
然后编辑它
可以回到解压根路径下,创建一个自己的名字,我这里就叫zkData。所以配置路径如下
然后可以先单节点启动一下,确保它是正常的
命令:
bin/zkServer.sh star
用jps查看它的状态
可以在启动客户端 进入查看
bin/zkCli.sh
进去以后执行查看根节点的命令
ls /
4:集群安装
1:创建集群myid文件
》首先在数据目录下,也就是zkData下,创建文件,命名为:myId
注意这个名字不能变,因为源码里面写的是这样的一个文件名!!然后在里面输入一个数字,源码里面是个数字类型,代表着集群节点的身份,当然它必须唯一,而且这个必须在第一行写,同样的源码里面只读了一行
然后使用同步脚本,把整个zk的目录分发到另外两台服务器上!分发完后第一步 一定要改这个myid文件
2:配置集群信息
》在主服务器133上,编辑配置文件,把集群相关的通信端口进行配置
配置内容如下:
server.3=cluster133:2888:3888 server.4=cluster134:2888:3888 server.5=cluster135:2888:3888
其中server.n,这个n其实就是myid里面的内容,当然后面对应的服务器也必须是相对应的地址,2888是老大和小弟之间通信端口,3888是老大掉线时,小弟之间需要一个新的端口进行选举的通信
然后同步到其他服务器
xsync zoo.cfg
4:开放端口号
启动之前,可以把端口访问权限放开。如果是本地玩的话,把防火墙关闭也是可以的。
把2181、2888、3888放开
4:启动集群
三台都执行启动命令:
bin/zkServer.sh start
如果立刻用查看状态命令的话,会发现都是报错状态,说某个节点没启动,所以需要等一会儿然后再查看状态
bin/zkServer.sh status
另一个当然也是小弟节点
5:模拟老大下线的状态
然后看另外两台的状态,135成为新的老大,133自然是小弟
然后再把134启动。它变成了小弟状态
6:创建节点
命令:create /节点名称 值
create /test abcdef
然后到另外两台服务器上 看看有没有这个节点