【小小的脑袋,大大的疑问】如何在Zookeeper中配置集群?

在Zookeeper中配置集群涉及多个步骤,以确保集群的稳定性和高效运行。以下是一个详细的配置流程:

一、环境准备

  1. 选择服务器

    • 选择合适数量的服务器,通常为奇数(如3台、5台等),以避免脑裂问题。
    • 确保服务器之间网络连接稳定,延迟低。
  2. 安装JDK

    • Zookeeper依赖于Java环境,因此需要在每台服务器上安装JDK,并确保java -version命令能够成功执行。
  3. 下载Zookeeper安装包

    • 从Apache Zookeeper官网下载最新版本的Zookeeper安装包。

二、服务器配置

  1. 安装Zookeeper
    • 将下载的Zookeeper安装包解压到指定目录。
    • 配置环境变量(可选),以方便在命令行中访问Zookeeper的启动脚本和客户端工具。
    例子:

这里以Linux环境为例,展示如何使用tar命令来解压,并简要说明如何配置环境变量(假设你已经有了Zookeeper的压缩包文件,比如zookeeper-3.7.0.tar.gz)。

(1)解压Zookeeper安装包
  1. 首先,使用cd命令进入到你想要解压Zookeeper的目录。比如,你可能想要将Zookeeper解压到/opt目录下:

    cd /opt
    
  2. 然后,使用tar命令来解压Zookeeper的压缩包。确保你拥有足够的权限来解压到该目录(你可能需要使用sudo)。例如:

    sudo tar -xzf /path/to/zookeeper-3.7.0.tar.gz
    

    这里/path/to/zookeeper-3.7.0.tar.gz是你的Zookeeper压缩包文件的实际路径。解压后,你会在/opt目录下看到一个名为zookeeper-3.7.0(或你下载的Zookeeper版本的相应名称)的目录。

(2)配置环境变量(可选)

配置环境变量可以让你在任何目录下都能方便地访问Zookeeper的启动脚本和客户端工具。这通常通过修改用户的shell配置文件(如.bashrc.bash_profile.zshrc等,取决于你使用的shell)来实现。
以下是如何在.bashrc文件中为Zookeeper配置环境变量的示例(假设你已经将Zookeeper解压到了/opt/zookeeper-3.7.0):

  1. 打开你的.bashrc文件进行编辑。你可以使用任何文本编辑器,比如nanovi
    nano ~/.bashrc
    
  2. 在文件的末尾添加以下行(确保将/opt/zookeeper-3.7.0替换为你的Zookeeper实际安装路径):
    export ZK_HOME=/opt/zookeeper-3.7.0
    export PATH=$PATH:$ZK_HOME/bin
    
    这里,ZK_HOME是一个自定义的环境变量,用于存储Zookeeper的安装目录。然后,我们将$ZK_HOME/bin目录添加到PATH环境变量中,这样你就可以在任何地方通过命令行访问Zookeeper的脚本了。
  3. 保存并关闭.bashrc文件。
  4. 要使更改生效,你需要重新加载.bashrc文件。可以通过运行以下命令来完成:
    source ~/.bashrc
    
    或者,你可以简单地关闭并重新打开你的终端。

现在,你应该能够在任何目录下通过运行zkServer.shzkCli.sh等命令来启动Zookeeper服务或连接到Zookeeper客户端了。

  1. 配置防火墙
    • 确保服务器之间的防火墙设置允许Zookeeper集群通信端口(默认为2888和3888)的通信。
      以下是一些常见的Linux防火墙管理工具及其相应的命令来允许这些端口:
1. 使用iptables(适用于大多数Linux发行版)

如果你使用的是iptables作为防火墙管理工具,你可以通过添加规则来允许特定的端口。以下命令展示了如何允许2888和3888端口的TCP流量:

sudo iptables -A INPUT -p tcp --dport 2888 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 3888 -j ACCEPT

