zookeeper集群安装部署和集群异常处理

  1. 准备jdk和zookeeper安装包【官网即可下载】

zookeeper-3.5.1-alpha.tar.gz

jdk1.7.0_8020200612.tar

  1. 准备三台linux虚拟机【具体以项目实际需要为准】,并安装jdk和zookeeper

虚拟机地址如下:194.1.1.86(server.1)、194.1.1.74(server.2)、194.1.1.45(server.3)

  1. 安装zookeeper(/app/soft/安装目录自定义)

3.1、分别将zookeeper-3.5.1-alpha.tar.gz安装包拷贝至194.1.1.86、194.1.1.74、194.1.1.45服务器的/app/soft/目录,然后执行以下命令解压:

[domains@ensemble1 soft]$ tar -zxvf zookeeper-3.5.1-alpha.tar.gz zookeeper

然后进入zookeeper目录创建data、logs目录

[domains@ensemble1 zookeeper]$ pwd

/app/soft/zookeeper

[domains@ensemble1 zookeeper]$ mkdir logs data

3.2、配置zoo.cfg文件【3台虚拟机分别执行】:

进入conf目录执行以下命令拷贝创建zoo.cfg文件

[domains@ensemble1 conf]$ cpzoo_sample.cfgzoo.cfg

[domains@ensemble1 conf]$ ll

vi zoo.cfg配置集群信息1/2/3要与对应服务器和myid文件一致,其中2888是数据同步和通信端口,3888是选举端口:

server.1= 194.1.1.86:2888:3888

server.2= 194.1.1.74:2888:3888

server.3= 194.1.1.45:2888:3888

dataDir=/app/soft/zookeeper/data【配置zookeeper数据文件存储目录】

3.3、在服务存放zookeeper数据文件目录执行以下命令穿件myid文件,并分别写入各节点对应的数字,例如在194.1.1.86的myid文件中写入1:

[domains@ensemble1 data]$ pwd

/app/soft/zookeeper/data

[domains@ensemble1 data]$ echo 1 >myid

194.1.1.74的myid文件中写入2:

[domains@ensemble1 data]$ pwd

/app/soft/zookeeper/data

[domains@ensemble1 data]$ echo 2 >myid

194.1.1.45的myid文件中写入3:

[domains@ensemble1 data]$ pwd

/app/soft/zookeeper/data

[domains@ensemble1 data]$ echo 3>myid

3.4、可以根据需要修改日志路径:

日志文件输入路径在/app/soft/zookeeper/bin/zkEnv.sh变量里找到

if [ "x${ZOO_LOG_DIR}" = "x" ]

then

    ZOO_LOG_DIR="$ZOOKEEPER_PREFIX/logs"

Fi

  1. 启动zookeeper集群,分别进入3台虚拟机的/app/soft/zookeeper/bin/目录执行以下命令启动zookeeper服务:

[domains@ensemble1 bin]$ ./zkServer.sh start

ZooKeeper JMX enabled by default

Using config: /app/soft/zookeeper/bin/../conf/zoo.cfg

Starting zookeeper ... STARTED

然后查看当前服务状态:

[domains@ensemble1 bin]$ ./zkServer.sh status

ZooKeeper JMX enabled by default

Using config: /app/soft/zookeeper/bin/../conf/zoo.cfg

Client port found: 2181. Client address: localhost.

Mode: follower

注意:3台服务器的zookeeper服务都启动完成后,查看zookeeper状态会发现3台服务会选举一各leader节点和2个follower节点。

  1. 验证zookeeper集群是否搭建完成:

输入以下命令:[domains@ensemble1 bin]$ ./zkCli.sh -server 194.1.1.74:2181

输入ls/path

【查看zookeeper集群中注册的服务,在zookeeper中各服务的存储Id,客户端

调用服务时也是通过id值找到集群服务中对应的应用服务然后调用】

  1. 集群中各节点宕机后的影响和处理方式:

以上3个节点的zookeeper集群中会选举出一个leader和2个follower节点,follower几点负责接收客户端的请求并处理,leader节点负责服务端服务id的写入并同步给follower节点。

6.1、2个follower节点中任意一个节点挂掉

当2个follower节点中任意一个节点挂掉是不会影响zookeeper集群对外提供服务,这个时候恢复集群只需要把对应宕机节点的zookeeper服务重新启动即可。

6.2、 2个follower节点同时宕机

当2个follower节点同时宕机挂掉是不会影响zookeeper集群对外提供服务,但是应用服务后台会提示zookeeper连接拒绝异常:

2024-03-15 15:25:13,108 : eaip-XA1010080-0 WARN main-SendThread(194.1.35.8:2181) org.apache.zookeeper.ClientCnxn run 1235: Session 0x318dd1c13950000 for server 194.1.1.74/194.1.1.74:2181, unexpected error, closing socket connection and attempting reconnect

