zookeeper本地部署和集群搭建

news2024/12/29 14:45:24

zookeeper(动物园管理员)是一个广泛应用于分布式服务提供协调服务Apache的开源框架

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

zookeeper集群特点

  • zookeeper集群由一个领导者(Leader)和多个跟随者(Follower)组成。
  • 集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。所 以Zookeeper适合安装奇数台服务器。
  • 全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的。
  • 更新请求顺序执行,来自同一个Client的更新请求按其发送顺序依次执行。
  • 数据更新原子性,一次数据更新要么成功,要么失败。
  • 实时性,在一定时间范围内,Client能读到最新数据。

本地模式安装

zookeeper由Java开发所有要运行zookeeper需要现安装jdk

安装jdk

可以下载免安装版jdk,解压后配置一下环境变量即可

linux下的环境变量配置文件在

/etc/profile

然后在该文件下增加如下配置即可

export JAVA_HOME=/usr/java/jdk-21/jdk-21.0.1 // 我自己的jdk目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
 

然后从新加载配置文件,命令为

source /etc/profile 

查看Java版本

则表示已成功安装Jdk

安装zookeeper

进入zookeeper官网,找到下载页面,下载-bin.tar.gz版即可,如果没有想要的版本则可以在下载页面的存档连接中找到

Apache ZooKeeper

1、拷贝 apache-zookeeper-3.5.7-bin.tar.gz 安装包到 Linux 系统下
2、解压到指定目录
       
 tar -zxvf apache-zookeeper-3.5.7- bin.tar.gz -C /mydata/zookeeper
3、修改名称
        
mv apache-zookeeper-3.5.7 -bin/ zookeeper-3.5.7

配置修改

1、将/mydata/zookeeper/zookeeper-3.5.7/conf这个路径下的 zoo_sample.cfg 修改为 zoo.cfg

mv zoo_sample.cfg zoo.cfg

2、打开 zoo.cfg 文件,修改 dataDir 配置的路径 修改为如下内容(默认的tmp路径是临时路径,一段时间后,linux会自动删除里面的文件,所有不适合正式环境使用)

dataDir=/mydata/zookeeper/zookeeper-3.5.7/data

3、在/mydata/zookeeper/zookeeper-3.5.7/这个目录上创建 data文件夹

mkdir data

操作zookeeper

1、启动 Zookeeper

        在bin目录下使用 ./zkServer.sh start 启动zookeeper
2、 查看进程是否启动

3、查看状态

4、启动客户端

        ./zkCli.sh

5、退出客户端:

        [zk: localhost:2181(CONNECTED) 0] quit

6、停止 Zookeeper

        .bin/zkServer.sh stop

配置参数解读

Zookeeper中的配置文件zoo.cfg中参数含义解读如下:

1tickTime = 2000:通信心跳时间,Zookeeper服务器与客户端心跳时间,单位毫秒

2 initLimit = 10 LF 初始通信时限

LeaderFollower初始连接时能容忍的最多心跳数(tickTime的数量)

3syncLimit = 5LF同步通信时限

LeaderFollower之间通信时间如果超过syncLimit * tickTimeLeader认为Follwer死掉,从服务器列表中删除Follwer。

4dataDir保存Zookeeper中的数据

注意:默认的tmp目录,容易被Linux系统定期删除,所以一般不用默认的tmp目录。

5 clientPort = 2181 :客户端连接端口,通常不做修改。

zookeeper集群搭建

1)集群规划

首先准备三台linux虚拟机 可以安装一台然后使用vmware提供的克隆功能实现克隆,克隆之前需要先关闭虚拟机。
克隆完成后 修改克隆机 IP 以下以 hadoop100(hadoop100为我自己设置的主机名称) 举例说明
1)修改克隆虚拟机的静态 IP
改成

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="d7919ed1-15af-49fe-9b4e-aad1456eed3d"
DEVICE="ens33"
ONBOOT="yes"

IPADDR=192.168.127.100
# wangGuan
GATEWAY=192.168.127.2
# DNS
DNS1=192.168.127.2

 

2)查看 Linux 虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8
3)查看 Windows 系统适配器 VMware Network Adapter VMnet8 IP 地址
4)保证 Linux 系统 ifcfg-ens33 文件中 IP 地址、虚拟网络编辑器地址和 Windows 系统 VM8 网络 IP 地址在同一网段。

2)修改克隆机主机名,以下以 hadoop100 举例说明

1)修改主机名称
vim /etc/hostname
hadoop102
2)配置 Linux 克隆机主机名称映射 hosts 文件,打开/etc/host

[root@hadoop100 ~]# vim /etc/hosts

添加如下内容

