ZooKeeper集群搭建

article/2025/9/15 21:32:00

目录

1 搭建要求

2 准备工作

3 配置集群

4 启动集群

5 模拟集群异常


1 搭建要求

真实的集群是需要部署在不同的服务器上的,但是在我们测试时同时启动很多个虚拟机内存会吃不消,所以我们通常会搭建伪集群,也就是把所有的服务都搭建在一台虚拟机上,用端口进行区分

我们这里要求搭建一个三个节点的Zookeeper集群(伪集群)。

2 准备工作

1、首先必须安装好JDK先。

2、ZooKeeper压缩包上传到服务器,压缩包下载地址: Apache ZooKeeper

3、将Zookeeper解压 ,建立/usr/local/zookeeper-cluster目录,将解压后的Zookeeper复制到以下三个目录。

/usr/local/zookeeper-cluster/zookeeper-1

/usr/local/zookeeper-cluster/zookeeper-2

/usr/local/zookeeper-cluster/zookeeper-3

创建目录并将ZooKeeper压缩包解压到此目录

mkdir /usr/local/zookeeper-cluster

解压

tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz -C /usr/local/zookeeper-cluster

将解压后的Zookeeper复制到以下三个目录

cp -r  apache-zookeeper-3.7.0-bin /usr/local/zookeeper-cluster/zookeeper-1
cp -r  apache-zookeeper-3.7.0-bin /usr/local/zookeeper-cluster/zookeeper-2
cp -r  apache-zookeeper-3.7.0-bin /usr/local/zookeeper-cluster/zookeeper-3

 4、创建data目录 ,并且将 conf下zoo_sample.cfg 文件改名为 zoo.cfg

mkdir /usr/local/zookeeper-cluster/zookeeper-1/data
mkdir /usr/local/zookeeper-cluster/zookeeper-2/data
mkdir /usr/local/zookeeper-cluster/zookeeper-3/data
mv  /usr/local/zookeeper-cluster/zookeeper-1/conf/zoo_sample.cfg  /usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfg
mv  /usr/local/zookeeper-cluster/zookeeper-2/conf/zoo_sample.cfg  /usr/local/zookeeper-cluster/zookeeper-2/conf/zoo.cfg
mv  /usr/local/zookeeper-cluster/zookeeper-3/conf/zoo_sample.cfg  /usr/local/zookeeper-cluster/zookeeper-3/conf/zoo.cfg

5、 配置每一个Zookeeper 的dataDir 和 clientPort 分别为2182 2183 2184

修改/usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfg

vim /usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfg
clientPort=2182
dataDir=/usr/local/zookeeper-cluster/zookeeper-1/data

 修改/usr/local/zookeeper-cluster/zookeeper-2/conf/zoo.cfg

vim /usr/local/zookeeper-cluster/zookeeper-2/conf/zoo.cfg
clientPort=2183
dataDir=/usr/local/zookeeper-cluster/zookeeper-2/data

修改/usr/local/zookeeper-cluster/zookeeper-3/conf/zoo.cfg

vim /usr/local/zookeeper-cluster/zookeeper-3/conf/zoo.cfg
clientPort=2184
dataDir=/usr/local/zookeeper-cluster/zookeeper-3/data

3 配置集群

1、在每个zookeeper的 data 目录下创建一个 myid 文件,内容分别是1、2、3 。这个文件就是记录每个服务器的ID

echo 1 >/usr/local/zookeeper-cluster/zookeeper-1/data/myid
echo 2 >/usr/local/zookeeper-cluster/zookeeper-2/data/myid
echo 3 >/usr/local/zookeeper-cluster/zookeeper-3/data/myid

2、在每一个zookeeper 的 zoo.cfg配置客户端访问端口(clientPort)和集群服务器IP列表。集群服务器IP列表如下。

zookeeper-1

vim /usr/local/zookeeper-cluster/zookeeper-1/conf/zoo.cfg
server.1=192.168.58.150:2881:3881
server.2=192.168.58.150:2882:3882
server.3=192.168.58.150:2883:3883

zookeeper-2

vim /usr/local/zookeeper-cluster/zookeeper-2/conf/zoo.cfg
server.1=192.168.58.150:2881:3881
server.2=192.168.58.150:2882:3882
server.3=192.168.58.150:2883:3883

zookeeper-3

vim /usr/local/zookeeper-cluster/zookeeper-3/conf/zoo.cfg
server.1=192.168.58.150:2881:3881
server.2=192.168.58.150:2882:3882
server.3=192.168.58.150:2883:3883

4 启动集群

启动集群就是分别启动每个实例

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh start
/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh start
/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh start

