zookeeper伪集群搭建

伪集群

伪集群就是在一台机器上启动多个相同应用,模拟真实集群环境。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。


扫一扫,关注我

你可能感兴趣的:(zookeeper)