zookeeper入门到精通03——zookeeper集群搭建

2023-11-14

3.1 多虚拟机环境搭建

我们需要搭建zookeeper集群,而由于zookeeper的的服务器数量需要设置为单数(前文介绍了原因),一个zookeeper集群至少需要三个zookeeper服务,因此我们需要搭建三台虚拟主机。

(1)将之前的虚拟机重命名为zookeeper01。

(2)进行网络配置

vi /etc/sysconfig/network-scripts/ifcfg-eth0

再增加

VMWARE左上角点击编辑查看虚拟网络配置

image-20220403133256596

image-20220403133916402

对应在在后面追加文件ifcfg-eth0中追加

image-20220403152821338

对以上修改说明如下:

BOOTPROTO:网卡获得ip地址的方式,这里设置成为static静态获取指定的ip地址。该参数还可以设置成为dhcp和pootp,分别对应两种协议方式获取ip地址。

HARDDR:网卡的物理地址。删除它避免后续克隆虚拟机时出现多台虚拟机的网卡物理地址相同,从而导致网络故障。

ONBOOT:是否在系统启动时激活网卡。

UUID:唯一标识。与网卡地址一样,删除避免网络故障。

IPADDR:IP地址

192.168.106.0:表示NAT模式下的一个网络号。不可用。
192.168.106.1:表示IPv4地址。不可用。
192.168.106.2:表示网关。不可用。
192.168.106.255:表示NET模式下的广播地址。不可用。
所以IPADDR地址范围:192.168.106.3 到 192.168.106.254均可以配置。

NETMASK:子网掩码
GATEWAY:网关
DNS:域名解析地址,*为1,2,3,4…,有多个就配置多个,这里配置了两个。

(3)重启网络服务,使其生效

service network restart

(4)测试网络配置是否成功

ping www.baidu.com

image-20220403135322618

如上图,配置成功了。

(5)如下图进行克隆,创建虚拟机zookeeper02、zookeeper03。

image-20220329192455535

image-20220329192847332

克隆完成的虚拟机配置与之前的完全一致,我们需要更改网络配置中的IPADDR,使他们各不相同。

删除网卡地址的对应文件,使其重新生成网卡地址。

rm /etc/udev/rules.d/70-persistent-net.rules

重启虚拟机,进行ping www.baidu.com测试。

笔者在开启多台虚拟机时发现电脑自动蓝屏重启了。如您遇到类似问题可以参考博客:关于多开几台虚拟机就蓝屏重启的解决方案_时空之魔的博客-CSDN博客_虚拟机多开蓝屏解决。

3.2 zookeeper集群搭建

zookeeper集群至少需要三台zookeeper,我们的策略是:每一台主机安装一个zookeeper。试想:如果主机数量是10台,我们就需要安装10个zookeeper,这样效率显然不高。后面我们将解决这个问题,现在先来每一个主机安装一个zookeeper。

(1)xshell与虚拟机建立连接

在虚拟机启动的前提下,在xshell中选择文件->新建连接。

image-20220403163759140

这里会让您输入用户名与密码,如果您的登录名或密码与虚拟机用户名(不是主机名哦)不一致,将会报错ssh服务器拒绝…,如下图,改为一致即可。

image-20220403164525961

如果您连接不上,请自查之前主机的网络配置是否正确。尤其注意关注使用ifconfig命令查看ip等。

(2) 服务器命名

在xshell中操作主机zookeeper01.在zkData下新建并编辑文件myid。

cd /home/wangzhou/Downloads/zookeeper-3.5.7/zkData

输入1并保存退出。

(3)软件分发

我们可以使用软件分发脚本将zookeeper,jdk等直接分发到其它主机,在集群数量很多的情况下这可是特别高效的,不过在软件分发前我们需要做一些准备工作。

先将需要集群的主机取下别名。

 sudo vim /etc/hosts

image-20220403180528623

然后在home目录下新建文件夹bin

mkdir bin

编辑文件xsync,关于这个命令的更多介绍可以参考集群服务器的同步xsync命令使用_诗水人间的博客-CSDN博客_xsync未找到命令进行了解,总之它可以用来实现集群的软件分发工作。

vim xsync

具体内容如下。

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi


#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname


#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir


#4 获取当前用户名称
user=`whoami`


