《日均70亿请求项目实战》之部署三台zookeeper集群

个人名片
在这里插入图片描述
🎓作者简介:java领域优质创作者
🌐个人主页:码农阿豪
📞工作室:新空间代码工作室(提供各种软件服务)
💌个人邮箱:[2435024119@qq.com]
📱个人微信:15279484656
🌐个人导航网站:www.forff.top
💡座右铭:总有人要赢。为什么不能是我呢?

  • 专栏导航:

码农阿豪系列专栏导航
面试专栏:收集了java相关高频面试题,面试实战总结🍻🎉🖥️
Spring5系列专栏:整理了Spring5重要知识点与实战演练,有案例可直接使用🚀🔧💻
Redis专栏:Redis从零到一学习分享,经验总结,案例实战💐📝💡
全栈系列专栏:海纳百川有容乃大,可能你想要的东西里面都有🤸🌱🚀

目录

  • 部署三台zookeeper集群
    • 安装Java环境
    • 准备zookeeper包
    • 上传到服务器
    • 解压缩
    • 建立软链接
    • 进入配置文件目录
    • 备份并编辑配置文件
    • 创建需要的目录
    • 配置每台服务器的`myid`文件
    • 启动Zookeeper(bash形式)
    • 启动Zookeeper(service形式)
      • 配置说明
      • 使用步骤
    • 查看服务是否启动成功

全是干货

部署三台zookeeper集群

安装Java环境

sudo yum update
sudo yum install java-1.8.0-openjdk-devel
java -version

准备zookeeper包

apache-zookeeper-3.5.10-bin.tar.gz

上传到服务器

解压缩

tar -zxvf apache-zookeeper-3.5.10-bin.tar.gz 

建立软链接

ln -s /opt/apache-zookeeper-3.5.10-bin /opt/zookeeper

进入配置文件目录

cd /opt/zookeeper/conf

备份并编辑配置文件

cp zoo_sample.cfg zoo.cfg
vim zoo.cfg
内容:(注意粘贴的时候检查一下完整性,修改一下自己的ip)
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/data/zookeeper
dataLogDir=/opt/logs/zookeeper
clientPort=2181
server.1=ip1:2188:3188
server.2==ip2:2188:3188
server.3==ip3:2188:3188
4lw.commands.whitelist=*

tickTime: Zookeeper的基本时间单位,单位为毫秒。

initLimit: Follower节点在启动并同步数据时,Leader允许的最长时间(tickTime的倍数)。

syncLimit: Leader允许Follower节点之间消息同步的最大延迟(tickTime的倍数)。

dataDir: 存放快照文件的目录。

dataLogDir: 存放事务日志的目录。

clientPort: 客户端连接Zookeeper的端口。

server.X: 定义集群中的每个服务器。格式为server.id=host:port:electPort,其中id是服务器的唯一标识,port是Follower连接Leader的端口,electPort是进行Leader选举的端口。

4lw.commands.whitelist: 允许的四字母命令。

创建需要的目录

mkdir -p /opt/data/zookeeper/
mkdir -p /opt/logs/zookeeper/

配置每台服务器的myid文件

echo 1 > /opt/data/zookeeper/myid  # 在ip1上
echo 2 > /opt/data/zookeeper/myid  # 在ip2上
echo 3 > /opt/data/zookeeper/myid  # 在ip3上

启动Zookeeper(bash形式)

在每台服务器上,进入Zookeeper的bin目录,并启动Zookeeper服务:

cd /opt/zookeeper/bin
./zkServer.sh start

启动Zookeeper(service形式)

进入到 /etc/systemd/system目录

cd /etc/systemd/system/

创建zookeeper.service并输入以下内容

[Unit]
Requires=network.target remote-fs.target
After=network.target remote-fs.target
[Service]
Type=forking
User=zookeeper
Group=zookeeper
Environment=ZOO_LOG_DIR=/opt/logs/zookeeper/
PIDFile=/opt/data/zookeeper/zookeeper_server.pid
ExecStartPre=/usr/bin/rm -f /opt/data/zookeeper/zookeeper_server.pid
ExecStart=/bin/sh -c '/opt/zookeeper/bin/zkServer.sh start'
ExecStop=/bin/sh -c '/opt/zookeeper/bin/zkServer.sh stop'
ExecReload=/bin/sh -c '/opt/zookeeper/bin/zkServer.sh restart'
Restart=on-abnormal
[Install]
WantedBy=multi-user.target

