Linux搭建单机多进程zookeeper集群

news2024/11/18 1:48:42

01 ZooKeeper是什么

ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。

02 ZooKeeper集群搭建

需要先安装配置好java环境

安装包下载地址:

https://archive.apache.org/dist/zookeeper/

选择stable稳定版本,目前是3.5.8的稳定版本

1、下载安装包

wget https://archive.apache.org/dist/zookeeper/stable/apache-zookeeper-3.5.8-bin.tar.gz

2、搭建三个集群节点,即三个ZooKeeper服务,新建三个文件夹

mkdir zookeeper1

mkdir zookeeper2

mkdir zookeeper3

3、将安装包复制到上述三个文件夹,分别解压

tar -zxvf apache-zookeeper-3.5.8-bin.tar.gz

解压后的目录:

  • bin 执行脚本
  • conf 配置文件
  • docs 文档
  • lib jar包

4、进入conf目录,ZooKeeper提供了一个配置文件示例zoo_sample.cfg,复制该文件

cpzoo_sample.cfg zoo1.cfg

其余两个zookeeper文件夹中进行同样的操作,文件名改为zoo2.cfg,zoo3.cfg

该配置文件中共5个参数:

tickTime:通信心跳时间

服务器之间或客户端与服务器之间维持心跳的时间间隔,毫秒级,ZK基本上所有的时间都是这个时间的整数倍。

initLimit:初始通信时限

集群中的follower服务器(F)与leader服务器(L)之间初始连接时能容忍的最多心跳数

syncLimit:同步通信时限

集群中的follower服务器与leader服务器之间请求和应答之间能容忍的最多心跳数

dataDir:数据文件目录

内存数据库快照存放地址,如果没有指定事务日志存放地址(dataLogDir),默认也是存放在这个 路径下,建议两个地址分开存放到不同的设备上

clientPort:客户端连接端口

zookeeper会监听这个端口,接收客户端的访问请求

需要修改的参数:

dataDir 数据文件目录,分别使用/tmp/zookeeper1,/tmp/zookeeper2,/tmp/zookeeper3

clientPort 客户端连接端口,每个zookeeper服务要启动在不同的端口,避免冲突,分别使用2181,2182,2183

需要增加的配置参数:server.x

server.1=127.0.0.1:3001:4001

server.2=127.0.0.1:3002:4002

server.3=127.0.0.1:3003:4003

这个三行配置在三个zookeeper配置中都是一样的,粘贴过去即可

该项配置的规则如下:

格式server.n=A:B:C

统一前缀,“server.”;

"server."后面的数字n表示机器的id(序号),不重复,需要在dataDir目录下新建myid文件,写入这个值

A表示集群中zk机器的ip;

B表示Zk集群中,follower与leader通信的端口;

C表示当leader宕机时,各follower选举新leader的通信端口;

配置信息如下:

在这里插入图片描述

按上述表格所示在tmp文件夹下新建zookeeper1,zookeeper2,zookeeper3文件夹,创建myid文件并写入配置文件中server.n中的n的值到该文件

mkdir zookeeper1

touch myid

echo 1 > myid

其余两个做相同操作,myid值分别为2和3

配置完成,三个配置文件的内容如下:

zoo1.cfg

tickTime = 2000

initLimit = 10

syncLimit = 5

dataDir = /tmp/zookeeper1

clientPort = 2181
     
server.1 = 127.0.0.1:3001:4001

server.2 = 127.0.0.1:3002:4002

server.3 = 127.0.0.1:3003:4003

zoo2.cfg

tickTime = 2000

initLimit = 10

syncLimit = 5

dataDir = /tmp/zookeeper2

clientPort = 2182
     
server.1 = 127.0.0.1:3001:4001

server.2 = 127.0.0.1:3002:4002

server.3 = 127.0.0.1:3003:4003

zoo3.cfg

tickTime = 2000

initLimit = 10

syncLimit = 5

dataDir = /tmp/zookeeper3

clientPort = 2183
     
server.1 = 127.0.0.1:3001:4001

server.2 = 127.0.0.1:3002:4002

server.3 = 127.0.0.1:3003:4003

启动zookeeper服务

 ./zkServer.sh start /usr/zookeeper1/apache-zookeeper-3.5.8-bin/conf/zoo1.cfg