#5 循环
for((host=2;host<4;host++)); do
        echo ------------------- zookeeper$host --------------
        rsync -rvl $pdir/$fname $user@zookeeper0$host:$pdir
done

准备工作做好了,返回到zookeeper的上级目录,同步分发zookeeper。

/home/wangzhou/Downloads
su root
xsync ~/Downloads/zookeeper-3.5.7/

执行结果如下。

image-20220403184034508

可以在102上检查下。好神奇啊是不是。

image-20220403184332810

对另外两台主机也新建myid文件,分别写入2,3。

编辑服务器zookeeper01的配置文件 zoo.cfg。

#######################cluster##########################
server.1=zookeeper01:2888:3888 
server.2=zookeeper02:2888:3888
server.3=zookeeper03:2888:3888

上面的配置格式如下

server.A=B:C:D

其中A就是我们配置的myid,相当于一个身份标示;B就是主机的地址,我们更改了hosts文件,因此就使用别名代替了,您也可以直接使用ip地址;c时Leader与Follower通信的端口号;D是当Leader服务器挂了,用于选举的通信端口号。

分发到其它服务器。

[wangzhou@bogon conf]$ su root
[root@bogon conf]# xsync ./zoo.cfg 

启动zookeeper01。报错如下。

Error: JAVA_HOME is not set and java could not be found in PATH.

参考博客ZooKeeper安装后无法启动JAVA_HOME is not set and java could not be found in PATH._Eleven-十一的博客-CSDN博客解决该报错问题。

我们目前有三台服务器,但是只启动了一台,根据集群规则,zookeeper集群还没有达到半数服务器运行,集群无法正常运行。

我们如法炮制,将jdk,环境变量文件等分发到其它服务器,然后再启动一台服务器即可。

查看zkServer.sh status,zookeeper没有真正跑起来。

[wangzhou@bogon zookeeper-3.5.7]$ ./bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/wangzhou/Downloads/zookeeper-3.5.7/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost.
Error contacting service. It is probably not running.

查看日志。

[wangzhou@bogon zookeeper-3.5.7]$ cd logs
[wangzhou@bogon logs]$ vim zookeeper-root-server-bogon.out

日志信息如下。

2022-04-03 12:25:46,551 [myid:] - INFO  [main:QuorumPeerConfig@135] - Reading configuration from: /home/wangzhou/Downloads/zookeeper-3.5.7/bin/../conf/zoo.cfg
2022-04-03 12:25:46,574 [myid:] - INFO  [main:QuorumPeerConfig@387] - clientPortAddress is 0.0.0.0:2181
2022-04-03 12:25:46,574 [myid:] - INFO  [main:QuorumPeerConfig@391] - secureClientPort is not set
2022-04-03 12:25:46,599 [myid:] - ERROR [main:QuorumPeerMain@89] - Invalid config, exiting abnormally
org.apache.zookeeper.server.quorum.QuorumPeerConfig$ConfigException: Address unresolved: zookeeper01:3888
        at org.apache.zookeeper.server.quorum.QuorumPeer$QuorumServer.<init>(QuorumPeer.java:261)
        at org.apache.zookeeper.server.quorum.flexible.QuorumMaj.<init>(QuorumMaj.java:89)
        at org.apache.zookeeper.server.quorum.QuorumPeerConfig.createQuorumVerifier(QuorumPeerConfig.java:597)
        at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseDynamicConfig(QuorumPeerConfig.java:630)
        at org.apache.zookeeper.server.quorum.QuorumPeerConfig.setupQuorumPeerConfig(QuorumPeerConfig.java:603)
        at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parseProperties(QuorumPeerConfig.java:422)
        at org.apache.zookeeper.server.quorum.QuorumPeerConfig.parse(QuorumPeerConfig.java:152)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.initializeAndRun(QuorumPeerMain.java:113)
        at org.apache.zookeeper.server.quorum.QuorumPeerMain.main(QuorumPeerMain.java:82)
Invalid config, exiting abnormally                                                                                        

看上去是配置的问题。原来我们的cfg配置要求特别严格,一个空格啥的都可能导致zookeeper异常。参考博客zookeeper启动报错:Address unresolved-Ddmit未解决,但是从中想到可能是因为zookeeper01设置了hosts规则,其它主机没有设置。将hosts文件同步到其它主机即可。同时,还要记得关闭各个主机的防火墙。

