zookeeper介绍和搭建

news2024/11/24 18:26:56

zookeeper介绍和搭建

  • 一、zookeeper简介
  • 二、zookeeper工作机制
  • 三、zookeeper集群部署
    • 3.1 实验准备
    • 3.2 修改配置文件
    • 3.3 创建目录以及拷贝文件
    • 3.4 配置Zookeeper启动脚本
    • 3.5 查看启动状态

一、zookeeper简介

1、zookeeper概念
ZooKeeper是一种为分布式应用所设计的高可用、高性能且一致的开源协调服务,它提供了一项基本服务:分布式锁服务。分布式应用可以基于它实现更高级的服务,实现诸如同步服务、配置维护和集群管理或者命名的服务。

Zookeeper服务自身组成一个集群,2n+1个(奇数)服务允许n个失效,集群内一半以上机器可用,Zookeeper就可用。

假设 3台机器组成的集群,可以有允许一台失效,如果有2台失效,这个集群就不可用,1<1.5,一般的搭建zookeeper集群时,以奇数台机器来搭建。目的:是为了提高容错能允许多损失一台。

2、zookeeper数据结构
ZooKeeper数据模型的结构与Linux文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识。

二、zookeeper工作机制

Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。也就是说 Zookeeper =文件系统+通知机制。

1、zookeeper特点
(1)Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。

(2)Zookeepe集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。所以Zookeeper适合安装奇数台服务器。

(3)全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。

(4)更新请求顺序执行,来自同一个Client的更新请求按其发送顺序依次执行,即先进先出。

(5)数据更新原子性,一次数据更新要么成功,要么失败。

(6)实时性,在一定时间范围内,Client能读到最新数据。

2、zookeeper应用场景
提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。

统一命名服务

在分布式环境下,经常需要对应用/服务进行统一命名,便于识别。例如:IP不容易记住,而域名容易记住。

统一配置管理
(1)分布式环境下,配置文件同步非常常见。一般要求一个集群中,所有节点的配置信息是一致的,比如Kafka集群。对配置文件修改后,希望能够快速同步到各个节点上。

(2)配置管理可交由ZooKeeper实现。可将配置信息写入ZooKeeper上的一个Znode。各个客户端服务器监听这个Znode。一旦 Znode中的数据被修改,ZooKeeper将通知各个客户端服务器。

统一集群管理

(1)分布式环境中,实时掌握每个节点的状态是必要的。可根据节点实时状态做出一些调整。

(2)ZooKeeper可以实现实时监控节点状态变化。可将节点信息写入ZooKeeper上的一个ZNode。监听这个ZNode可获取它的实时状态变化。

服务器动态上下线

客户端能实时洞察到服务器上下线的变化。

软负载均衡

在Zookeeper中记录每台服务器的访问数,让访问数最少的服务器去处理最新的客户端请求。

三、zookeeper集群部署

官方下载地址:https://archive.apache.org/dist/zookeeper/

3.1 实验准备

 192.168.10.40         zookeeper
 192.168.10.50         zookeeper
 192.168.10.60         zookeeper
 三台虚拟机同时进行
 systemctl stop firewalld 
 setenforce 0
 yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel #安装jdk包
 tar xf apache-zookeeper-3.5.7-bin.tar.gz -C /usr/local/zookeeper-3.5.7   #因为之前做了解压所以直接覆盖了

在这里插入图片描述

3.2 修改配置文件

cd /usr/local/zookeeper-3.5.7/conf/              #切换目录
cp zoo_sample.cfg zoo.cfg              #备份
vim zoo.cfg                                #编辑

添加目录路径
 dataDir=/usr/local/zookeeper-3.5.7/data        
 dataLogDir=/usr/local/zookeeper-3.5.7/logs
添加集群ip 
 server.1=192.168.10.40:3188:3288        
 server.2=192.168.10.50:3188:3288
 server.3=192.168.10.60:3188:3288
 保存退出

请添加图片描述

3.3 创建目录以及拷贝文件

拷贝整个文件到其他二台机子上
scp -r /usr/local/zookeeper-3.5.7/ 192.168.10.50:/usr/local/         
scp -r /usr/local/zookeeper-3.5.7/ 192.168.10.60:/usr/local/
三台机子同时创建目录
mkdir /usr/local/zookeeper-3.5.7/data
mkdir /usr/local/zookeeper-3.5.7/logs

DataDir指定的目录下创建一个 myid 的文件(每台都需要创建自己单独的)
192.168.10.40
echo 1 > /usr/local/zookeeper-3.5.7/data/myid
192.168.10.50
echo 2 > /usr/local/zookeeper-3.5.7/data/myid
192.168.10.60
echo 3 > /usr/local/zookeeper-3.5.7/data/myid

在这里插入图片描述

3.4 配置Zookeeper启动脚本

vim /etc/init.d/zookeeper