192.168.127.100 hadoop100
192.168.127.101 hadoop101
192.168.127.102 hadoop102
192.168.127.103 hadoop103
192.168.127.104 hadoop104
192.168.127.105 hadoop105
192.168.127.106 hadoop106
192.168.127.107 hadoop107
192.168.127.108 hadoop108
192.168.127.132 qingmangmall

3)重启克隆机 hadoop100
[root@hadoop100 ~]# reboot
4)修改 windows 的主机映射文件(hosts 文件)

  • a)进入 C:\Windows\System32\drivers\etc 路径
  • b)打开 hosts 文件并添加如下内容,然后保存
192.168.127.100 hadoop100
192.168.127.101 hadoop101
192.168.127.102 hadoop102
192.168.127.103 hadoop103
192.168.127.104 hadoop104
192.168.127.105 hadoop105
192.168.127.106 hadoop106
192.168.127.107 hadoop107
192.168.127.108 hadoop108
192.168.127.132 qingmangmall
至此克隆的虚拟机就可以使用了
如果之前已有三台虚拟机使用,如何快速将其中的某一个文件快速共享给其他机器呢?

3)集群分发

将zookeeper分发给其他服务

        前提:在 hadoop102 hadoop103 hadoop104 都已经创建好的/mydata目录
        并且已经把这两个目录修改为 user:user(想要操作该目录的用户)
[user@hadoop102 ~]$ sudo chown user:user -R  /mydata
     
    在 hadoop102 上,将 hadoop102 /mydata/zookeeper  目录拷贝到
hadoop103 上。
[user@ hadoop102 ~]$ scp -r /mydata/zookeeper user@hadoop103:/mydata
        其他服务器以此类推
至此三台服务器就都有了zookeeper服务
想要启用zookeeper集群需要在  /mydata/zookeeper/zookeeper-3.5.7/data 目录下创建 一个 myid 的文件。
在文件中添加与 server 对应的编号(注意:上下不要有空行,左右不要有空格),这里我使用了linux机器IP的最后三位当作id号
100
注意:添加 myid 文件,一定要在 Linux 里面创建,在 notepad++ 里面很可能乱码
3 )拷贝配置好的 zookeeper 到其他机器上
scp -r /mydata/zookeeper/zookeeper-3.5.7/data  user@hadoop103:/mydata/zookeeper/zookeeper-3.5.7
配置zoo.cfg文件
1 )重命名 /opt/module/zookeeper-3.5.7/conf 这个目录下的 zoo_sample.cfg zoo.cfg
[user@hadoop102 conf]$ mv zoo_sample.cfg zoo.cfg
2 )打开 zoo.cfg 文件
[user@hadoop102 conf]$ vim zoo.cfg
# 修改数据存储路径配置
dataDir=/opt/module/zookeeper-3.5.7/zkData
# 增加如下配置
#######################cluster##########################
server.100=hadoop100:2888:3888
server.103=hadoop103:2888:3888
server.132=qingmangmall:2888:3888
3 )配置参数解读
server.A=B:C:D
A 是一个数字,表示这个是第几号服务器;
集群模式下配置一个文件 myid ,这个文件在 dataDir 目录下,这个文件里面有一个数据
就是 A 的值, Zookeeper 启动时读取此文件,拿到里面的数据与 zoo.cfg 里面的配置信息比
较从而判断到底是哪个 server
B 是这个服务器的地址;
C 是这个服务器 Follower 与集群中的 Leader 服务器交换信息的端口;
D 是万一集群中的 Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的
Leader ,而这个端口就是用来执行选举时服务器相互通信的端口。
4 )同步 zoo.cfg 配置文件
集群操作
1 )分别启动 Zookeeper
[user@hadoop100 zookeeper-3.5.7]$ bin/zkServer.sh start

[user@hadoop103 zookeeper-3.5.7]$ bin/zkServer.sh start
[user@qingmangmall zookeeper-3.5.7]$ bin/zkServer.sh start
2 )查看状态
[user@hadoop100 zookeeper-3.5.7]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Mode: follower
[user@hadoop103 zookeeper-3.5.7]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Mode: leader
[user@qingmangmall zookeeper-3.5.7]# bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfg
Mode: follower

附录

1)创建用户 并设置文件所属组

        可以使用如下操作创建用户
[root@hadoop100 ~]# useradd user
[root@hadoop100 ~]# passwd user
        配置 user用户具有 root 权限,方便后期加 sudo 执行 root 权限的命令
        [root@hadoop100 ~]# vim /etc/sudoers
