Zookeeper系列(一)集群搭建(非容器)

系列文章

Zookeeper系列(一)集群搭建(非容器)

目录

        前言

        下载

        搭建

                Data目录
                Conf目录
                集群复制和修改
                启动

        配置示例

        测试

        总结


前言

Zookeeper是一个开源的分布式协调服务,其设计目标是将那些复杂的且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集,并以一些简单的接口提供给用户使用。ZooKeeper 背后的动机是减轻分布式应用程序从头开始实现协调服务的责任。

Zookeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据订阅/发布、负载均衡、命名服务、集群管理、分布式锁和分布式队列等功能。

下载

从官网  Apache ZooKeeper 下载相应版本,这里版本为 3.7.2(本系列后续所用版本也是)。

搭建

Data目录

  • 首先创建集群项目存放的位置,当前是 /home/zookeeper/file ,这里可自定义
mkdir -p /home/zookeeper/file
  • 将下载的压缩包上传到linux服务器,路径 /home/zookeeper/file 下,然后解压(通过wget和其他方式亦可)
tar -zxvf apache-zookeeper-3.7.2-bin.tar.gz -C zookeeper-3.7.2
  • 复制一份作为 zookeeper1
cp -r zookeeper-3.7.2 zookeeper1
  •  切换到 zookeeper1 目录下,创建 data 和 logs 目录
cd zookeeper1
mkdir data
mkdir logs
  • 进入 data 目录,生成一个内容为 1myid
cd data
vim myid

Conf目录

  • 接下来,操作配置相关内容,进入 conf 中,路径为 /home/zookeeper/file/zookeeper1/conf
cd /home/zookeeper/file/zookeeper1/conf
  • 复制一份 zoo_sample.cfgzoo.cfg
cp zoo_sample.cfg zoo.cfg
  • 编辑 zoo.cfg修改 dataDir  添加 server.服务器ID 列表
dataDir=/home/zookeeper/file/zookeeper1/data
server.1=192.168.119.142:2881:3881
server.2=192.168.119.142:2882:3882
server.3=192.168.119.142:2883:3883

        注意:dataDir 为当前节点的 data 目录路径,这里为 zookeeper1节点的

                  server.服务器ID有几个配置几个(这里为3个),配置表达式如下:

                  server.服务器ID=服务器IP地址:服务器之间通信端⼝:服务器之间投票选举端⼝

集群复制和修改

  • 复制 zookeeper1,分别命名为 zookeeper2zookeeper3(3个节点构成的集群)
cp -r zookeeper1 zookeeper2
cp -r zookeeper1 zookeeper3
  •  分别进入 zookeeper2  zookeeper3 下的 data 目录,分别修改 myid 的内容为 2 和 3(注意节点和值的对应)
  • 接下来就是 conf 的修改,进入 zookeeper2 下的 conf 目录,修改 zoo.cfg 的 dataDir 和 clientPort
dataDir=/home/zookeeper/file/zookeeper2/data
clientPort=2182
  • 进入 zookeeper3 下的 conf 目录,修改 zoo.cfg 的 dataDir 和 clientPort
dataDir=/home/zookeeper/file/zookeeper3/data
clientPort=2183
  • 以上就配置完成了,就可以启动了

启动

  • 分别进入zookeeper1、zookeeper2  zookeeper3 的 bin 目录,执行命令
 ./zkServer.sh start
  • 启动后,显示

  • 查看状态和是否主节点
./zkServer.sh status
  • 关闭
./zkServer.sh stop

配置示例

选择 zookeeper3 的 zoo.cfg 配置给列位参照(不同版本可能不同)

  • 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/zookeeper/file/zookeeper3/data
# the port at which the clients will connect
clientPort=2183
server.1=192.168.119.142:2881:3881
server.2=192.168.119.142:2882:3882
server.3=192.168.119.142:2883:3883
# 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## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=true

测试

启动全部节点后,可通过多种方式确认集群的可用性,这里选择客户端工具

  • 通过客户端工具,分别连接 zookeeper1 、zookeeper2 和 zookeeper3

  • 在 zookeeper1 下新增持久节点 test

  • 分别查看 zookeeper2 和 zookeeper3 对应的节点树数据情况,显示节点已同步

  •  然后在 zookeeper3 修改 test 的内容为 node3

  • 分别查看 zookeeper1 和 zookeeper2 的 test节点内容,显示节点内容已更新

  • 经过以上步骤,可初步确认集群是成功启动的

总结

 Zookeeper是一个强大的分布式协调工具,接下来会持续更新Zookeeper的其他内容,包括但不限于分布式锁、分布式队列、源码分析等等。

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

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

相关文章

vue+springboot+mybatis实现项目管理系统

项目前端:https://gitee.com/anxin-personal-project/project-management-front 项目后端:https://gitee.com/anxin-personal-project/project-management-behind 项目均可运行!!!有问题留言,如果看到了会…

华为mux vlan+DHCP+单臂路由用法配置案例

最终效果: vlan 2模拟局域网服务器,手动配置地址,也能上公网 vlan 3、4用dhcp分配地址 vlan 4的用户之间不能互通,但可以和其它vlan通,也能上公网 vlan 3的用户不受任何限制可以和任何vlan通,也能上公网 交…

伺服系统刚性模型的建立