注意:这些命令是临时的,重启后不会保留。要永久保存这些规则,你需要根据你的Linux发行版使用相应的服务管理工具(如iptables-persistentnetfilter-persistentsave/restore命令)来保存规则。

2. 使用firewalld(Fedora、CentOS 7及更高版本、RHEL 7及更高版本等)

如果你的系统使用firewalld作为防火墙管理工具,你可以通过以下命令来允许端口:

sudo firewall-cmd --permanent --zone=public --add-port=2888/tcp
sudo firewall-cmd --permanent --zone=public --add-port=3888/tcp
sudo firewall-cmd --reload

这里,--zone=public指定了防火墙区域(根据你的配置,这个区域名称可能不同)。--permanent选项表示这些更改是永久的。最后,--reload选项重新加载防火墙规则以应用更改。

3. 使用ufw(Ubuntu的Uncomplicated Firewall)

对于使用ufw的Ubuntu系统,你可以使用以下命令来允许端口:

sudo ufw allow 2888/tcp
sudo ufw allow 3888/tcp

这些命令会立即应用更改,并且(在Ubuntu上)这些更改是持久的,因为ufw会自动保存其配置。

排查

要排查防火墙设置是否允许了这些端口,你可以使用telnet(如果已安装)或nc(netcat)工具来测试端口是否开放。例如,从集群中的一个节点到另一个节点,你可以运行:

telnet <other-node-ip> 2888

或者

nc -zv <other-node-ip> 2888

如果端口是开放的,这些命令应该会显示连接成功或类似的消息。如果端口被阻塞,它们将显示连接失败或超时。

请注意,如果telnetnc没有安装在你的系统上,你可能需要先安装它们。在Ubuntu上,你可以使用sudo apt-get install telnetsudo apt-get install netcat来安装。在其他Linux发行版上,相应的包管理器命令可能会有所不同。

三、Zookeeper集群配置

  1. 编辑zoo.cfg文件

    • 在Zookeeper的conf目录下,找到zoo_sample.cfg文件,将其复制并重命名为zoo.cfg
    • 编辑zoo.cfg文件,设置以下关键配置项:
      • dataDir:指定Zookeeper数据存储的目录。
      • clientPort:指定客户端连接的端口号。
      • tickTime:Zookeeper中基本的时间单位,用于心跳和超时等。
      • initLimit:Leader服务器等待Follower服务器启动并完成数据同步的时间限制。
      • syncLimit:Leader服务器与Follower服务器之间同步数据的时间限制。
      • 在文件末尾添加集群成员信息,格式为server.N=YYY:A:B,其中N是服务器编号,YYY是服务器IP地址,A是服务器之间通信的端口,B是Leader选举的端口。
  2. 创建myid文件

    • 在每台服务器的dataDir目录下创建myid文件,文件内容为该服务器的编号(与zoo.cfg中配置的server.N相对应)。

四、启动Zookeeper集群

  1. 启动Zookeeper服务

    • 在每台服务器上启动Zookeeper服务。可以使用zkServer.sh start命令(Linux环境)或相应的命令(Windows环境)。
    • 注意,在启动过程中,Zookeeper会自动进行Leader选举,确保集群中有一个Leader和多个Follower(或Observer)。
  2. 验证集群状态

    • 使用zkServer.sh status命令(Linux环境)检查每台服务器的角色和状态。
    • 也可以使用Zookeeper客户端工具(如zkCli.sh)连接到集群,并验证集群的状态和数据一致性。

五、维护与监控

  1. 数据备份

    • 定期备份Zookeeper的数据,以防止数据丢失。
    • 可以使用Zookeeper自带的PurgeTxnLog工具或编写脚本定期清理旧的事务日志和快照文件。
  2. 健康监控

    • 使用监控工具(如Prometheus、Grafana等)监控Zookeeper集群的健康状况和性能指标。
    • 定期检查集群的日志文件和性能指标,及时发现并处理潜在问题。
  3. 安全配置

    • 根据需要配置适当的安全功能(如SSL/TLS加密、Kerberos认证等)以保护集群免受未授权访问和数据泄露的风险。

