Ubuntu下安装Zookeeper集群

Zookeeper集群是一个开源的分布式协调服务系统,它由Apache软件基金会维护,旨在为分布式应用提供一致性和可靠性的服务。

在Zookeeper集群中,服务器可以扮演三种角色------领导者(Leader)、跟随者(Follower)和观察者(Observer,部分版本或配置中可能不包含)。领导者负责处理客户端的写请求和集群内部的调度,跟随者则处理读请求并同步领导者的数据,观察者类似于跟随者,但不参与投票过程。

Zookeeper集群通过ZAB(Zookeeper Atomic Broadcast)协议保证数据的一致性。客户端的写请求首先发送给领导者,领导者再将请求广播给所有跟随者,当大多数跟随者确认后,领导者才将请求应用到自己的数据副本上,并通知跟随者更新数据。

跟随者会定期从领导者同步数据,以保持数据的一致性。这种机制确保了即使领导者发生故障,集群也能迅速恢复服务。

Zookeeper被广泛应用于配置管理、服务注册与发现、分布式锁、集群管理、命名服务、队列管理。

1、准备Ubuntu主机

我用VMware跑了两个Ubuntu系统,来模拟Zookeeper集群的主机和从机。两台虚拟机的主机名分别为demo1、demo2,IP地址分别为192.168.23.130、192.168.23.131。在每台虚拟机上需要分别配置好/etc/hosts文件和/etc/hostname文件,如下图所示:

在准备VMware虚拟机时,我遇到了复制后的Ubuntu虚拟机网卡失效的问题,解决方法见博文:VMware复制Ubuntu虚拟机后网卡失效的问题-CSDN博客

2、安装Zookeeper

下载地址:Apache Download Mirrors

下载pache-zookeeper-3.9.2-bin.tar.gz

解压:tar -zxvf apache-zookeeper-3.9.2-bin.tar.gz -C ~/training/

3、配置Zookeeper集群

1)、配置Zookeeper环境变量:

> vi ~/bashrc, 在最下面添加:

ZOOKEEPER_HOME=/home/worker/training/apache-zookeeper-3.9.2-bin

export ZOOKEEPER_HOME

PATH=ZOOKEEPER_HOME/bin:PATH

export PATH

2)、配置conf/zoo.cfg:

分别配置两台虚拟机的zoo.cfg:

dataDir=/home/worker/training/apache-zookeeper-3.9.2-bin/tmp/zookeeper

clientPort=2181

server.1=demo1:2888:3888

server.2=demo2:2888:3888

3)、配置myid:

/home/worker/training/apache-zookeeper-3.9.2-bin

mkdir /tmp/zookeeper

touch /tmp/zookeeper/myid

echo 1 > /tmp/zookeeper/myid

在第一台虚拟机中myid为1,第二台虚拟机中myid为2.

5、启动zookeeper

分别启动两台虚拟机上的Zookeeper:

./bin/zkServer.sh start

6、查看Zookeeper集群状态:

./bin/zkServer.sh status

从下图可见:一台虚拟机的状态时leader,另一台状态为follower。

相关推荐
天才奇男子7 分钟前
HAProxy高级功能全解析
linux·运维·服务器·微服务·云原生
学嵌入式的小杨同学26 分钟前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
酥暮沐1 小时前
iscsi部署网络存储
linux·网络·存储·iscsi
❀͜͡傀儡师1 小时前
centos 7部署dns服务器
linux·服务器·centos·dns
Dying.Light2 小时前
Linux部署问题
linux·运维·服务器
S19012 小时前
Linux的常用指令
linux·运维·服务器
小义_2 小时前
【RH134知识点问答题】第7章 管理基本存储
linux·运维·服务器
梁洪飞3 小时前
内核的schedule和SMP多核处理器启动协议
linux·arm开发·嵌入式硬件·arm
_运维那些事儿3 小时前
VM环境的CI/CD
linux·运维·网络·阿里云·ci/cd·docker·云计算
Y1rong4 小时前
linux之文件IO
linux