./zkServer.sh start /usr/zookeeper2/apache-zookeeper-3.5.8-bin/conf/zoo2.cfg

 ./zkServer.sh start /usr/zookeeper3/apache-zookeeper-3.5.8-bin/conf/zoo3.cfg

注意:start后面要指定当前使用的配置文件

运行zookeeper命令行客户端

./zkCli.sh -server 127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183

查看节点状态

./zkServer.sh status /usr/zookeeper2/apache-zookeeper-3.5.8-bin/conf/zoo2.cfg

在这里插入图片描述

2号节点为Leader节点,1,3号节点为follower节点

集群搭建完成

03 集群节点个数最好是奇数个

zookeeper有这样一个特性:

集群中只要有过半的机器是正常工作的,那么整个集群对外就是可用的。

假设:一个集群有n个节点,宕机x个节点,那么要保证整个集群仍然可用就要满足不等式:n -x > n/2,即n > 2x
所以n可以取2x + m (m可以取1,2,3,4,5 …)
n的最小值是2x + 1

所以最节约服务器资源的配置是奇数个节点

如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以加入我们的QQ群:746506216,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。


资源分享

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/63322.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

用数字隔离器取代传统的光耦合器

介绍 光耦合器是一种已有几十年历史的技术,广泛用于信号隔离,通常提供安全隔离、信号电平移位和地面回路缓解。它们通常用于广泛的终端应用中,包括数据通信电路、开关模式电源系统、测量和测试系统,以及孤立的数据采集系统。光耦…

【入门】初识深度学习

文档背景 机器学习和深度学习的概念十分火热。听上去也很难,不慌,有时候就需要行动在前脑子在后。不管,干就完啦。 前言 人工智能(ArtificialIntelligence,AI)是最宽泛的概念,是研发用于模拟、延…

数据库基本语法

SQL常用语句总结 mysql -u root -p mysql会提示你输入密码&#xff0c;输入安装配置MySQL服务时设置的密码即可。 输入如下命令生成样例数据库&#xff1a; CREATE DATABASE university; USE university; SOURCE <DLL.sql文件路径>; SOURCE <InsertStatements.sql文…

Jenkins实践指南--pipeline概述

1.pipeline概述 1.1 什么是pipeline 从某种抽象层次上讲&#xff0c;部署流水线&#xff08;Deployment pipeline&#xff09;是指从软件版本控制库到用户手中这一过程的自动化表现形式。——《持续交付-发布可靠软件的系统方法》 pipeline 英语愿意为管道&#xff0c;在Jen…

Python之路—200行Python代码搞了个打飞机游戏!!

早就知道pygame模块&#xff0c;就是没怎么深入研究过&#xff0c;恰逢这周未没约到妹子&#xff0c;只能自己在家玩自己啦&#xff0c;一时兴起&#xff0c;花了几个小时写了个打飞机程序。 很有意思&#xff0c;跟大家分享下。 先看一下项目结构 1 2 3 4 5 6 7 8 9 10 11 1…

盒子模型-css

个人学习笔记 文章目录1.什么是盒子模型&#xff1f;2.外边距3.css边框4.内边距1.什么是盒子模型&#xff1f; HTML文档中的每个元素都被描绘成矩形盒子&#xff0c;这些矩形盒子通过一个模型来描述其占用的空间&#xff0c;这个模型称为盒子模型。 盒子模型用四个边界描述&am…

打字的哪阿空扥

打字的那些事之快速移动光标 一## 、提出快速移动光标的原因 &#xff08;1&#xff09;键盘移动光标方向键不合理 情景再现&#xff1a; 当我们在打出一句话时&#xff0c;其中一个字打错&#xff0c;我们就需要去删除它&#xff0c;此时我们做的动作&#xff0c;无非有两种…

Linux知识结构体系简述

Linux 是一套免费使用和自由传播的类 Unix 操作系统&#xff0c;是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。严格来讲&#xff0c;Linux 这个词本身只表示 Linux 内核&#xff0c;但实际上人们已经习惯了用 Linux 来形容整个基于 Linux 内核&…

QFtp编译