启动后我们查询一下每个实例的运行状态

先查询第一个服务

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh start

Mode为follower表示是跟随者(从)

再查询第二个服务Mod 为leader表示是领导者(主)

/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh status

 查询第三个为跟随者(从)

/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh status

5 模拟集群异常

1、首先我们先测试如果是从服务器挂掉,会怎么样,把3号服务器停掉。

/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh stop

 观察1号和2号

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh status
/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh status

发现状态并没有变化。

由此得出结论,3个节点的集群,有一个从服务器挂掉,集群正常。

2、我们再把1号服务器(从服务器)也停掉。

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh stop

查看2号(主服务器)的状态。

/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh status

发现已经停止运行了。

由此得出结论,3个节点的集群,2个从服务器都挂掉,主服务器也无法运行。因为可运行的机器没有超过集群总数量的半数。

3、我们再次把1号服务器启动起来。

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh start

发现2号服务器又开始正常工作了。而且依然是领导者。

/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh status

 4、我们把3号服务器也启动起来。

/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh start

把2号服务器停掉

/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh stop

停掉后观察1号和3号的状态。

/usr/local/zookeeper-cluster/zookeeper-1/bin/zkServer.sh status
/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh status

发现新的leader产生了~

由此我们得出结论,当集群中的主服务器挂了,集群中的其他服务器会自动进行选举状态,然后产生新得leader 。

5、我们再次测试,当我们把2号服务器重新启动起来启动后,会发生什么?

/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh start

2号服务器会再次成为新的领导吗?

/usr/local/zookeeper-cluster/zookeeper-2/bin/zkServer.sh status
/usr/local/zookeeper-cluster/zookeeper-3/bin/zkServer.sh status

我们会发现,2号服务器启动后依然是跟随者(从服务器),3号服务器依然是领导者(主服务器),没有撼动3号服务器的领导地位。

由此我们得出结论,当领导者产生后,再次有新服务器加入集群,不会影响到现任领导者。


http://chatgpt.dhexx.cn/article/npy1CsBY.shtml

相关文章

(七)centos7案例实战——nginx+keepalived高可用服务器集群搭建

前言 本节内容延续之前的内容,往期博客已经介绍了如何安装nginx服务器以及将nginx安装成为一个系统服务,本节内容是在前期内容的基础上,搭建一个高可用的nginx服务器集群,主要使用Keepalived组件,实现高可用的nginx集…

多台云服务器的 Kubernetes 集群搭建

环境 两台或多台腾讯云服务器(本人搭建用了两台),都是 CentOs 7.6, master 节点:服务器为 4C8G,公网 IP:124.222.61.xxx node1节点:服务器为 4C4G,公网 IP&#xff1a…

基于slurm框架的GPU服务器集群搭建方法

基于slurm框架的GPU服务器集群搭建操作文档 1. 环境基础 2. 环境配置 2.1 hostname配置 2.2 关闭SELinux (master, slave) 2.3 关闭Firewall (master, slave) 2.4 配置ip与hostname映射关系 (master, slave1) 3. 创建munge和…

Tomcat服务器集群搭建

Tomcat服务器集群与负载均衡 一、前言 在单一的服务器上执行WEB应用程序有一些重大的问题,当网站成功建成并开始接受大量请求时,单一服务器终究无法满足需要处理的负荷量,所以就有点显得有 点力不从心了。另外一个常见的问题是会产生单点故障…

Hadoop分布式集群搭建完整版(持续更新中)

1.前期准备工作 各类软件以及工具包下载 2.网络环境配置 2.1 打开 VMware 找到编辑,点击虚拟网络配置 2.2 点击第二行,然后更改设置 2.3 点击第三行VMnet8,把本地DHC服务将IP地址分配给虚拟机取消,配置子网,子网掩码&a…

保姆级教学——集群环境搭建及创建集群

保姆级教学——集群环境搭建及创建集群 新建虚拟机 一些默认,加载镜像开启虚拟机,在安装位置选择自己目录,然后建立分区,首先添加 挂载点,类型标准分区,文件系统ext4 加载分区,期望给2G, 类…

集群搭建完整版

集群搭建完整版 1.集群搭建的准备工作 1.克隆虚拟机 (要三台,创建一台 JDK、Hadoop 都安装完成的虚拟机,看 1.1 和 1.2) 2. 修改克隆虚拟机的静态 IP vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICEeth0 TYPEEthernet ON…

搭建服務器集群【3大注意事項】

简述 服务器集群是现时很多企业选用的建站科案选用技术, 为企业提供更稳定可靠的运作, 服务器出现超载或宕机也不会导致整个业务无法运作, 是企业服务器热备的不二之选, 我们为你一一说明一下 什么是服务器集群? 服务器集群指多台服务器集合及共同管理一个业务, …