在CentOS 5和CentOS 6系统中,关于如何开启防火墙、关闭防火墙、查看防火墙运行状态,请参考以下信息,注意需要在root用户操作哦:

  • 开启防火墙

    service iptables start
    
  • 关闭防火墙

    service iptables stop
    
  • 查看防火墙运行状态

    service iptables status
    

终于成功了

image-20220403221544013

image-20220403221433155

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

zookeeper入门到精通03——zookeeper集群搭建 的相关文章

  • 为分布式做准备吧——远程调用服务(RPC)和基于消息的通信(Message Queue)对比

    文章目录 系统结构 功能特点 应用 系统结构 RPC Message Queue 调用方式 Consumer lt gt Provider Sender lt gt Queue lt gt Receiver 调用对象 Consumer调用的
  • 【业务功能篇78】微服务-前端后端校验- 统一异常处理-JSR-303-validation注解

    5 前端校验 我们在前端提交的表单数据 我们也是需要对提交的数据做相关的校验的 Form 组件提供了表单验证的功能 只需要通过 rules 属性传入约定的验证规则 并将 Form Item 的 prop 属性设置为需校验的字段名即可 校验的
  • 年底裸辞准备面试,我用7张图画了ZK分布式锁!

    一 写在前面 之前写过一篇文章 都2022年了 出去面试连分布式锁的源码你都不会画 给大家说了一下Redisson这个开源框架是如何实现Redis分布式锁原理的 这篇文章再给大家聊一下ZooKeeper实现分布式锁的原理 同理 我是直接基于
  • Docker搭建zookeeper

    问题背景 前言 本文参考自 docker compose快速搭建Zookeeper集群 熬到凌晨三点多验证部署成功 网上有很多文章已经无法正确部署了 因为有些东西版本升级了 版本跟不上就会报错 还有一种更加详细更加全面的部署方式 Docke
  • Nacos安装配置详细流程

    快速导航 1 Nacos安装 1 1概述 1 2 下载 1 3 安装 1 4 启动和关闭 1 5 测试 2 Nacos持久化 2 1为什么持久化 2 2配置Nacos持久化 2 2 1 切换数据库 2 2 2 初始化数据库 2 2 3 测试
  • springboot注册到consul中报错:Spring MVC found on classpath, which is incompatible with Spring Cloud

    今天在做springboot整合成springCloud并注册到consul中时 发现若注册到consule中成功 则不能启动swagger 且不能提供任何API服务 要是能提供API服务则不能注册到consule中 并报错 Spring
  • Centos7下安装Zookeeper

    一 配置java环境 1 安装JDK yum install y java 1 8 0 openjdk 2 查看版本 root zookeeper java version openjdk version 1 8 0 362 OpenJDK
  • 【HBZ分享】数仓里面的概念-宽表-维度表-事实表概念讲解

    数仓概念 1 度量值 可被统计的 比如 次数 销量 营销额 订单表中的下单金额等可以统计的值叫度量值 2 维度表 1 对事实描述的信息 每一张表都对应现实世界中的一个对象或概念 比如 用户 商品 日期 地区维度 2 比如要分析商品的销售情况
  • SpringCloudGateway路由策略:Nacos同集群优先

    使用版本
  • 分布式锁解决方案_Zookeeper分布式锁原理

    通过召zk实现分布式锁可靠性时最高的 公平锁和可重入锁的原理 取水秩序 1 取水之前 先取号 2 号排在前面的 就可以先取水 3 先到的排在前面 那些后到的 一个一个挨着 在井边排成一队 公平锁 这种排队取水模型 就是一种锁的模型 什么是可
  • zookeeper 搭建教程(完整版)

    zookeeper 搭建教程 完整版 1 解压zookeeper文件 root master tar zxvf opt software apache zookeeper 3 5 7 bin tar gz C opt module 修改文件
  • 客户机操作系统已禁用 CPU。请关闭或重置虚拟机。解决方法

    今天在用VMware安装CentOS7报了这个错误 在网上找半天都没解决 最后换一个地址下的镜像就能正常安装了 Index of centos 7 9 2009 isos x86 64
  • ZooKeeper踩坑

    一 下载安装包时要下载文件名中带有bin的安装包 否则会报错 找不到或无法加载主类 org apache zookeeper server quorum QuorumPeerMain Error contacting service 这是由
  • SpringCloud概述

    SpringCloud概述 1 SpringCloud是什么 2 SpringCloud和SpringBoot关系 3 Dubbo和SpringCloud技术选型 4 SpringCloud作用 1 SpringCloud是什么 现代化的J
  • SpringCloud使用Zookeeper作为服务注册发现中心

    本篇文章主要记录SpringCloud使用Zookeeper作为服务注册发现中心 通过服务提供者和消费者为例 来真正掌握zk注册中心 目录 一 搭建服务提供者 1 创建cloud provider payment8004项目 2 修改配置
  • GoLong的学习之路,进阶,微服务之序列化协议,Protocol Buffers V3

    这章是接上一章 使用 RPC包 序列化中没有详细去讲 因为这一块需要看的和学习的地方很多 并且这一块是RPC中可以说是最重要的一块 也是性能的重要影响因子 今天这篇主要会讲其使用方式 文章目录 Protocol Buffers V3 背景以
  • 双非本科进不了大厂?阿里技术四面+交叉面+HR面,成功拿到offer

    前言 前两天 我收到了阿里巴巴的实习offer 从学长内推开始面试到拿到最后offer经历了4面技术 一面交叉面和一面HR面 经过了漫长的等待和几次几乎折磨的面试之后 终于拿到了实习offer 自我介绍 本人来自西南某双非本科学校 该校学的
  • 什么是微服务

    微服务是一种架构风格 它把一个大型的复杂软件应用划分为一系列小的服务 每个服务都具有单一的功能 运行在其自己的进程中 并通常基于不同的编程语言和框架 这些服务之间通过轻量级通信机制相互通信 这种通信机制基于HTTP协议 微服务架构风格使得系
  • Zookeeper 和 Dubbo 的关系?

    Zookeeper的作用 zookeeper用来注册服务和进行负载均衡 哪一个服务由哪一个机器来提供必需让调用者知道 简单来说就是ip地址和服务名称的对应关系 当然也可以通过硬编码的方式把这种对应关系在调用方业务代码中实现 但是如果提供服务
  • 2023 年精选:每个 DevOps 团队都应该了解的 5 种微服务设计模式

    微服务彻底改变了应用程序开发世界 将大型整体系统分解为更小 更易于管理的组件 这种架构风格的特点是独立 松散耦合的服务 带来了从可扩展性 模块化到更高的灵活性等众多优势 DevOps 团队如何最好地利用这种方法来实现最高效率 答案在于理解并