通过以上步骤,您可以在Zookeeper中成功配置集群,并确保其稳定运行。请注意,具体的配置参数和步骤可能会因Zookeeper的版本和部署环境的不同而有所差异,请根据实际情况进行调整。

六、如何在Zookeeper中配置集群的配置文件

在Zookeeper中配置集群的配置文件(通常是zoo.cfg),需要遵循一定的步骤和规则来确保集群的正确配置和稳定运行。以下是一个详细的配置过程:

(1)、获取Zookeeper安装包并解压

首先,从Apache Zookeeper官网或其他可信源下载Zookeeper的安装包,并将其解压到服务器的指定目录。例如,解压到/opt/zookeeper目录。

(2)、复制并编辑zoo.cfg文件
  1. 复制配置文件
    在Zookeeper的conf目录下,通常会有一个名为zoo_sample.cfg的示例配置文件。将该文件复制一份,并重命名为zoo.cfg,以便进行编辑。

    cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
    
  2. 编辑zoo.cfg文件
    使用文本编辑器(如vinano等)打开zoo.cfg文件,并进行必要的配置。

(3)、配置关键参数

zoo.cfg文件中,需要配置以下关键参数:

  1. dataDir
    指定Zookeeper存储数据的目录。这个目录在集群的所有节点上都应该存在,并且Zookeeper进程有权限读写。

    dataDir=/opt/zookeeper/data
    
  2. clientPort
    指定客户端连接Zookeeper服务器的端口。这是Zookeeper服务监听的端口,用于接收客户端的请求。

    clientPort=2181
    
  3. tickTime
    Zookeeper中基本的时间单位,用于心跳和超时等。可以根据实际需要调整该值。

    tickTime=2000
    
  4. initLimitsyncLimit
    这两个参数用于配置Zookeeper集群中Follower与Leader之间的同步和超时限制。

    initLimit=10
    syncLimit=5
    
  5. 集群成员配置
    zoo.cfg文件的末尾,添加集群成员的配置信息。格式为server.N=YYY:A:B,其中N是服务器编号(从1开始),YYY是服务器的IP地址或主机名(确保在/etc/hosts文件中进行了正确的IP地址与主机名的映射),A是服务器之间通信的端口,B是Leader选举的端口。

    server.1=node1:2888:3888
    server.2=node2:2888:3888
    server.3=node3:2888:3888
    

    注意:每个集群成员的A端口通常可以设置为相同的值,但B端口(选举端口)在集群中应该是唯一的,以避免端口冲突。

(4)、创建myid文件

在集群的每个节点上,都需要在dataDir指定的目录下创建一个名为myid的文件,并将文件内容设置为该节点的编号(与zoo.cfg文件中配置的server.N相对应)。例如,在节点1上,myid文件的内容应为1

echo "1" > /opt/zookeeper/data/myid
(5)、启动Zookeeper服务

配置完成后,就可以启动Zookeeper服务了。在集群的每个节点上执行启动命令(如zkServer.sh start),并检查服务状态(如使用zkServer.sh status命令)以确保集群正常运行。

(6)、验证集群配置

最后,可以通过Zookeeper客户端工具(如zkCli.sh)连接到集群中的任意节点,并执行一些基本操作来验证集群配置是否成功。例如,可以在一个节点上创建一个节点,并在另一个节点上验证该节点是否存在。

通过以上步骤,就可以在Zookeeper中成功配置集群的配置文件了。请注意,具体的配置参数和步骤可能会因Zookeeper的版本和部署环境的不同而有所差异,请根据实际情况进行调整。

