总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:《Linux运维篇:Linux系统运维指南》
一、功能简介
1、什么是Zookeeper
ZooKeeper 是一个开源的、分布式的应用程序协调服务,它为分布式框架提供协调服务的 Apache 项目。它是 Google 的 Chubby 项目的开源实现之一,并且是 Hadoop 和 HBase 等项目的重要组成部分。ZooKeeper 提供的功能包括配置维护、域名服务、分布式同步、组服务等。
2、典型应用场景:
1、配置管理:在分布式系统中,可以使用 ZooKeeper 来集中管理配置信息。
2、命名服务:提供一种全局的命名机制,用于分布式系统中的服务发现。
3、分布式协调:实现分布式锁、队列、选举等协调服务。
4、集群管理:用于管理集群中的节点状态,例如监控节点的存活状态。
4、服务发现:作为服务生产者和服务消费者的注册中心,用于服务发现和负载均衡。
注意:zookeeper适用于存储和协同相关的关键数据, 不适合用于大数据量存储。
3、有3个著名开源项目使用Zookeeper
1、Hadoop:使用Zookeeper做Namenode的高可用
2、HBase: 保证集群中只有一个master,保存集群中的RegionServer列表,保存hbase:meta表的位置
3、Kafka:集群成员管理,controller节点选举
二、部署说明
1、环境信息
主机IP | 操作系统 | 内核版本 | jdk版本 | zookeeper版本 |
---|---|---|---|---|
192.168.1.111 | Kylin Linux Advanced Server V10 (Tercel) | 4.19.90-17.5.ky10.aarch64 | 17.0.12 | 3.8.4 |
192.168.1.112 | Kylin Linux Advanced Server V10 (Tercel) | 4.19.90-17.5.ky10.aarch64 | 17.0.12 | 3.8.4 |
192.168.1.113 | Kylin Linux Advanced Server V10 (Tercel) | 4.19.90-17.5.ky10.aarch64 | 17.0.12 | 3.8.4 |
注意:使用docker容器部署zookeeper,官方默认的jdk版本为17.0.12,所以这里为了统一,也选择安装此版本。
2、端口说明
端口 | 端口号 | 用途 |
---|---|---|
Client Port (客户端端口) | 2181 | 客户端(如应用程序通过这个端口与 ZooKeeper服务器进行通信 |
Election Port (选举端口) | 2888 | 当集群中的服务器需要选举一个新的leader时,它们通过此端口相互通信以进行选举 |
Sync Port (同步端口) | 3888 | leader服务器通过此端口与follower服务器同步数据变更 |
Admin Server Port (Admin Server 端口) | 8080 | 通过此端口管理员可以访问集群的状态信息,并执行管理操作 |
Metrics Provider Port (度量指标提供程序端口) | 7000 | Prometheus度量指标提供程序使用此端口来提供ZooKeeper的性能指标 |
JMX Port (JMX 端口) | 端口随机不固定 | 用于监控JVM的状态和zookeeper服务器的状态和性能 |
三、部署zookeeper集群
3.1、安装jdk
[root@ecs-ed54-0001 ~]# wget https://download.oracle.com/java/17/latest/jdk-17_linux-aarch64_bin.tar.gz
[root@ecs-ed54-0001 ~]# tar axf jdk-17_linux-aarch64_bin.tar.gz -C /usr/local
[root@ecs-ed54-0001 ~]# cd /usr/local/
[root@ecs-ed54-0001 local]# chmod 755 jdk-17.0.12/ -R
3.2、创建用户
说明:以下操作需要在zookeeper集群各个节点上执行。
[root@ecs-ed54-0001 ~]# groupadd zookeeper -g 1000