#!/bin/bash
#chkconfig:2345 20 90
#description:Zookeeper Service Control Script
ZK_HOME='/usr/local/zookeeper-3.5.7'
case $1 in
start)
	echo "---------- zookeeper 启动 ------------"
	$ZK_HOME/bin/zkServer.sh start
;;
stop)
	echo "---------- zookeeper 停止 ------------"
	$ZK_HOME/bin/zkServer.sh stop
;;
restart)
	echo "---------- zookeeper 重启 ------------"
	$ZK_HOME/bin/zkServer.sh restart
;;
status)
	echo "---------- zookeeper 状态 ------------"
	$ZK_HOME/bin/zkServer.sh status
;;
*)
    echo "Usage: $0 {start|stop|restart|status}"
esac

chmod  +x /etc/init.d/zookeeper        # 给脚本加上执行权限
scp -r /etc/init.d/zookeeper   192.168.10.50:/etc/init.d/    #拷贝到其他二台机子上
scp -r /etc/init.d/zookeeper   192.168.10.60:/etc/init.d/    #拷贝到其他二台机子上

chkconfig --add zookeeper
service zookeeper start                    #切记三台机子都配置完脚本再启动

在这里插入图片描述
请添加图片描述

3.5 查看启动状态

三台虚拟机
service  zookeeper status

请添加图片描述
请添加图片描述
请添加图片描述

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

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

相关文章

尚融宝20-实现用户注册和用户认证

目录 一、需求 二、前端整合发送验证码 三、实现用户注册 1、创建VO对象 2、定义常量 3、引入MD5工具类 4、Controller 5、Service 6、前端整合 四、实现用户登录 1、后端整合JWT 2、前端整合 五、校验用户登录 1、后端 2、前端 一、需求 二、前端整合发送验证码…

数据结构———一万字手撕八大排序算法

常见的排序算法1.排序算法的作用1.1列如我们在购物时1.2玩游戏时英雄战力的排行&#xff0c;都得用到排序算法2.常见排序算法的实现2.1冒泡排序时间复杂度计算&#xff1a;2.2直接插入排序时间复杂度计算&#xff1a;2.3选择排序时间复杂度计算&#xff1a;2.4希尔排序⭐时间复…

Qt音视频开发28-ffmpeg解码本地摄像头(yuv422转yuv420)

一、前言 一开始用ffmpeg做的是视频流的解析,后面增加了本地视频文件的支持,到后面发现ffmpeg也是支持本地摄像头设备的,只要是原则上打通的比如win系统上相机程序、linux上茄子程序可以正常打开就表示打通,整个解码显示过程完全一样,就是打开的时候要传入设备信息,而且…

Prophet学习(五)季节性、假日效应和回归因子

​ 编辑目录 假期和特殊事件建模&#xff08;Modeling Holidays and Special Events&#xff09; 内置国家假日&#xff08;Built-in Country Holidays&#xff09; 季节性的傅里叶级数&#xff08;Fourier Order for Seasonalities&#xff09; 指定自定义季节&#xff08…

启动neo4j备忘录

做个备忘录 Neo4j下载、安装、环境配置 优秀教程&#xff1a;https://blog.csdn.net/zeroheitao/article/details/122925845 Neo4j环境变量配置 1、安装JDK 由于Neo4j是基于Java的图形数据库&#xff0c;运行Neo4j需要启动JVM进程&#xff0c;因此必须安装JAVA SE的JDK。配置…

【数据结构】反射

文章目录&#x1f337; 1 定义&#x1f337; 2 用途(了解)&#x1f337; 3 反射基本信息&#x1f337; 4 反射相关的类&#x1f333; 4.1 Class类(反射机制的起源)Class类中的相关方法&#x1f333; 4.2 反射示例4.2.1 获得Class对象的三种方式4.2.2 反射的使用⭐️反射使用1&a…

3个宝藏级软件,每一个都超级好用,少装一个跟你急

分区助手 下载地址&#xff1a;https://www.disktool.cn/ 很多新手小白使用电脑都不懂&#xff0c;把所有软件都安装到了C盘&#xff0c;时间久了储存的东西变多&#xff0c;C盘空间着实不够用&#xff0c;这个免费的工具可以帮你重新分区&#xff0c;无损数据地执行。除了无损…

腾讯云8核16G18M轻量服务器CPU带宽流量性能测评

腾讯云轻量应用服务器8核16G18M带宽&#xff0c;18M公网带宽下载速度峰值可达2304KB/秒&#xff0c;相当于2.25M/s&#xff0c;系统盘为270GB SSD盘&#xff0c;3500GB月流量&#xff0c;折合每天116GB流量。腾讯云百科分享腾讯云轻量服务器8核16G18M配置、CPU型号、公网带宽月…

ChatGPT资讯—2023.4.3