七、如何添加规则来允许TCP流量通过防火墙端口2888和3888

  • TCP流量是指通过传输控制协议(Transmission Control
    Protocol,简称TCP)传输的数据量。TCP是一种面向连接的、可靠的、基于字节流的运输层通信协议,它广泛应用于互联网中,为各种应用提供数据传输服务。
TCP流量的特点
  1. 面向连接:TCP在传输数据之前,需要先建立连接,即进行三次握手过程,确保双方通信的可靠性。
  2. 可靠性传输:TCP通过序列号、确认应答、超时重传等机制,确保数据能够准确无误地传输到对方。
  3. 流量控制:TCP通过滑动窗口等机制,控制发送方发送数据的速率,避免接收方因处理不过来而导致数据丢失。
  4. 拥塞控制:TCP还具备拥塞控制功能,能够监测网络状况,动态调整发送速率,避免网络拥塞。
TCP流量的计算

TCP流量通常是以字节(Byte)为单位进行计算的。在实际应用中,可以通过各种网络监测工具或软件来查看TCP流量的实时数据和统计信息,以便对网络性能进行评估和优化。

TCP流量的应用场景

TCP流量广泛应用于各种需要可靠数据传输的场合,如网页浏览、文件传输、远程登录、电子邮件等。在这些应用中,TCP通过其可靠的传输机制和流量控制、拥塞控制等功能,确保数据能够高效、准确地传输到对方。

在Windows系统中,添加规则以允许TCP流量通过防火墙端口2888和3888,你可以通过Windows防火墙的高级安全设置来完成。以下是详细的步骤:

(1)、打开Windows防火墙高级安全设置
  1. 使用管理员权限登录:确保你以管理员身份登录Windows系统。
  2. 打开控制面板:点击“开始”菜单,选择“控制面板”。
  3. 选择Windows Defender防火墙:在控制面板中,找到并点击“系统和安全”,然后选择“Windows Defender 防火墙”。
  4. 进入高级设置:在Windows Defender 防火墙页面,点击左侧的“高级设置”链接。
(2)、创建入站规则
  1. 选择入站规则:在Windows防火墙高级安全设置窗口中,左侧导航栏中选择“入站规则”。
  2. 新建规则:点击右侧的“新建规则”按钮,开始创建新的入站规则。
(3)、设置规则属性
  1. 选择规则类型:在“新建入站规则向导”中,选择“端口”作为规则类型,然后点击“下一步”。
  2. 配置TCP端口
    • 选择“TCP”作为协议。
    • 选择“特定本地端口”,并在文本框中输入“2888,3888”(注意用逗号分隔多个端口)。
    • 点击“下一步”。
  3. 定义操作:选择“允许连接”,然后点击“下一步”。
  4. 选择配置文件:根据需要选择适用的网络配置文件(域、专用、公用),通常建议全部选择。然后点击“下一步”。
  5. 命名规则:为规则指定一个名称和描述,例如“Allow Zookeeper Communication”,然后点击“完成”。
(4)、启用规则
  1. 找到新规则:在“入站规则”列表中,找到你刚刚创建的规则。
  2. 启用规则:右键点击规则,选择“启用规则”以确保其生效。
(5)、验证规则

为了验证规则是否已正确设置并生效,你可以使用命令行工具来检查端口是否已开放。打开命令提示符(以管理员身份),然后输入以下命令之一来检查端口2888或3888的TCP连接:

netstat -an | findstr 2888
netstat -an | findstr 3888

注意:这些命令将显示所有监听在指定端口上的TCP连接,但它们不会直接显示防火墙规则是否允许这些端口。要验证防火墙规则,你通常需要检查防火墙的设置或使用网络扫描工具来从外部测试端口的可达性。

另外,如果你使用的是Windows Server系统,并且已经熟悉PowerShell,你也可以使用netsh advfirewall命令来直接创建和配置防火墙规则,这可能会提供更高效和灵活的方式来管理防火墙设置。

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

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

相关文章

Kotlin 函数和变量(四)