修改 /etc/sudoers 文件,在 %wheel 这行 下面添加一行,如下所示:
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## Allows people in group wheel to run all commands
% wheel ALL=(ALL) ALL
user  ALL=(ALL)  NOPASSWD:ALL
        注意: user 这一行不要直接放到 root 行下面,因为所有用户都属于 wheel 组,你先
        配置了 user 具有免密功能,但是程序执行到%wheel 行时,该功能又被覆盖回需要
        密码。所以 user 要放到%wheel 这行下面。
        在根目录 下创建文件夹,并修改所属主和所属组
        mkdir /mydata
        修改 mydata文件夹的所有者和所属组均为 user 用户
        [root@hadoop100 ~]# chown user:user /mydata
查看 /mydata文件夹的所有者和所属组,可以发现所属主已改为自己设置的用户了

2scpsecure copy)安全拷贝

1 scp 定义
        scp 可以实现服务器与服务器之间的数据拷贝。( from server1 to server2
2 )基本语法
        scp            -r             $pdir/$fname                           $user@$host:$pdir/$fname
        命令          递归          要拷贝的文件路径/ 名称            目的地用户 @ 主机 : 目的地路径 / 名称

3rsync 远程同步工具

rsync 主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync scp 区别: rsync 做文件的复制要比 scp 的速度快, rsync 只对差异文件做更
新。 scp 是把所有文件都复制过去。
1 )基本语法
rsync       -av            $pdir/$fname                        $user@$host:$pdir/$fname
命令         选项参数       要拷贝的文件路径 / 名称         目的地用户 @ 主机 : 目的地路径 / 名称
选项参数说明
选项         功能
-a             归档拷贝
-v             显示复制过程

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

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

相关文章

STM32单片机在线升级,手机在线升级STM32单片机,固件远程下载方法,局域网在线程序下载

STM32单片机,是我们最常见的一种MCU。通常我们在使用STM32单片机都会遇到程序在线升级下载的问题。 STM32单片机的在线下载通常需要以下几种方式完成: 1、使用ST提供的串口下载工具,本地完成固件的升级下载。 2、自行完成系统BootLoader的编写…

leetcode每日一题复盘(11.6~11.12)

leetcode 37 解数独 回溯算法的最后一种问题:棋盘问题,前面的N皇后也是棋盘问题,只不过N皇后只需要一层放一个数据,数独需要多次放入数据且保证数据不冲突 方法是通过bool返回值进行多次递归,每次递归放入一个数据,将该层数据填满后换下一层

【嵌入式开发学习】__串口丢数据的几个常见原因

前言 串口是工程师最常用的串行外设之一,但在实际应用中,还是会经常遇到各种问题,比如丢失一字节数据。 今天,我们就结合STM32来讲讲UART相关内容,以及容易丢失一字节数据的问题。 一、UART几个标志位 这里重点说一…

支付卡行业(PCI)PIN安全要求和测试程序 7个控制目标、33个要求及规范性附录ABC 密钥注入-PCI认证-安全行业基础篇4

概述 用于在ATM和POS终端进行在线和离线支付卡交易处理期间,对个人身份号码(PIN)数据进行安全管理、处理和传输。 该标准具体包括 7 个控制目标和 33 个安全要求, 标准的结构分为标准主体部分,标准附录(N…

聚会娱乐喝酒游戏小程序源码系统 可开流量主 带完整的搭建教程

今天罗峰来给大家分享一款聚会娱乐喝酒游戏小程序源码系统 。在聚会娱乐活动中,喝酒游戏是一种非常受欢迎的活动方式。但是,往往由于缺乏有效的组织和规则,导致游戏的进行不够顺畅,甚至出现混乱的情况。因此,开发一款能…

Linux提权方法总结

1、内核漏洞提权 利用内核漏洞提取一般三个环节:首先对目标系统进行信息收集,获取系统内核信息及版本信息 第二步,根据内核版本获取对应的漏洞以及exp 第三步,使用exp对目标进行攻击,完成提权 注:此处可…

Spring Security使用总结三,编写一个注册页面,不知道你有没有强迫症

不像先有鸡还是先有蛋这种话题,对于系统来说必须要先注册再登录,所以这一章主要就是讲注册,对于注册来说首先就是要有一个注册的页面,从系统的安全角度去考虑,这个注册页面可以是系统自带的注册页面,也可以…

学习笔记|构建一元线性回归模型|方差分析|方差齐性|检验残差正态性|规范表达|《小白爱上SPSS》课程:SPSS第二十讲: 一元线性回归分析怎么做?

目录 学习目的软件版本原始文档一元线性回归分析一、实战案例二、统计策略三、SPSS操作四、结果解读第一个表格为模型摘要第二表格为方差分析表第三个表格为模型系数第四张散点图(主要检验方差齐性) 第五张直方图和P-P图(检验残差正态性&…

PHP语言、B/S手术麻醉临床信息管理系统源码

手术麻醉临床信息管理系统有着完善的临床业务功能,能够涵盖整个围术期的工作,能够采集、汇总、存储、处理、展现所有的临床诊疗资料。通过该系统的实施,能够规范麻醉科的工作流程,实现麻醉手术过程的信息数字化,自动生…

虚析构函数

1)类指针指向本身的对象 Son *xiaoming new Son; delete xiaoming; 构造及析构顺序: 父类构造 子类构造; 子类析构; 父类析构。 2)父类指针指向子类对象,,父类析构函数不是虚函数 Father *father new Son; delete f…