配置说明

  • [Unit]:定义服务的依赖和启动顺序。
    • Requires=network.target remote-fs.target:表示服务启动需要网络和远程文件系统。
    • After=network.target remote-fs.target:确保网络和远程文件系统在服务启动之前已经启动。
  • [Service]:定义服务的启动、停止和重启行为。
    • Type=forking:表示服务在启动时会创建一个新的进程。
    • User=zookeeperGroup=zookeeper:指定运行服务的用户和组。
    • Environment="ZOO_LOG_DIR=/opt/logs/zookeeper/":设置环境变量。
    • PIDFile=/opt/data/zookeeper/zookeeper_server.pid:指定PID文件的位置。
    • ExecStartPre=/usr/bin/rm -f /opt/data/zookeeper/zookeeper_server.pid:在启动之前删除旧的PID文件。
    • ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg:启动Zookeeper服务。
    • ExecStop=/opt/zookeeper/bin/zkServer.sh stop:停止Zookeeper服务。
    • ExecReload=/opt/zookeeper/bin/zkServer.sh restart:重启Zookeeper服务。
    • Restart=on-abnormal:在异常情况下重启服务。
    • LimitNOFILE=4096:增加文件描述符限制。
  • [Install]:定义服务的安装行为。
    • WantedBy=multi-user.target:表示服务在多用户系统目标(即系统正常启动后的状态)下可用。

使用步骤

  1. 创建用户和组: 确保存在运行Zookeeper服务的用户和组:

    sudo useradd -r -m -d /opt/zookeeper -s /sbin/nologin zookeeper
    
  2. 设置权限: 确保Zookeeper安装目录和数据目录的权限正确:

    sudo chown -R zookeeper:zookeeper /opt/data/zookeeper
    sudo chown -R zookeeper:zookeeper /opt/logs/zookeeper
    sudo chmod -R 755 /opt/data/zookeeper
    sudo chmod -R 755 /opt/logs/zookeeper
    
  3. 创建和启用服务: 将上面的服务单元文件内容保存到 /etc/systemd/system/zookeeper.service,然后运行以下命令重新加载systemd守护进程,并启动Zookeeper服务:

    sudo systemctl daemon-reload
    sudo systemctl enable zookeeper
    sudo systemctl start zookeeper
    
  4. 检查服务状态: 查看Zookeeper服务状态以确保其正常运行:

    sudo systemctl status zookeeper
    

通过上述配置,你可以通过systemctl命令来管理Zookeeper服务,例如启动、停止和重启。这确保了服务的统一管理和自动重启,增强了系统的稳定性和可维护性。

查看服务是否启动成功

ps -ef|grep zookeeper

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

搜索与图论:宽度优先搜索

搜索与图论&#xff1a;宽度优先搜索 题目描述参考代码 题目描述 输入样例 5 5 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0输出样例 8参考代码 #include <iostream> #include <algorithm> #include <cstring> using namespace std;const int N …

【Python】教你彻底了解 Python中的文件处理

​​​​ 文章目录 一、文件的打开与关闭1. 打开文件2. 关闭文件3. 文件模式 二、文件的读写操作1. 读取文件内容2. 写入文件内容 三、使用上下文管理器四、异常处理五、二进制文件操作1. 读取二进制文件2. 写入二进制文件 六、实际应用示例1. 处理CSV文件2. 处理JSON文件 结论…

poweroff, reboot流程

poweroff /halt /reboot操作通常由用户空间的systemd或其他初始化系统通过sys_reboot()系统调用触发 sys_reboot() 在内核中定义&#xff0c;通常位于kernel/reboot.c文件中。当传递特定的magic值如 LINUX_REBOOT_CMD_POWER_OFF时&#xff0c;内核会执行关机并尝试触发硬件层面…

HTTP-一

一、超文本传输 1. 文本传输 > 字符串(能在utf8/gbk等码表上找到合法字符) 2. 超文本传输 > 不仅仅是字符串,还可以携带一些图片,特殊得格式 HTML 3. 富文本 word http0.9 -> http1.0 -> http1.1 -> http2.0 -> http3.0 http1.0是主流版本 2.0 和…

TiDB学习8:TiDB6.0新特性

目录 1. Placement Rules in SQL 2. 热点小表缓存 3. 内存悲观锁 4. Top SQL 5.TiDB Enterprise Manager(TiEM) 6. 小结 1. Placement Rules in SQL Placement Rules in SQL 之前 跨地域部署的集群&#xff0c;无法本地访问无法根据业务隔离资源难以按照业务等级配置资源…

联合(union)和枚举(enum)学习(c语言)

前言 Hello,亲爱的小伙伴们&#xff0c;好久不见&#xff0c;今天我们继续来学习新的内容-----联合和枚举 如果喜欢作者菌的文章的话&#xff0c;就不要吝啬手中的三连呀&#xff0c;万分感谢&#xff01;&#xff01; 联合&#xff08;共用体&#xff09;&#xff08;union&…

【荒原之梦考研数学】感谢 CSDN 的小伙伴们

自 2016 年在 CSDN 上开设账号至今&#xff0c;荒原之梦网获得了很多同学们的支持和肯定&#xff0c;以及意见或建议&#xff0c;荒原之梦网一路走来&#xff0c;是大家给予了我们不断前进的动力。 当前这个 CSDN 账号&#xff0c;是荒原之梦考研数学网目前在 CSDN 的第一个也…

