伪集群
伪集群就是在一台机器上启动多个雷同利用,模仿实在集群环境。zookeeper 的伪集群步骤和实在集群根本一样,只是配置的 IP 端口有点区别。
为什么须要集群?
在生产环境中,不论什么单体利用都不能保障始终可用,比方服务宕机,云厂商呈现的 bug 或者物理机器遇到的天下大乱这些,尽管概率小,然而也不能完全避免。为了实现高可用,就须要集群,同一利用多地部署,就算其中一个挂了,其余的也能持续提供服务。
zookeeper 对集群的要求
zookeeper 集群节点数必须是奇数,因为在 zookeeper 集群中,须要一个 leader 节点,此节点是通过选举机制产生的,这个选举机制须要满足:可用节点数 > 总节点数 /2,也就是存活的节点数必须超过总节点数的一半,如果总节点是 3 个,那能够容忍挂一个,如果总节点是 4 个,同样只能容忍挂一个,3 个和 4 个都只能容忍挂一个,那为啥要部署 4 个呢?
因自己资金无限,只有一台 Linux 服务器,所以采纳伪集群形式搭建 zookeeper 服务。上面咱们在一台机器上部署 3 个 zookeeper 节点,实现集群成果。
装置
从官网下载 zookeeper 并上传到服务器,我这里下载的是 3.4.14 版本
解压:tar -zxvf zookeeper-3.4.14.tar.gz
因为须要部署三个 zookeeper,咱们拷贝三分 zookeeper
cp -R zookeeper-3.4.14 zookeeper_01
cp -R zookeeper-3.4.14 zookeeper_02
cp -R zookeeper-3.4.14 zookeeper_03
配置
创立日志目录和数据目录
进入 zookeeper_01,创立 data 和 logs 目录
mkdir data
mkdir logs
在 data 目录下,创立 myid 文件,此文件记录节点 id,每个 zookeeper 节点都须要一个 myid 文件来记录节点在集群中的 id,此文件中只能有一个数字,默认放在数据目录上面。myid 中数字只能在 1~255 之间,也就是说 zookeeper 集群最多有 255 个节点。
配置 zoo.cfg
进入 conf 目录,复制 zoo_sample.cfg 文件并重命名为 zoo.cfg
cp zoo_sample.cfg zoo.cfg
批改 zoo.cfg
# 单位工夫,其余工夫都是以这个倍数来示意
tickTime=2000
# 节点初始化工夫,10 倍单位工夫
initLimit=10
# 心跳最大提早周期
syncLimit=5
# 数据目录
dataDir=/root/zookeeper/zookeeper_01/data
# 日志目录
dataLogDir=/root/zookeeper/zookeeper_01/logs
# 端口
clientPort=2181
#集群配置
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
每个节点都须要配置集群中所有节点信息,应用 server.id=ip:port:port
配置
其中 id,是下面 myid 文件中配置的 id;ip 是节点的 ip,第一个 port 是节点之间通信的端口,第二个 port 用于选举 leader 节点。
如果是实在集群环境,下面两个端口,每个节点都能够配置成 2888 和 3888。因为我这里在同一台机器上,端口不能抵触,只能应用不同的。
另外两个节点也同样操作,创立 data 目录和 logs 目录、创立 myid 文件,外面配置节点 id、批改 zoo.cfg。
这里贴一下我三个节点的配置
/root/zookeeper/zookeeper_01/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zookeeper/zookeeper_01/data
dataLogDir=/root/zookeeper/zookeeper_01/logs
clientPort=2181
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
/root/zookeeper/zookeeper_02/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zookeeper/zookeeper_02/data
dataLogDir=/root/zookeeper/zookeeper_02/logs
clientPort=2182
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
/root/zookeeper/zookeeper_03/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/root/zookeeper/zookeeper_03/data
dataLogDir=/root/zookeeper/zookeeper_03/logs
clientPort=2183
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
启动
进入 zookeeper 的 bin 目录,启动
./zkServer.sh start
三个节点顺次启动。
能够通过 ./zkServer.sh status
查看节点启动状态,是 leader 还是 follower。
<center> 扫一扫,关注我 </center>