导读大纲 1.1 基本要素: 函数和变量1.1.1 声明变量以存储数据1.1.2 将变量标记为只读或可重新赋值1.1.3 更简单的字符串格式化: 字符串模板 1.1 基本要素: 函数和变量 本节将向你介绍每个 Kotlin 程序都包含的基本元素: 函数和变量 你将编写自己的第一个 Kotlin 程序,了解 Kotl…

18_Python文件操作

计算机中的文件 文件是存储在计算机上的数据集合&#xff0c;它可以是文本、图片、音频、视频或其他任何类型的数据。 在计算机系统中&#xff0c;文件通常用来长期保存信息。 文本文件&#xff1a;一种以字符编码&#xff08;如ASCII、UTF-8、UTF-16等&#xff09;的形式存储…

高速滑环在摄像领域的应用分析

高速滑环在现代摄像技术中扮演着至关重要的角色。随着摄像设备向高速度、高精度的方向发展&#xff0c;传统的信号传输方式已无法满足需求。高速滑环作为连接旋转部件与固定部件的重要组件&#xff0c;能够有效地传递电信号和数据&#xff0c;为摄像设备的高效运转提供保障。 …

[arcgis插件]在批量出图时,如何把图层属性表以动态表格的形式插入到布局页面

在Arcmap&#xff0c;如何把图层属性表以动态表格的形式插入到布局页面? 众所周知&#xff0c;在属性表的左上角&#xff0c;有个功能是“把表添加到布局”&#xff0c;就可以把属性表以表格的形式添加到布局页面。 但是今天要说的是并不是这个&#xff0c;今天要说的是&…

神经网络(一):神经网络入门

文章目录 一、神经网络1.1神经元结构1.2单层神经网络&#xff1a;单层感知机1.3两层神经网络&#xff1a;多层感知机1.4多层神经网络 二、全连接神经网络2.1基本结构2.2激活函数、前向传播、反向传播、损失函数2.2.1激活函数的意义2.2.2前向传播2.2.3损失函数、反向传播2.2.4梯…

SSCMS 插件示例 一插件创建及插件菜单

SSCMS 插件示例下载 1、工程创建过程,如下图所示。 2、工程路径和工程命名,如下图所示。 bjxingch作者 IPluginCUDR插件名称 3、选择框架,如下图所示。 4、使用NuGet安装 SSCMS和Datory,如下图所示。

【软件工程】状态转换图 其他图形工具

状态转换图 一、定义 二、符号表示 其他图形工具 一、层次方框图 二、Warmer图 三、IPO图 例题 选择题

熟练的Java程序员:掌握核心技能,引领技术潮流

Java&#xff0c;作为一门成熟且广泛应用的编程语言&#xff0c;对于程序员来说&#xff0c;不仅是一种技能&#xff0c;更是一种职业态度的体现。一个熟练的Java程序员&#xff0c;应该具备哪些技术呢&#xff1f;本文将为您揭晓答案。 1. 扎实的Java基础 熟练掌握Java语言的…

《深入理解JAVA虚拟机(第2版)》- 第13章 - 学习笔记【终章】

第13章 线程安全与锁优化 13.1 概述 面向过程的编程思想 将数据和过程独立分开&#xff0c;数据是问题空间中的客体&#xff0c;程序代码是用来处理数据的&#xff0c;这种站在计算机角度来抽象和解决问题的思维方式&#xff0c;称为面向对象的编程思想。 面向对象的编程思想…

想从事大模型?一大波工作岗位等你选!

技术类岗位 您可从事&#xff1a;算法工程师&#xff0c;研发工程师。 管理类岗位 您可从事&#xff1a;AI项目经理、AI产品经理、AI销售、AI解决方案。 01 技术类岗位 算法工程师 大模型算法工程师的职位通常要求求职者具备以下几方面的能力和经验。 通用技能教育背景…

大健康管理系统|健康综合咨询问诊平台设计与实现(源码+数据库+文档)