QFtp下载&#xff1a;https://github.com/qt/qtftp 打开源码 修改头文件(不然编译会报错) 打开qftp.pro CONFIG static CONFIG - shared改成 CONFIG - static CONFIG shared也就是 - 号互换位置 4. 编译生成文件 linux下&#xff1a;*.a文件为.lib文件 windows下&#xf…

Python学习基础笔记二十六——推导式

列表推导式&#xff1a; 例1&#xff1a;30以内能被3整除的数&#xff1a; print([i for i in range(30) if i % 3 0]) 结果&#xff1a; 例2&#xff1a; 30以内能被3整除的数的平方&#xff1a; print([i**2 for i in range(30) if i % 3 0]) 结果&#xff1a; 例3&…

Golang sync.Map 原理(两个map实现 读写分离、适用读多写少场景)

参考&#xff1a; 由浅入深聊聊Golang的sync.Map 通过对源码的逐行分析&#xff0c;清晰易懂Golang sync.Map原理 通过向 sync.Map 中增删改查来介绍sync.Map的底层原理Golang中sync.Map的实现原理是什么 很好的概括了sync.Map的原理手摸手Go 深入理解sync.Map 知乎大佬 大家…

CentOS7.9系统部署(nginx+uwsgi+flask)项目

一、概述 上次&#xff0c;我们介绍了如何将CentOS服务器自带的Python3.6.8版本升级到Python3.8.0版本&#xff0c;现在我们开始介绍如何将flask项目部署的CentOS7.9版本的Linux服务器上。 二、环境准备 2.1安装git 我们通常会将自己的项目托管在Github或者gitee平台&#…

地址锁存器,总线控制器,双向总线驱动器(数据缓冲器),时钟发生器。8088最小工作模式。

这几个芯片你知道它叫什么干什么用&#xff0c;跟CPU怎么接就可以。一般就是考填空 目录 这几个芯片你知道它叫什么干什么用&#xff0c;跟CPU怎么接就可以。一般就是考填空 地址锁存器&#xff08;74LS373&#xff0c;8282&#xff09; 数据缓冲器 8286&#xff0c;74LS24…

Spring MVC 常用注解的使用

ResponseBody 由于 Spring MVC 是基于 MVC 这个设计模式的&#xff0c;所以在不加上注解的情况下&#xff0c;页面和前端交互的时候返回的默认是一个视图 View&#xff0c;或者说静态页面&#xff0c;而实际上用的比较多的是将处理完的数据发送给前端&#xff0c;所以我们可以…

第五章. 可视化数据分析分析图表—常用图表的绘制2—直方图,饼形图

第五章. 可视化数据分析分析图 5.3 常用图表的绘制2—直方图&#xff0c;饼形图 本节主要介绍常用图表的绘制&#xff0c;主要包括直方图&#xff0c;饼形图。 1.直方图&#xff08;matplotlib.pyplot.hist&#xff09; 直方图&#xff0c;又称质量分布图&#xff0c;一般用横…

[附源码]JAVA毕业设计农产品的物流信息服务平台(系统+LW)

[附源码]JAVA毕业设计农产品的物流信息服务平台&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 …

MyBatis开发的详细步骤

推荐教程&#xff1a;SSM框架 一、什么是Mybatis 1.mybatis 是一个优秀的基于java的持久层框架&#xff0c;它内部封装了jdbc&#xff0c;使开发者只需要关注sql语句本身&#xff0c;而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。 2.mybatis通过x…

Windows下使用labelme标注图像

安装参考链接&#xff1a;https://github.com/wkentaro/labelme 一、安装Anaconda Windows下安装labelme需要借助Anaconda环境&#xff0c;安装很简单 https://www.anaconda.com/download/ 先进入官网&#xff0c;然后点击Windows系统版本 下载完成之后&#xff0c;就按照提…

[附源码]计算机毕业设计社区生活废品回收APPSpringboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

网站都变成灰色,其实几行代码就搞定了!

最近&#xff0c;全站和各个App的内容都变成了灰色&#xff0c;包括按钮、图片等等。 这时候我们可能会好奇这是怎么做到的呢&#xff1f; 有人会以为所有的内容都统一换了一个 CSS 样式&#xff0c;图片也全换成灰色的了&#xff0c;按钮等样式也统一换成了灰色样式。但你想想…