一、 最新资讯 1. UC伯克利开源大语言模型Vicuna又来了 Vicuna-13b只需要花费300美刀&#xff08;比Alpaca的600美元便宜一半&#xff09;就能搞出来接近ChatGPT的水平。如何用小资源大模型让个人普通者与中小微企业也能用上高科技一直是开源社区孜孜追求的目标 Vicuna开源代…

ERP与CRM、MRP、PLM、APS、MES、WMS、SRM的关系

数字化转型中少不了ERP系统的存在&#xff0c;CRM/MRP/PLM/APS/MES/WMS/SRM这些都需要一起上吗&#xff1f; 如下图所示&#xff0c;是某企业IT系统集成架构流图。 先了解一下ERP是做什么的&#xff0c;ERP就是企业资源管理系统&#xff0c;从企业的价值链分析&#xff0c;企业…

用机器学习sklearn+opencv-python过古诗文网4位数字+字母混合验证码

目录 获取验证码图片 用opencv-python处理图片 制作训练数据集 训练模型 识别验证码 编写古诗文网的登录爬虫代码 总结与提高 源码下载 在本节我们将使用sklearn和opencv-python这两个库过掉古诗文网的4位数字字母混合验证码&#xff0c;验证码风格如下所示。 验证码获…

分库分表介绍以及shardingjdbc实现分库分表

分库分表概念 一、什么是分库分表 分库分表是在海量数据下&#xff0c;由于单库、表数据量过大&#xff0c;导致数据库性能持续下降的问题&#xff0c;演变出的技术方案。 分库分表是由分库和分表这两个独立概念组成的&#xff0c;只不过通常分库与分表的操作会同时进行&…

还不懂怎么设计超时关单?一文告诉你!

背景介绍 ​ 提交订单&#xff0c;是交易领域避不开的一个话题。在提交订单设计时&#xff0c;会涉及到各种资源的预占&#xff1a;如商品库存、优惠券数量等等。但是&#xff0c;下单的流程并不能总是保证成功的&#xff0c;如商品库存异常的时候被拦截、优惠券数量不足的时候…

3月更新 | Visual Studio Code Python

我们很高兴地宣布&#xff0c;2023年3月版 Visual Studio Code Python 和 Jupyter 扩展现已推出&#xff01; 此版本包括以下改进&#xff1a; 后退按钮和取消功能添加到创建环境命令默认情况下&#xff0c;Python 扩展不再附带 isortJupyter 笔记本中内核选择的改进Python P…

Modbus 协议详解

Modbus 协议详解 通信协议是指双方实体完成通信或服务所必须遵循的规则和约定&#xff0c;例如我们为实现人与人之间的交流需要约定统一的语言&#xff0c;统一的文字&#xff0c;规定语速等等。 而对于设备之间&#xff0c;协议定义了数据单元使用的格式&#xff08;例如大端…

四、数组、切片,映射

一、一维数组 //声明一个包含5个元素的整型数组 var array [5]int //具体数值填充数组 array : [5]int{1, 2, 3, 4, 5} //容量由初始化值的数量决定 array : [...]int{1, 2, 3, 4, 5) //只初始化索引为1和2的元素 array : [5]int{1: 10, 2: 20} //修改索引为2的元素的值 array…

Linux文件系统、虚拟内存、进程与线程、锁

文章目录文件系统suLinux 中默认没有 super 命令/proc/etc/var/root/home/bin/dev/lib/sbintmp句柄maxfdPWDpathhomeexportwdfdu虚拟内存jobsLinux下一切皆文件swaponmkswap进程与线程nohup子进程与父进程unix进程间的通信方式线程的同步方式sedtarhistory硬链接ln&#xff08;…

Go分布式爬虫笔记(二十一)

文章目录21 切片和哈希表切片底层结构截取扩容哈希表原理哈希碰撞拉链法开放寻址法&#xff08;Open Addressing&#xff09;读取重建原理删除原理思考题Go 的哈希表为什么不是并发安全的&#xff1f;在实践中&#xff0c;怎么才能够并发安全地操作哈希表&#xff1f;拉链法开放…

软件设计师笔记-----程序设计语言与语言处理程序基础

文章目录七、程序设计语言与语言处理程序基础7.1、编译与解释&#xff08;低频&#xff09;7.2、文法&#xff08;低频&#xff09;7.3、有限自动机与正规式&#xff08;几乎每次都会考到&#xff09;有限自动机正规式7.4、表达式&#xff08;偶尔考到&#xff09;7.5、传值和传…

2023-详解实时数仓建设

一、实时数仓建设背景 1. 实时需求日趋迫切 目前各大公司的产品需求和内部决策对于数据实时性的要求越来越迫切&#xff0c;需要实时数仓的能力来赋能。传统离线数仓的数据时效性是 T1&#xff0c;调度频率以天为单位&#xff0c;无法支撑实时场景的数据需求。即使能将调度频…