大健康管理系统目录 目录 健康综合咨询问诊平台设计与实现 一、前言 二、系统功能设计 三、系统实现 5.1用户信息管理 5.2 医生信息管理 5.3科室信息管理 5.1新闻信息管理 四、数据库设计 1、实体ER图 2、具体的表设计如下所示&#xff1a; 五、核心代码 六、论文…

干货|生成式人工智能大模型备案详细办理资料清单

我以刚通过的大模型备案提交的材料清单给大家详细讲一讲 刚通过的大模型备案材料清单 1、安全评估报告 安全评估报告是大模型备案过程中的一个重要关键部分&#xff0c;它需由专业机构或团队完成&#xff0c;全面评估大模型在语料处理、模型训练、服务提供等环节中的安全性。…

vue3ScrollSeamless滚动如何给子元素添加点击事件:事件委托

页面布局如上截图 下面是方法 function parentClick(e) {if (e.target.tagName A) {router.push({path: /noticeDetails,query: {id: e.target.dataset.eid}});} }使用的时候&#xff0c;可以打印一下方法里面的e&#xff0c;加深理解

基于51单片机的电机控制和角度检测

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;采用滑动变阻器连接ADC0832数模转换器模拟角度传感器&#xff0c;然后通过LCD1602显示数值&#xff0c;然后按键按下不动&#xff0c;电机正转&#xff0c;松开停止。第二…

红外绝缘子数据集

红外绝缘子数据集&#xff0c;绝缘子旋转框检测 电气工程专业研究可用 电力领域稀有红外图像数据集 红外图像总数5000多张&#xff0c;txt格式&#xff0c;可直接用于yolo训练 红外绝缘子数据集 (Infrared Insulator Dataset, IID) 数据集描述 IID是一个专为电气工程专业研究…

react中解析markdown文本

背景 产品想把从某个地方复制出来的markdown文本&#xff0c;保存下来&#xff0c;并且在前端这边展示的时候&#xff0c;按照对应的格式展示 工具 markedhighlight.jsmarked-highlight 原来的marked版本&#xff0c;是可以直接处理高亮配置&#xff0c;但是后续更新为了轻量…

耦合微带线单元的网络参量和等效电路公式推导

文档下载链接&#xff1a;耦合微带线单元的网络参量和等效电路资源-CSDN文库https://download.csdn.net/download/lu2289504634/89583027笔者水平有限&#xff0c;错误之处欢迎留言&#xff01; 一、耦合微带线奇偶模详细推导过程 二、2,4端口开路 三、2端口短路、3端口开路 四…

Apple Intelligence预计会在iOS 18.1和iOS 18.4之间按此顺序推出

本月早些时候 iOS 18 已公开发布&#xff0c;但首批 Apple Intelligence 功能要等到 10 月份 iOS 18.1 发布后才可以使用。Apple Intelligence 功能将继续在 iOS 18.2 及更高版本中推出&#xff0c;预计路线图如下&#xff0c;出自 Apple 网站和传闻。 Apple Intelligence 需要…

electron-vite使用vue-i18n,ts 检查报错上不存在属性“$t”

问题&#xff1a; electron-vite使用vue-i18n&#xff0c;ts类型检查报错&#xff0c;但实际运行没有问题 解决方案&#xff1a; 1. 在electron-vite渲染端代码src目录下&#xff0c;增加 vue-i18n.d.ts 文件&#xff0c;添加如下内容&#xff1a; /* eslint-disable */ im…

【d47_2】【Java】【力扣】1791.找出星型图的中心节点

思路 直接判断 edges[0][0] edges[0][1] edges[1][0] edges[1][1] 谁重复了 例如&#xff1a; [ [1,2] [2,3] ....],那么中心节点一定是2 代码 class Solution {public int findCenter(int[][] edges) {for (int i0;i<1;i){if (edges[1][0]edges[0][i]) {return edg…