Zookeeper集群搭建

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Zookeeper集群搭建

1 安装

先简单说下目的:


什么是单点故障问题?

HDFS中的NameNode,Yarn中ResourceManager,HBase中HMaster,Spark中Master,Storm中Nimbus起着“老大”的角色,那么“老大”挂了怎么办呢?这可就麻烦了,只要老大挂了,等于整个集群的服务都用不了了,NameNode挂了整个集群的HDFS就用不了了,HBase的HMaster挂了整个集群的Hbase都用不了了,等等。这就是所谓的单点故障问题。单点指只有一个主节点。


解决方案

基于ZooKeeper实现HA(High Availablity)的功能。


读者可以从“http://archive.apache.org/dist/”下载ZooKeeper安装包,也可以在本章软件资源文件夹中找到zookeeper-3.4.9.tar.gz文件。请将该文件复制到Master的“/home/csu/”目录下,进入该目录后执行解压缩命令:

tar -zxvf zookeeper-3.4.9.tar.gz


bb097d2a14b3428f8cf8cd3b50a24a56.png


2 配置

服务器集群属性

ZooKeeper的服务器集群属性配置文件是zoo.cfg,该文件在安装目录的“conf”子目录下。系统为用户准备了一个模板文件zoo_sample.cfg,我们可以将其复制并改名,得到zoo.cfg文件,然后进行修改。首先进入“conf”子目录,然后执行命令“cp zoo_sample.cfg zoo.cfg”。

21a8b81242b44518b18a3ef0722d5586.png

86955c54e7ed44ac9ca97090a7e3f474.png


server.1=master:2888:3888
server.2=slave0:2888:3888
server.3=slave1:2888:3888

上述代码是按照“服务器编号、服务器地址、LF通信端口和选举端口”的顺序排列的,其中,server表示ZooKeeper的服务器集群,我们这里配置了3台服务器,server后面的数字代表服务器的ID,等号后面紧跟的是服务器地址,这里使用了主机名;2888是LF(即Leader节点与Follower节点之间的)通信端口,3888是选举端口。


创建节点标识文件

上面我们通过zoo.cfg文件为ZooKeeper服务器集群中的每台服务器赋予了一个ID,master是1,slave0是2,slave1是3。但是,每台服务器在本地也需要一个myid文件,里面仅包含一行代码,就是其ID。所以,myid文件是节点标识文件,默认放置在“/tmp/zookeeper”目录下(参见zoo.cfg文件),但需要由用户自己创建。下面以Master为例进行讲解,我们首先来创建“/tmp/zookeeper”目录。


mkdir -p /tmp/zookeeper


执行“gedit /tmp/zookeeper/myid”命令来创建myid文件。


e35e9186ecf449a7b095c48b53274ba6.png

注意,其他Slave上也要进行同样的设置,只是ID不同而已。


复制ZooKeeper安装文件

用户需要根据自己Linux集群的具体情况,将上面安装好的ZooKeeper文件复制到Slave,这里需要复制两次,分别是Slave0和Slave1,其中,复制到Slave0的命令是“scp -r zookeeper-3.4.9 slave0:~/”,如图6-33所示。


scp -r zookeeper-3.4.9 slave0:~/


至此,我们就完成了ZooKeeper的安装。


3 启动和测试

要启动ZooKeeper,需要分别登录到Master和Slave进行启动操作。例如,要启动Master的ZooKeeper服务器,首先进入ZooKeeper安装目录,然后执行启动命令。请特别注意zkServer.sh中的大写字母,如果误写成小写的s,系统会提示无该文件或目录(no such file or directory)。

d249ce14ae5a4ed886ea78a668ddd04b.png

./zkServer.sh start


按下Enter键后,如果启动正常,看到的信息。1d80db0e79354cb6ba43f3a3a1a64d92.png

bin/zkServer.sh status


2d7780cf51584d3ba82d962297bad14a.png


系统给出的信息表明,该节点(Master)是一个Follower节点。根据ZooKeeper的工作原理,集群中应当有一个“leader”,不妨查看一下其他节点的状态,我们这里看到Slave0是Leader节点,结果如图6-37所示。

c47b16223fb940edaecd4856de6cb7f6.png

显然,谁是Leader节点谁是Follower节点,是由系统根据ZooKeeper选举机制确定的。要停止ZooKeeper服务,可在安装目录下执行“bin/zkServer.sh stop”命令。


ZooKeeper客户端

ZooKeeper也提供了一个客户端供用户进行交互式操作,进入ZooKeeper客户端的命令是:


bin/zkCli.sh -server master:2181


注意上述命令中的大小写,执行成功将看到的提示信息,其中“[zk: master:2181(CONNECTED) 0]”就是客户端命令行提示符。

b5a25b7a709b4b758603e4a17c5069d8.png

0a24902700b94956a60dc5c30e9d9e86.png

quit退出ZooKeeper客户端。


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
2月前
|
Java Shell Linux
Zookeeper单机&集群安装
Zookeeper单机&集群安装
22 1
|
1月前
|
存储 分布式计算 资源调度
Hadoop【环境搭建 04】【hadoop-2.6.0-cdh5.15.2.tar.gz 基于ZooKeeper搭建高可用集群】(部分图片来源于网络)
【4月更文挑战第1天】Hadoop【环境搭建 04】【hadoop-2.6.0-cdh5.15.2.tar.gz 基于ZooKeeper搭建高可用集群】(部分图片来源于网络)
54 3
|
22天前
|
存储 Java 网络安全
ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
【4月更文挑战第10天】ZooKeeper【搭建 03】apache-zookeeper-3.6.0 伪集群版(一台服务器实现三个节点的ZooKeeper集群)
34 1
|
5月前
|
存储 Java Linux
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群(二)
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群
83 1
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群(二)
|
2月前
|
算法 Java Linux
zookeeper单机伪集群集群部署
zookeeper单机伪集群集群部署
86 0
|
2月前
|
消息中间件 存储 Kafka
Kafka【环境搭建 02】kafka_2.11-2.4.1 基于 zookeeper 搭建高可用伪集群(一台服务器实现三个节点的 Kafka 集群)
【2月更文挑战第19天】Kafka【环境搭建 02】kafka_2.11-2.4.1 基于 zookeeper 搭建高可用伪集群(一台服务器实现三个节点的 Kafka 集群)
140 1
|
3月前
|
网络协议 中间件 数据库
Zookeeper学习系列【三】Zookeeper 集群架构、读写机制以及一致性原理(ZAB协议)
Zookeeper学习系列【三】Zookeeper 集群架构、读写机制以及一致性原理(ZAB协议)
110 0
|
3月前
|
网络协议
Zookeeper学习系列【二】Zookeeper 集群章节之集群搭建
Zookeeper学习系列【二】Zookeeper 集群章节之集群搭建
35 0
|
4月前
|
Java
搭建Zookeeper集群的搭建
搭建Zookeeper集群的搭建
39 1
|
4月前
|
安全 Java API
Zookeeper(持续更新) VIP-02 Zookeeper客户端使用与集群特性
2,/usr/local/data/zookeeper-3,/usr/local/data/zookeeper-4,在每个目录中创建文件。创建四个文件夹/usr/local/data/zookeeper-1,/usr/local/data/zookeeper-Follower:只能处理读请求,同时作为 Leader的候选节点,即如果Leader宕机,Follower节点。己对外提供服务的起始状态。E: 角色, 默认是 participant,即参与过半机制的角色,选举,事务请求过半提交,还有一个是。