ZooKeeper完全分布式安装与配置

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Zookeeper是一个很好的集群管理工具,被大量用于分布式计算。如Hadoop以及Storm系统中。这里简单记录下Zookeeper集群环境的搭建过程。本文以Centos6.5作为操作系统环境。
Apache ZooKeeper是一个为分布式应用所设计开源协调服务,其设计目是为了减轻分布式应用程序所承担的协调任务。可以为用户提供同步、配置管理、分组和命名服务。
1.环境说明

在三台装有centos6.5(64位)服务器上安装ZooKeeper,官网建议至少3个节点,本次实验3台

主机数:3(要求3+,且必须是奇数,因为ZooKeeper选举算法))。

需要提前安装jdk,选择版本是jdk-8u91-linux-x64。

2.配置主机名和ip映射关系

ZooKeeper集群所有结点作为一个整体对分布式应用提供服务,因此需要各个节点实现互连,就要知道其它节点主机和ip的映射关系。在每个节点上配置/etc/hosts文件,添加如下:

主机名 IP地址 JDK ZooKeeper myid
hadoop01
172.16.1.156
1.8.0_11 server.1  1
hadoop02
172.16.1.157
1.8.0_11 server.2  2
hadoop03
172.16.1.158
1.8.0_11 server.3  3
3.安装ZooKeeper

1)下载ZooKeeper,选择稳定版,即stable

2)解压 
tar -zxvf zookeeper-3.4.8.tar.gz
这里路径 为  /home/hadoop/zookeeper-3.4.6
3)修改/etc/profile,添加ZooKeeper环境变量 
export ZOOKEEPER_HOME=/home/hadoop/zookeeper-3.4.8
export PATH=$ZOOKEEPER_HOME/bin:$ZOOKEEPER_HOME/conf:$PATH
4)新建zoo.cfg并修改 
cp conf/zoo_sample.cfg conf/zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/home/hadoop/zookeeper-3.4.8/data
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=hadoop01:2888:3888
server.2=hadoop02:2888:3888 
server.3=hadoop03:2888:3888
参数说明:   

①tickTime:心跳时间,毫秒为单位。

②initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里客户端不是用户连接 Zookeeper服务器的客户端,而是 Zookeeper 服务器集群中连接到 Leader 的 Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。当已经超过 10 个心跳的时间(也就是 tickTime)长度后 Zookeeper 服务器还没有收到客户端的返回信息,那么表明这个客户端连接失败。总的时间长度就是 10*2000=20 秒。

③syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime时间长度,总时间长度就是 5*2000=10 秒。

④dataDir:存储内存中数据库快照的位置。

⑤clientPort:监听客户端连接的端口

⑥server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的 ip 地址;C 表示的是这个服务器与集群中的 Leader 服务器交换信息的端口;D 表示的是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的 Leader,而这个端口就是用来执行选举时服务器相互通信的端口。如果是伪集群的配置方式,由于 B 都是一样,所以不同的 Zookeeper 实例通信端口号不能一样,所以要给它们分配不同的端口号。

5)dataDir目录下创建myid文件,将内容设置为上⑥中A值,用来标识不同的服务器。

/home/hadoop/zookeeper-3.4.8/data/myid

在节点配置的dataDir指定的目录下面,创建一个myid文件,里面内容为一个数字,用来标识当前主机,$ZOOKEEPER_HOME/conf/zoo.cfg文件中配置server.X,则myid文件中就输入这个数字X。(即在每个节点上新建并设置文件myid,其内容与zoo.cfg中

id相对应)这里hadoop01节点为 1

cd /home/hadoop/zookeeper-3.4.8/datatouch myid
echo"1" > myid

4.从master节点分发文件到其它节点

1、在master节点的/home/hadoop/目录下

scp -r zookeeper-3.4.6 hadoop@hadoop02:~/
scp -r zookeeper-3.4.6 hadoop@hadoop03:~/
scp -r data hadoop@hadoop02:~/zookeeper-3.4.8
scp -r data hadoop@hadoop03:~/zookeeper-3.4.8

2、在hadoop02节点的/home/hadoop/目录下

vi ./zookeeper-3.4.8/data/myid

修改为 2

3、在hadoop03节点的/home/hadoop/目录下

vi ./zookeeper-3.4.8/data/myid

修改为 3

5.测试ZooKeeper  

1)各节点上启动 (这里启动顺序为 hadoop01 >  hadoop02 >  hadoop03 )

[hadoop@hadoop01 zookeeper-3.4.8]$ bin/zkServer.sh start
2)jps查看进程  
30056 QuorumPeerMain
QuorumPeerMain是zookeeper进程,说明启动正常。
3)查看状态  
[hadoop@hadoop01 zookeeper-3.4.8]$ bin/zkServer.sh status
[hadoop@hadoop02 zookeeper-3.4.8]$ bin/zkServer.sh status
4)停止ZooKeeper  
[hadoop@hadoop01 zookeeper-3.4.8]$ bin/zkServer.sh stop
注:之前我配置正确,但是一直都是,每个节点上都启动了,但就是互相连接不上,最后发现是防火墙原因,啊啊啊!一定要先把防火墙关了! 

  
  
注意事项:
如果集群上同时安装了Hadoop、HBase、Zookeeper,需要注意三者之间有先后启动顺序:
启动顺序:
Hadoop——>Zookeeper——>HBase
停止顺序
HBase——>Zookeeper——>Hadoop

启动集群

首先启动hadoop(在hadoop01start-all.sh),

然后启动zookeeper集群(分别在三台机器上zkServer.sh  start;可以使用zkServer.sh status查看zk状态)。

最后在hadoop01上启动hbase集群(start-hbase.sh)。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
1天前
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
27天前
|
存储 运维 NoSQL
分布式读写锁的奥义:上古世代 ZooKeeper 的进击
本文作者将介绍女娲对社区 ZooKeeper 在分布式读写锁实践细节上的思考,希望帮助大家理解分布式读写锁背后的原理。
|
29天前
|
数据库
如何在Seata框架中配置分布式事务的隔离级别?
总的来说,配置分布式事务的隔离级别是实现分布式事务管理的重要环节之一,需要认真对待和仔细调整,以满足业务的需求和性能要求。你还可以进一步深入研究和实践 Seata 框架的配置和使用,以更好地应对各种分布式事务场景的挑战。
29 6
|
2月前
|
存储 负载均衡 监控
dubbo学习一:zookeeper与dubbo的关系,下载安装启动zookeeper(解决启动中报错)
这篇文章是关于Apache Dubbo框架与Zookeeper的关系,以及如何下载、安装和启动Zookeeper的教程,包括解决启动过程中可能遇到的报错问题。
96 3
dubbo学习一:zookeeper与dubbo的关系,下载安装启动zookeeper(解决启动中报错)
|
2月前
|
消息中间件 监控 Ubuntu
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
96 3
大数据-54 Kafka 安装配置 环境变量配置 启动服务 Ubuntu配置 ZooKeeper
|
2月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
56 2
|
2月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
54 1
|
3月前
|
Java 网络安全
zookeeper的环境搭建和配置
本文介绍了如何在多台节点上搭建和配置Zookeeper环境。内容包括Zookeeper的下载、解压、环境变量配置、配置文件修改、zkdata目录创建、myid文件设置,以及将Zookeeper及其配置文件复制到其他节点。还提供了运行测试的命令,包括启动、状态检查和停止Zookeeper服务。
zookeeper的环境搭建和配置
|
2月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
54 0
|
3月前
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2