java.net.ConnectException: Connection refused: no further information

atsun.nio.ch.SocketChannelImpl.checkConnect(Native Method)

at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)

at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:357)

at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1214)

2024-03-15 15:25:13,612 : eaip-XA1010080-0 WARN main-SendThread(194.1.1.86:2181) org.apache.zookeeper.ClientCnxn run 1235: Session 0x21eff7c26120000 for server 194.1.1.74/194.1.1.74:2181, unexpected error, closing socket connection and attempting reconnect

java.net.ConnectException: Connection refused: no further information

atsun.nio.ch.SocketChannelImpl.checkConnect(Native Method)

at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)

at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:357)

at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1214)这个时候恢复集群只需要把对应宕机节点的zookeeper服务重新启动即可。

6.2、leader节点宕机挂掉

当leader节点宕机挂掉后,应用服务是不会出现异常。这个时候2个follower节点会自动选举一个新的leader节点,此时只需要把宕机的节点重新启动即可。

6.3、leader节点和一个follower节点同时宕机

当eader节点和一个follower节点同时宕机掉后,客户端调用应用服务会出现异常。但是这个时候zookeeper集群服务应挂掉,需要重启3台服务器zookeeper服务器。       

2024-03-15 15:36:59,995 : gw-nbs-XA1010080-0 WARN RMI TCP Connection(194.1.35.8:2181) org.apache.zookeeper.ClientCnxn run 1235: Session 0x10f9f2774430000 for server 194.1.1.74/194.1.1.74:2181, unexpected error, closing socket connection and attempting reconnect

java.net.ConnectException: Connection refused: no further information

         atsun.nio.ch.SocketChannelImpl.checkConnect(Native Method)

         at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)

         at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:357)

         at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1214)

2024-03-15 15:37:00,330 : gw-nbs-XA1010080-0 WARN RMI TCP Connection(194.1.1.86:2181) org.apache.zookeeper.ClientCnxn run 1235: Session 0x0 for server 194.1.1.74/194.1.1.74:2181, unexpected error, closing socket connection and attempting reconnect

java.net.ConnectException: Connection refused: no further information

         atsun.nio.ch.SocketChannelImpl.checkConnect(Native Method)

         at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)

         at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:357)

         at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1214)

2024-03-15 15:37:00,912 : gw-nbs-XA1010080-0 WARN RMI TCP Connection(194.1.1.86:2181) org.apache.zookeeper.ClientCnxn run 1235: Session 0x0 for server 194.1.1.74/194.1.1.74:2181, unexpected error, closing socket connection and attempting reconnect

6.4、3个集群节点同时宕机

需要重启3台服务器zookeeper服务器。

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

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

相关文章

阿里云-云服务器ECS新手如何建网站?

租阿里云服务器一年要多少钱? 不同类型的服务器有不同的价格。 以ECS计算型c5为例:2核4G-1年518.40元,4核8G-1年948.00元。 阿里云ECS云服务器租赁价格由三部分组成: 也就是说,云服务器配置成本磁盘价格网络宽带价格…

本地部署Grok需要的条件

2024年3月18日凌晨三点钟,马斯克开源了Grok,兑现了他承诺,Grok 的开源将为人工智能技术的发展和应用带来新的机遇,那我们如何运行、部署Grok呢。 本地部署Grok通常需要以下条件: 硬件资源: 大量的计算资源&…

VTK中GetOutputPort()和GetOutput()的区别