一.系统工作原理 为了实现对运动控制系统精准的位置控制,首先要对伺服进给系统进行准确建模和模型辨识。人们对于运动控制系统的研究中已经提出了多种多样的系统建模和辨识方法。 图1 伺服电机滚珠丝杠传动系统刚性模型 下面对整个系统的工作原理进行解释&#xff…

日志系统一(elasticsearch+filebeat+logstash+kibana)

目录 一、es集群部署 安装java环境 部署es集群 安装IK分词器插件 二、filebeat安装(docker方式) 三、logstash部署 四、kibana部署 背景:因业务需求需要将nginx、java、ingress日志进行收集。 架构:filebeatlogstasheskib…

2024最新AI系统ChatGPT商业运营网站源码,支持Midjourney绘画AI绘画,GPT语音对话+ChatFile文档对话总结+DALL-E3文生图

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作Ch…

关于java的冒泡排序

关于java的冒泡排序 我们前面的文章中了解到了数组的方法类Arrays,我们本篇文章来了解一下最出名的排序算法之一,冒泡排序!😀 冒泡排序的代码还是非常简单的,两层循环,外层冒泡轮数,里层依次比…

TSP(Python):Qlearning求解旅行商问题TSP(提供Python代码)

一、Qlearning简介 Q-learning是一种强化学习算法,用于解决基于奖励的决策问题。它是一种无模型的学习方法,通过与环境的交互来学习最优策略。Q-learning的核心思想是通过学习一个Q值函数来指导决策,该函数表示在给定状态下采取某个动作所获…

【操作系统】复习汇总(各章节知识图谱)

第1章: 第2章: 第3章: 第4章: 第5章: 第6章: 第7章: 第8章: 第9章:

系统性介绍MoE模型架构,以及在如今大模型方向的发展现状

知乎:Verlocksss编辑:马景锐链接:https://zhuanlan.zhihu.com/p/675216281 1 学习动机 第一次了解到MoE(Mixture of experts),是在GPT-4模型架构泄漏事件,听说GPT-4的架构是8个GPT-3级别大小的模…

2707. 字符串中的额外字符

牛客网:https://leetcode.cn/problems/extra-characters-in-a-string/description/?envTypedaily-question&envId2024-01-09 官方解题思路为动态规划或字典数优化; 这里引入Up主的解题思路(递归) 哔哩哔哩:https…

【计算机网络】TCP原理 | 可靠性机制分析(二)

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【网络编程】【Java系列】 本专栏旨在分享学习网络编程、计算机网络的一点学习心得,欢迎大家在评论区交流讨论💌 T…

Python异步编程|PySimpleGUI界面读取PDF转换Excel

目录 实例要求 原始pdf文件格式 输出xls文件格式 运行界面 完整代码 代码分析 遍历表格 布局界面 控件简介 写入表格 表格排序 事件循环 异步编程 实例要求 使用PySimpleGUI做一个把单位考勤系统导出的pdf文件合并输出Excel的应用,故事出自&#xff1…

CDN的介绍以及加速内容传输原理

目前在公司的开发过程中,发现很多存储在oss的静态资源(图片,安装包)的链接中域名都使用了cdn域名,后面了解到这个cdn域名的主要作用是加速资源的访问,于是抽空了解了一下CDN加速原理。 目前使用得比较多的是…

Python多线程同步

同步条件(Event) 在Python中,多线程同步可以通过threading模块中的Event对象来实现。Event对象允许一个或多个线程等待某个事件的发生,当事件发生时,等待的线程将被唤醒。 event.isSet():返回event的状态值 event.wait()&#x…

PyQt5-小总结

之前学习PyQt5,然后那段时间想做一个桌面小程序,后来由于学习内容较多就做了一小部分,但是可以进行页面跳转。大家如果是初学者对Python感兴趣而且刚学数据库时可以看看代码,可能会有点启发。 效果: 登录进来是这&…

FreeRTOS学习——任务通知

一、什么是任务通知 FreeRTOS 从版本 V8.2.0 开始提供任务通知这个功能,每个任务都有一个 32 位的通知值。按照 FreeRTOS 官方的说法,使用消息通知比通过二进制信号量方式解除阻塞任务快 45%, 并且更加省内存(无需创建队 列&#…

解析游戏开发中的ECS设计模式:实体、组件、系统的完美协同

ECS(Entity-Component-System)是一种设计模式,通常用于构建和管理具有大量实体和复杂交互的系统,尤其在游戏开发中得到广泛应用。这个模式的核心思想是将系统中的组件、实体和系统进行分离,以提高代码的可维护性、可扩…

鸿蒙原生应用/元服务开发-长时任务

概述 功能介绍 应用退至后台后,对于在后台需要长时间运行用户可感知的任务,例如播放音乐、导航等。为防止应用进程被挂起,导致对应功能异常,可以申请长时任务,使应用在后台长时间运行。申请长时任务后,系统…

Linux调试------gdb的使用

目录 前言 一、gdb打开可执行程序 二、查看代码与操作断点 1.l 查看代码 2.b 打断点 3.info b 查看断点信息 4.d 删除断点 5.disable 和 enable 断点的禁用与启用 三、调试 1.r 启动调试 2. n 逐过程 3. s 逐语句 4.display显示变量 5.undisplay 取消显…

e2studio开发磁力计LIS2MDL(1)----轮询获取磁力计数据

e2studio开发磁力计LIS2MDL.1--轮询获取磁力计数据 概述视频教学样品申请源码下载速率新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原型回调函数user_uart_callback ()prin…