通过vnc自动连接linux,通过VNC连接Linux远程桌面

因为特殊的需求关系,琢磨了一下如何在本地连接远程Linux主机的桌面环境。翻了不少网上的相关文章,大部分都只讲了步骤没有说为什么这么做,我就简单再复述一遍吧,加深一下印象。 环境如下: 本地:OS X 10.8.2…

Linux和Windows间的远程桌面访问

在Windows上面,我们都用过系统自带的远程桌面连接或者TeamViewer这样的工具,可以方便的让我们用图形化方式远程操作其他计算机。但是在Linux上,我们一般都是使用SSH来操作终端。那么在Linux上有没有一些工具可以让我们像Windows那样用图形化的…

Linux远程桌面初体验——todesk、向日葵终极对决

文章目录 前言一、使用环境及软件介绍二、使用步骤总结 前言 大家都知道,Linux桌面的功能很少被人使用,但目前包括但不限于红帽系的发行版本慢慢开始重视桌面环境,尤其是国产操作系统。今天我就来大家看一下国产操作系统下远程桌面的使用体验…

linux远程桌面连接

rdesktop这个软件 sudo apt-get install rdesktoprdesktop -g 1366*768 -P -z -x l -r sound:off -u username 192.168.123.5参数意义-g后面代表要使用的分辨率-P启用位图缓存-z启用RDP数据流压缩-x l使用局域网级别的图像质量-r sound:off关闭声音-u windowuser指定要使用的用…

Linux 远程桌面实现

硬件环境:树莓派3B 操作系统: Raspberry Jessie 安装xrdp服务(属于tightVNC服务的一部分) sudo apt-get install xrdp 安装完成后,输入如下命令: sudo /etc/init.d/xrdp start sudo update-rc.d xrdp de…

Linux配置VNC远程桌面

环境:CentOS7 VNC需要系统安装的有桌面,如果是生产环境服务器,安装时使用的最小化安装,那么进行下面操作按章GNOME 桌面。 # 列出的组列表里有GNOME Desktop。 yum grouplist #安装之 yum groupinstall -y "GNOME Desktop&…

如何远程linux服务器桌面,LINUX操作系统如何远程登录桌面

相比window来说linux远程桌面登陆需要第三方软件来实现,之前用ssh登陆的都是字符界面;昨天试了试远程桌面也是可以的,方法很多,这儿只阐述比较好用的一种;使用时,关闭windows防火墙,或者开启相应的防火墙端口;这里使用…

linux远程桌面rdesktop,Linux下通过rdesktop连接Windows远程桌面

rdesktop是linux下支持Windows远程桌面连接的客户端程序,在linux系统下可通过它远程访问Windows桌面,支持多种版本。rdesktop是sourceforge下支持GPL协议的一个开源项目,采用RDP(Remote Desktop Protocol,远程桌面协议),几乎可以连接windows的所有版本,诸如NT 4 Terminal …

red hat linux 远程,Red Hat Linux 远程桌面 – 如何设置

远程访问 RHEL 计算机。运行 RHEL 7.3-8.1 的 Linux 计算机的远程桌面。从任何计算机、平板电脑或移动设备进行访问。立即免费试用! 如果您是在家中或在旅途中工作,则可能需要一段时间才能在办公室或在家中访问台式计算机。如果该桌面恰巧在 Linux 操作系…

linux系统开远程桌面,Linux 系统开启远程桌面的方法

Linux操作系统开启远程桌面的方法 一、组网需求: 我司iMC不仅支持Windows系统环境下的安装部署,还支持Linux系统环境下的安装部署,在定位网上问题或者远程安装部署时,远程桌面是一种快捷的方法,Windows操作系统下开启远程桌面的方法众所周知,下面介绍开启Linux操作系统远…

vnc连接linux远程桌面

文章目录 1, centos6安装vnc服务端vnc常用命令设置vnc随机登录密码设置ssh 密钥文件登录:禁止密码登录 2, ubuntu安装vnc服务端3, windows 安装vncviewer客户端 1, centos6安装vnc服务端 # 1, install vncserver yum -y install epel-release yum -y install vnc-s…

linux远程桌面连接_如何从Linux连接到远程桌面

linux远程桌面连接 根据Wikipedia的说法, 远程桌面是“一种软件或操作系统功能,它允许个人计算机的桌面环境在一个系统(通常为PC,但该概念同样适用于服务器)上远程运行,同时显示在服务器上。单独的客户端设备。” 换句话说,远程桌面用于访问另一台计算机上运行的环境。…