随机推荐

  • 【Python】之 os.path 模块详解

    前言 os path 模块是系统路径操作模块 但实际的原理可以把它认为是处理包含斜杠 和反斜杠 字符串的模块 其中 斜杠 是 linux 系统下的路径分隔符 和反斜杠 是 windows 系统下的路径分隔符 也就是说 只要提供一个包含斜杠和
  • 论文阅读笔记:Attention is All You Need

    论文标题 Attention is All You Need 目录 论文标题 Attention is All You Need 1 摘要 2 前言 3 模型结构 自注意力机制 多头自注意力机制 注意力机制在Transformer中的应用
  • shell脚本不能激活环境变量问题完美解决

    今天在Linux系统写shell脚本时发现配置好java环境变量后 明明写了source etc profile 但还是不能激活 也就是java version没有反应 非要自己手动去激活 后来发现我是用 test sh 来启动的脚本 te
  • RPA技术分享--通过解压 OFD 获取发票信息

    了解RPA www i search com cn 学习RPA https support i search com cn 下载RPA https www i search com cn from csdn 实际上 ofd docx xls
  • sql实现截取字段内容

    场景 出现一批数据需要修复 调用方法进行传参 而存储该字段内容是JSONString呈现 所需的仅仅是其中的某一部分数据 因此需要完成截取 并拼接成想要的格式 使用如下格式调用postman实现自动化执行接口调用 例如 taskId xxx
  • 用GCC生成和调用dll【C语言版】

    今天在网上找了好久 才找到这个能成功运行的视频教程 现在分享给大家 Windows下C语言使用GCC编写和调用dll https www bilibili com video BV1E4411z7Ua share source copy w
  • 颜色识别的实例二

    原图 识别结果 代码 color fuses hdev classify fuses by color dev update window off step set up fuse properties and hue ranges Fus
  • iwebsec靶场 SQL注入漏洞通关笔记6- 宽字节注入

    系列文章目录 iwebsec靶场 SQL注入漏洞通关笔记1 数字型注入 mooyuan的博客 CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记2 字符型注入 宽字节注入 mooyuan的博客 CSDN博客 iwebsec靶场 SQL
  • (十七)QT生成PDF文件

    在实际情况中 我们有时候会遇到需要把txt html或者图片变成PDF文件的情况 例如把检测结果生成PDF文档给客户等等 QT4使用QPrinter来实现这个功能 QT5修改为QPdfWriter这个类 一 QT5的修改 如果你想在QT5中
  • 思岚RPLIDAR A2 在ubuntu 16.04上的测试

    1 下载雷达ROS包 首先在github上下载rplidar的ros包 下载指令为 默认安装了git git clone https github com Slamtec rplidar ros git 在ubuntu上创建工作空间 并将该
  • 落地领域大模型应知必会(2): 轻量化微调

    编者按 在实际部署大模型的过程中可能会面临资源限制的问题 通过轻量化大模型微调技术 可以将大型预训练语言模型适配到特定领域 特定任务 并减小其模型尺寸和计算量需求 提高性能和效率 在上一篇文章中 我们分享了大语言模型的主要微调技术总览 接下
  • 实验6-6 使用函数验证哥德巴赫猜想 (20分)

    http pta patest cn pta test 13 exam 3 question 478 include
  • iOS 关于NSNotificationCenter

    通常我们在 iOS 中发生什么事件时该做什么是由 Delegate 实现的 Apple 还为我们提供了另一种通知响应方式 那就是 NSNotification NSNotificationCenter 较之于 Delegate 可以实现更大
  • 计算机视觉OpenCV-图像直方图

    欢迎来到本博客 作者简介 目前计算机研究生在读 主要研究方向是人工智能和群智能算法方向 目前熟悉python网页爬虫 机器学习 计算机视觉 OpenCV 群智能算法 然后正在学习深度学习的相关内容 以后可能会涉及到网络安全相关领域 毕竟这是
  • 100家企业近年面试题整理

    打造最受企业欢迎的iOS开发者 一直都存在的问题 什么样的员工最受企业欢迎 一直也有人在努力提升自己 成为受企业欢迎的员工 然而 我们应该往方向去提升自己呢 100家知名企业今年来iOS面试题合集 你要的这里都有 企业要的这里也有 从基础开
  • Unity Resources资源管理的优点和痛点

    1 1 Resources详解 我觉得 Resources之所以能被广泛的使用 是因为它的使用非常简单 并且是同步加载 一般来说 正式的商业项目 对外发布资源的时候都是使用AssetBundles的方式进行 AssetBundles的方式有
  • re.compile(pattern,flags=0)中flags的用法

    re正则表达式模块还包括一些有用的操作正则表达式的函数 下面主要介绍compile函数 定义 compile pattern flags 根据包含正则表达式的字符串创建模式对象 通过python的help函数查看compile含义 1 he
  • 【数电】如何使用74LS112(或74LS74)构成一个十四分频器(模七计数器)

    IT精英们 大家都学过数字电子技术吧 尽管这东西没用 不过这些基础课程对思维的培养还是很有好处的 我不爱上课 但不代表我不喜欢数电 我们实验课老师为了加强实验难度 把实验题改掉了 用74LS112 或者74LS74 设计一个十四分频器 原来
  • PHP文件包含

    本地文件包含 打开PHPstudy 打开网站根目录 创建文件 文件内容为 在浏览器上查看所包含文件 远程文件包含 文件include php文件内容 print txt文件内容 远程查看print txt 远程包含shell shell t
  • zookeeper入门到精通03——zookeeper集群搭建

    zookeeper集群搭建 3 1 多虚拟机环境搭建 3 2 zookeeper集群搭建 3 1 多虚拟机环境搭建 我们需要搭建zookeeper集群 而由于zookeeper的的服务器数量需要设置为单数 前文介绍了原因 一个zookeep