Redis-持久化

RDB快照(snapshot) (1)Redis将内存数据库快照保存dump.rdb的二进制文件中 (2)Redis将内存flush到磁盘文件的默认策略: N秒内数据集至少有M个改动 (3)Redis允许手动flush&…

Android Studio(RecyclerView)

前言 ListView的缺点&#xff0c;在RecyclerView得到了补充改善&#xff08;横纵向排列子元素、多列布局等等&#xff09; 代码 前面在适配器章节已经介绍了其对应的适配器&#xff0c;这里就简单展示一下多列布局的页面效果和相关代码 <androidx.recyclerview.widget.Recyc…

干货|AI辅助完成论文的正确打开方式!

论文写作中可能遇到问题 1. 选题问题&#xff1a;是否无法确定研究方向和选择合适的题目&#xff1f; 2. 文献综述问题&#xff1a;是否困惑如何进行文献调研和综述&#xff1f; 3. 方法论问题&#xff1a;是否不知道该选择何种研究方法&#xff1f; 4. 数据处理问题&#…

【Kubernetes部署】通过Kubeadm部署Kubernetes高可用集群

Kubeadm 一、kubeadm部署思路二、基本架构2.1 资源分配2.2 系统初始化操作&#xff08;所有节点&#xff09;2.2.1关闭防火墙、selinux和swap分区2.2.2 修改主机名&#xff0c;添加域名映射2.2.3 内核相关2.2.4 加载ip_vs模块2.2.5 时间同步 三、部署docker3.1 通过yum安装dock…

10个免费3D模型网站

作为一名独立游戏开发者,自己创建图形、配乐、动画和更多东西是相当具有挑战性的。 创建资产所需的成本和时间有时是许多游戏开发商无法承受的。 这就是他们选择在互联网上搜索免费内容的原因。现在,在浩瀚的内容海洋中获得如此免费的东西有点困难。 本文列出了 10 个免费 3D…

C语言34种运算符的用法解析

C 算术运算符 操作员运算符的含义加法或一元加法-减法或一元减法*乘法/分配%除法后的余数&#xff08;模除&#xff09; // 算数运算符的使用 #include <stdio.h> int main() {int a 9,b 4, c;c ab;printf("ab %d \n",c);c a-b;printf("a-b %d \n…

R语言环境下使用curl库做的爬虫代码示例

curl库是一个用于传输数据的工具和库&#xff0c;它支持多种协议&#xff0c;包括HTTP、FTP、SMTP等。在爬虫中&#xff0c;curl库可以用来获取网页内容&#xff0c;从而实现爬取网页的功能。通过设置curl的选项&#xff0c;可以实现对网页的请求、响应、重定向等操作。在使用c…

【前段基础入门之】=>CSS3新特性 @keyframes 动画

导语 在 CSS3 新特性中&#xff0c;新增了动画效果 的定义方式&#xff0c;这使得我们可以通过使用 CSS&#xff0c;从而开发出精美的动画效果&#xff0c;所以本章节&#xff0c;就来详细聊一聊如何通过 CSS 去创建一个动画效果案例 帧 **学习动画之前&#xff0c;我们得先了…

windows11 画图软件调整图片大小

win11自带的画图功能可以调整图片的大小和尺寸 搜索 画图&#xff0c;点击画图应用&#xff0c;打开图片 要把图片调整成800*1200。先打开文件菜单 选择图像属性 此处可以调整图片的尺寸和大小&#xff08;非等比例调整&#xff09; 选择图像下调整大小&#xff08;等比例调整…

什么叫SSH?原理详解,看这一篇就够了!

你们好&#xff0c;我的网工朋友。 SSH是一种加密的网络安全协议&#xff0c;用于安全地远程登录和执行命令。 目前SSH协议已经被全世界广泛使用&#xff0c;大多数设备都支持SSH功能。 但你真的会用吗&#xff1f; 今天就从SSH是什么、怎么用出发&#xff0c;给你详解一下之…