哪些机构签发代码签名证书?

在数字化快速发展的今天&#xff0c;软件安全已成为全球关注的焦点。代码签名证书&#xff0c;作为一种数字证书&#xff0c;不仅保障了软件在传输过程中的安全性和可靠性&#xff0c;还为用户提供了信任的基石。本文将深入探讨代码签名证书颁发机构&#xff08;CA&#xff09;…

神经网络 torch.nn---Linear Layers(nn.Linear)

torch.nn - PyTorch中文文档 (pytorch-cn.readthedocs.io) torch.nn — PyTorch 2.3 documentation nn.Linear torch.nn.Linear(in_features, out_features, biasTrue, deviceNone, dtypeNone) 参数&#xff1a; in_features - 每个输入样本的大小out_features - 每个输出…

HarmonyOS(32) @Link标签使用指南

Link 前言Link简介State和Link的同步场景使用示例参考资料 前言 之前写过Link的使用&#xff0c;最新的API有点变化&#xff0c;在此做个记录。 Link简介 子组件中被Link装饰的变量与其父组件中对应的数据源建立双向数据绑定。。子组件变量发生变化&#xff0c;父组件也会随…

【干货】视频文件抽帧(opencv和ffmpeg方式对比)

1 废话不多说&#xff0c;直接上代码 opencv方式 import time import subprocess import cv2, os from math import ceildef extract_frames_opencv(video_path, output_folder, frame_rate1):"""使用 OpenCV 从视频中抽取每秒指定帧数的帧,并保存到指定文件夹…

开机弹窗找不到opencl.dll怎么办,教你几种有效的修复方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“找不到opencl.dll文件”。这个问题可能会影响到我们的正常使用&#xff0c;因此了解其原因和解决方法是非常必要的。本文将从多个方面对“找不到opencl.dll文件”这一问题进行详细分析和解…

socket网络编程——多进程、多线程处理并发

如下图所示, 当一个客户端与服务器建立连接以后,服务器端 accept()返回,进而准备循环接收客户端发过来的数据。 如果客户端暂时没发数据,服务端会在 recv()阻塞。此时,其他客户端向服务器发起连接后,由于服务器阻塞了,无法执行 accept()接受连接,也就是其他客户端发送…

关于main函数参数列表的那些事

写在最前面&#xff1a; 本篇博客所写代码&#xff0c;全部都依赖于Linux环境。 在开始之前&#xff0c;我们先问自己几个问题&#xff1a; main函数可以传参吗?如果main函数可以传参&#xff0c;最多可以传几个参数。main函数传递的参数具体作用是什么&#xff1f; 一.是否…

25-unittest执行顺序

在使用unittest框架时&#xff0c;各个测试方法的执行顺序是怎样的&#xff0c;本篇通过简单案例讲解unittest执行顺序。 一、定义测试类 import unittestclass Demo(unittest.TestCase):def setUp(self):print("start!")def tearDown(self):print("end!"…

大模型的跃进众生相

最近一段时间&#xff0c;在互联网科技圈&#xff0c;掀起了一阵大模型发布潮&#xff0c;许多大企业加码其中&#xff0c;甚至不少互联网大佬级人物也在其中全情投入&#xff0c;开启了人工智能创业浪潮。那么在这阵阵浪潮中&#xff0c;我们可以观察到什么样的“众生相”&…

unity中animation和animator在使用上的区别

Animation&#xff08;动画&#xff09;&#xff0c;可直接存储在物体上的animation组件中 Animation 组件用于在对象上直接存储和播放动画数据。这些数据通常是通过关键帧动画&#xff08;keyframe animation&#xff09;制作的&#xff0c;其中包含了对象在不同时间点的变换…

IO进程线程(九)线程的同步 进程间通信

文章目录 一、 线程的同步&#xff08;一&#xff09;无名信号量sem1. 定义和初始化2.获取信号量3.释放信号量4. 销毁5. 使用示例 &#xff08;二&#xff09;条件变量1. 定义和初始化2. 获取条件变量3. 释放条件变量4. 销毁条件变量 二、进程间通信&#xff08;一&#xff09;…

二叉搜索树(BST,Binary Search Tree)

目录 前言 一、二叉搜索树概念 二、二叉搜索树的实现与操作 1.查找 2.插入 3.删除 4.中序遍历 5.完整代码 三、二叉搜索树的应用&#xff08;K模型、KV模型&#xff09; 1.K模型 2.KV模型 3.完整代码 四、二叉搜索树的性能分析 前言 为何学&#xff1f; 1.二叉…

OceanBase 内存研究(OceanBase 3.2.4.5)

内存结构 从官网的结构图可以看出&#xff0c;一台observer可使用的总内存(memory_limit)包括 系统内存(system_memory) 和 租户内存(sys租户与普通租户) 系统内存 系统内存system_memory 属于 observer 的内部内存&#xff0c;允许其它租户共享使用该内存资源 (root10.0.0.…