SetInput()函数被彻底删除了,只剩下SetInputConnection()和SetInputData()函数: 1、GetOutputPort(): GetOutputPort() 返回的是上一个算法管道对象输出(output port&am…

C#-面向对象基本概念

1. 面向对象基本概念 之前所接触到的编程方式叫做面向过程面向过程和面向对象是两种不同的编程方式对比面向过程的特点,可以更好的了解什么是面向对象 1.1 过程和函数(科普) 过程是早期的一个编程概念过程类似于函数,只能执行&…

【JAVA笔记】IDEA配置本地Maven

文章目录 1 配置本地Maven1.1 Maven下载1.2 Maven安装与配置1.2.1 安装1.2.2 配置1.2.2.1 环境配置1.2.2.2 本地仓库配置 2 IDEA设置本地Maven 1 配置本地Maven 1.1 Maven下载 官网:http://maven.apache.org/下载地址:http://maven.apache.org/downloa…

浏览器如何查看http请求的报文?

HTTP协议用于从WWW服务器传输超文本到本地浏览器的传送协议。 它可以使浏览器更加高效,使网络传输减少。 它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示 (如文本先于图形)等。所以在node.js里…

Vertex cover preprocessing for influence maximization algorithms

Abstract 影响力最大化问题是社交网络分析中的一个基本问题,其目的是选择一小组节点作为种子集,并在特定的传播模型下最大化通过种子集传播的影响力。本文研究了独立级联模型下影响力最大化算法中执行顶点覆盖作为预处理的效果。所提出的方法从主要计算过…

网络通信加密算法有哪些及其原理

网络通信加密算法的原理 网络通信加密算法的原理可以通过两种算法来解释:对称加密算法和非对称加密算法。 对称加密算法:对称加密算法使用相同的密钥来进行加密和解密。在通信开始之前,双方需要协商一个密钥,并确保第三方无法获…

结构体成员访问操作符

1.结构体成员的直接访问: 结构体变量.成员名: 2.结构体成员的间接访问: 间接访问应用于指向结构体变量的指针:如下

Qt应用开发(安卓篇)——安卓广播机制

一、前言 在Android的开发中,我们的程序需要得到网络状态变化、电池状态、屏幕状态、电池、系统启动完成、U盘等外设接入状态、apk安装等这些信息,除了主动去找到这些节点的信息,还可以通过安卓的广播机制被动去得到。 Android广播机制包含三…

代码随想录算法训练营第九天|28. 实现 strStr()、459.重复的子字符串、字符串总结、双指针回顾

题目:28. 实现 strStr() 文章链接:代码随想录 视频链接:LeetCode:实现strStr 题目链接:力扣题目链接 详解:KMP:主要应用于字符串匹配,当出现字符串不匹配是,可以知道一部分之前已…

YOLOv8独家改进:block改进 | RepViTBlock和C2f进行结合实现二次创新 | CVPR2024清华RepViT

💡💡💡本文独家改进:CVPR2024 清华提出RepViT:轻量级新主干!从ViT角度重新审视移动CNN,RepViTBlock和C2f进行结合实现二次创新 改进结构图如下: 收录 YOLOv8原创自研 https://blog.csdn.net/m0_63774211/category_12511737.html?spm=1001.2014.3001.5482 💡…

数字化时代的风向标:解密Facebook的成功秘诀

在当今数字化时代,社交媒体已经成为人们日常生活中不可或缺的一部分,而Facebook作为全球最大的社交媒体平台之一,其成功之处不言而喻。本文将深入探讨Facebook的成功秘诀,解密其在数字化时代的风向标。 用户体验至上: …

深入探讨ChatGPT:技术突破与应用前景

目录 一、ChatGPT究竟是什么? 二、ChatGPT的发展脉络 三、ChatGPT的突出优势 强大的语言生成能力 多场景适应性 多语言处理能力 广泛的应用范围 数据敏感性的重视 四、结语:ChatGPT的未来与挑战 Tips:国内的ChatGPT ⭐ 点击进入Chat…

c#——请求一个URL接口

.net 4.6环境下 .net4.6支持异步编程 命名空间&#xff1a; using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; 创建一个异步方法发送请求&#xff1a; public static async Task<string> CallWebAPIAsync(string url, strin…

什么是React属性钻取(Prop Drilling)

一、介绍 在React开发过程中&#xff0c;状态管理是一个绕不开的话题。无论是新手还是有经验的开发者&#xff0c;都会面临如何有效管理组件状态的挑战。React为我们提供了多种状态管理方案&#xff0c;如直接的状态传递&#xff08;俗称"属性钻取"&#xff09;、Co…

那些年我们在数模竞赛中踩过的坑(附避坑指南)

数乐君猜测关注我们的同学大多都已经参加过数模竞赛了&#xff0c;可能有的同学对于数模竞赛的经验已经很丰富&#xff0c;或者即将要参加第一次数模竞赛&#xff0c;但要说起曾经在数模竞赛中踩的那些坑&#xff0c;也是有苦难言&#xff0c;那或许大家会好奇&#xff0c;数模…

【神经网络 基础知识整理】前向传播 反向传播

神经网络 基础知识整理 前向传播前向传播pytorch中的forward函数 反向传播 顾名思义&#xff0c;前向传播是从前往后传播的&#xff0c;从input层到output层的方向&#xff1a;前面一层的输出传入后一层作为输入&#xff0c;再对数据进行相应的处理&#xff0c;继续传下去&…

力扣Lc17--- 345.反转字符串中的元音字母(java版)-2024年3月18日

1.题目 2.知识点 注1&#xff1a; indexOf() 是 Java 中 String 类的方法之一&#xff0c;它用于查找指定字符或字符串在字符串中第一次出现的位置。如果找到了该字符或字符串&#xff0c;则返回它在字符串中的索引位置&#xff08;从0开始&#xff09;&#xff0c;如果没有找…

Qt的多线程类

主要介绍一些Qt的多线程类 QThread QThread 是 Qt 提供的基本的多线程类&#xff0c;它允许创建自定义的线程。可以继承 QThread 类&#xff0c;并重写其 run() 方法&#xff0c;在 run() 方法中编写线程要执行的代码。以下是一个简单的示例&#xff1a; #include <QThre…