如何在 Unbuntu 下安装配置 Apache Zookeeper

简介

Zookeeper 是 apache 基金组织下的项目,项目用于简单的监控和管理一组服务,通过简单的接口就可以集中协调一组服务,如配置管理,信息同步,命名,分布式协调。 

准备工作

  1. Ubuntu 23.04 或者 20.04
  2. 访问Ubuntu系统的命令行工具
  3. 具有 sudo 或者 root 权限的账号

安装 Apache Zookeeper 到 Ubuntu 系统上

第一步: 安装Java

Zookeeper 是使用Java 语言编写的,我们需要提前安装Java. 通过一下命令检查Java 是否安装

java --version

假如这一步能够正确显示Java的版本, 你可以直接到下一步。 如果显示的信息是 no such file or directory。 那么你就需要安装 Java.
Java 现在已经有不同的版本了,按照你的需求安装合适的版本

第二步: 为 Zookeeper 服务创建用户

1. 使用下列命令创建一个单独的用户

sudo useradd zookeeper -m

-m 参数是用于在创建用户的同时创建 Home 目录。 上面的脚本会创建目录 /home/zookeeper. 如想使用不同的名称,只要替换 zookeeper 就可以。

2. 指定用户的默认shell为 bash

sudo usermod --shell /bin/bash zookeeper

3. 设置密码

sudo passwd zookeeper

4. 把用户添加到sudo组里面

sudo usermod -aG sudo zookeeper

5. 检查一下用户是不是已经在sudo组里面

sudo getent group sudo

 

第三步:创建Zookeeper的数据目录

在真正安装 zookeeper 之前我们需要创建一个可以用于存储 zookeeper 数据和配置的文件夹。 执行下列脚本创建zookeeper 的数据目录

sudo mkdir -p /data/zookeeper

设置zookeeper 用户为此目录的所有者

sudo chown -R zookeeper:zookeeper /data/zookeeper

第四步: 下载并安装 Zookeeper

1. 访问 Apache Zookeeper Releases 找到最新版本.

2. 右键复制推荐的HTTP下载地址

3. 返回到命令行界面,进入目录 /opt

cd /opt

4. 使用 wget 命令下载 .tar 文件。粘贴刚刚复制的链接如下

sudo wget https://dlcdn.apache.org/zookeeper/zookeeper-3.9.1/apache-zookeeper-3.9.1-bin.tar.gz

5. 解压文件

sudo tar -xvf apache-zookeeper-3.9.1-bin.tar.gz

需要注意的是,以上两个步骤的链接地址还有文件名称,只是一个例子,具体还是需要根据你下载的文件做调整

6. 重命名文件夹的名称为 zookeeper

sudo mv apache-zookeeper-3.9.1-bin zookeeper

7. 指定zookeeper 为此目录的拥有着

sudo chown -R zookeeper:zookeeper /opt/zookeeper

第五步:配置单机模式下的Zookeeper

为 zookeeper 创建一个配置文件, 这个配置仅仅用于单机模式(测试环境或者开发环境)。 如果是生产环境,看第六步.

cd /opt/zookeeper/conf/sudo cp zoo_sample.cfg zoo.cfgsudo nano zoo.cfg

修改数据目录地址配置项为: /data/zookeeper. 其他项目保持不变,保存并退出。

第六步:启动 zookeeper 服务

首先切换当前的用户到 zookeeper 用户

su zookeeper

启动服务

/opt/zookeeper/bin/zkServer.sh start

如果如下显示出 “STARTED",那么说明服务启动成功了。

第七步: 链接 zookeeper 服务

使用脚本链接本地的zookeeper 服务

/opt/zookeeper/bin/zkCli.sh -server 127.0.0.1:2181

如果显示 “CONNECTED” 则说明链接成功

执行 help 查询命令说明

输入命令:

quit

停止zookeeper 服务

/opt/zookeeper/bin/zkServer.sh stop

第八步: 创建自动启动脚本

1. 创建自动启动配置文件

sudo nano /etc/systemd/system/zookeeper.service

2. 复制下列内容到文件中

[Unit]
Description=Zookeeper Daemon
Documentation=http://zookeeper.apache.org
Requires=network.target
After=network.target[Service]    
Type=forking
WorkingDirectory=/opt/zookeeper
User=zookeeper
Group=zookeeper
ExecStart=/opt/zookeeper/bin/zkServer.sh start /opt/zookeeper/conf/zoo.cfg
ExecStop=/opt/zookeeper/bin/zkServer.sh stop /opt/zookeeper/conf/zoo.cfg
ExecReload=/opt/zookeeper/bin/zkServer.sh restart /opt/zookeeper/conf/zoo.cfg
TimeoutSec=30
Restart=on-failure[Install]
WantedBy=default.target

3. 保存并退出

4. 重启价值 system server

sudo systemctl daemon-reload

5.启动zookeeper 服务并且设置为开机启动

systemctl start zookeeper
systemctl enable zookeeper

6. 验证服务的状态

systemctl status zookeeper

如果你看到高亮的 active (running) 则说明服务成功启动

配置集群模式的 zookeeper

第一步: 创建多个zookeeper实例

集群模式下,首先你需要准备多个 Ubuntu 机器实例。并且按照第二章节的逐个安装配置。

第二步:为每一个zookeeper 实例指定一个唯一的id

nano /data/zookeeper myid

文件内容就是此服务的id

1

循环上一个步骤,以此给每个服务器创建一个唯一的id.

第三步:在zookeeper 的配置文件中逐个添加服务器列表

nano /opt/zookeeper/conf/zoo.cfg

内容如下:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/data/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1## Metrics Providers
#
# https://prometheus.io Metrics Exporter
#metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider
#metricsProvider.httpPort=7000
#metricsProvider.exportJvmInfo=trueserver.1=[server_ip]:2888:3888
server.2=[server_ip]:2888:3888
server.3=[server_ip]:2888:3888

第三步:逐个重启zookeeper

systemctl restart zookeeper.service

参考链接:

How To Install Apache ZooKeeper On Ubuntu

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

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

相关文章

@Slf4j将日志记录到磁盘和数据库

文章目录 1、背景介绍2、存本地2.1、配置文件2.2、使用 3、存数据库3.1、配置文件改造3.2、过滤器编写3.3、表准备3.4、添加依赖3.5、测试 4、优化4.1、日志定期删除 1、背景介绍 现在我一个SpringBoot项目想记录日志,大概可以分为下面这几种: 用户操作…

NFC芯片MS520:非接触式读卡器 IC

MS520 是一款应用于 13.56MHz 非接触式通信中的高集成 度读写卡芯片。它集成了 13.56MHz 下所有类型的被动非接触 式通信方式和协议,支持 ISO14443A 的多层应用。 主要特点 ◼ 高度集成的解调和解码模拟电路 ◼ 采用少量外部器件,即可将输…

C++二分查找算法的应用:最小好进制

本文涉及的基础知识点 二分查找 题目 以字符串的形式给出 n , 以字符串的形式返回 n 的最小 好进制 。 如果 n 的 k(k>2) 进制数的所有数位全为1,则称 k(k>2) 是 n 的一个 好进制 。 示例 1: 输入:n “13” 输出:“3” …

https网站加载http资源问题

https网站加载http资源问题 前言:最近项目对接了一个第三方的平台、我们需要展示第三方平台返回来的图片资源、由于我们的服务器设置为了https、但是第三方平台返回的图片链接是 http 资源。所以就出现了图片无法加载出来的问题,在此记录一下问题的解决…

会声会影2024对比2023变化以及功能对比

全新会声会影2024版本现已登场,小伙伴们相信已经急不可待地想知道2024版到底有哪些新功能。对比2023版本,会声会影2024版本有没有功能的增强?事不宜迟,现在就让我们一起来看看会声会影2024对比2023的变化,包括功能对比…

VEX —— Quaternion|Euler Angle

目录 一,四元数相关概念 四元数 欧拉角 常用四元数相关函数 相互转换 二,案例 案例:沿面中心翻转 案例:路径导弹 一,四元数相关概念 四元数 在vex内四元数为((x,y&#xff0…

从物理磁盘到数据库 —— 存储IO链路访问图

原图来自:数据库IO链路访问图 – OracleBlog 由于很复杂,为了加深理解自己重新画了一次,另外参考其他文档补充了各部分的插图和介绍。 一、 存储服务器 1. 物理磁盘 外层的壳子称为硬盘笼 cage 2. chunklet Chunklet 是一个虚拟概念而不是实…

代理模式(静态代理、JDK代理、CGLIB代理)

简介 代理模式有三种不同的形式:静态代理、动态代理(JDK代理、接口代理)、CGLIB代理 目标:在不修改目标对象的前提下,对目标对象进行扩展。 静态代理 需要定义接口或父类对象,被代理对象和代理对象通过实…

SpringBoot条件注解底层原理

一、简介 相信大家在学springBoot自动装配的时候会遇到下面这些条件注解,当存在其指定的条件,才会把对应的bean注入到IOC容器中。本博客旨在揭开其神秘的面纱! 其实说白了,springBoot的这些注解只是针对普通spring框架中Conditi…

「图像 merge」无中生有制造数据

在进行一个新项目的时候,往往缺少一些真实数据,导致没办法进行模型训练,这时候就需要算法工程师自行制作一些数据了,比如这篇文章分享的 bag 目标检测,在检测区域没有真实的 bag数据 此时,就可以采用图像拼…

自学SLAM(6)相机与图像实践:OpenCV处理图像与图像拼接(点云)

前言 如果写过SLAM14讲第一次的作业,或者看过我之前的运行ORB_SLAM2教程应该都安装过OpenCV了,如果没有安装,没关系,可以看我之前的博客,里面有如何安装OpenCV。 链接: 运行ORB-SLAM2(含OpenCV的安装&…

【蓝桥每日一题]-倍增(保姆级教程 篇1)

今天讲一下倍增 目录 题目:忠诚 思路: 题目:国旗计划 思路: 查询迭代类倍增: 本质是一个一个选区间使总长度达到 M,类似凑一个数。而我们会经常用不大于它最大的二的次幂,减去之后,再重复这…

代码随想录算法训练营第23期day41|01背包问题、01背包问题——滚动数组、416. 分割等和子集

目录 一、01背包理论基础 1.二维dp数组01背包 1)确定dp数组以及下标的含义 2)确定递推公式 3)dp数组如何初始化 4)确定遍历顺序 5)举例推导dp数组 2.一维dp数组(滚动数组) 1&#xf…

解决Ts中的error.stack报错property ‘stack‘ does not exist on type ‘unknown typescript

我用的Ts版本是5.x,所以在使用的时候出现了这个问题 解决方式: 将error先转一遍就好了 参考链接: 你真的会处理TS中的Error么 - 掘金 (juejin.cn) Announcing TypeScript 4.4 - TypeScript (microsoft.com)

Canoe UDS诊断技术

Canoe UDS诊断 汽车诊断技术概述诊断术语OBD诊断CAN诊断协议诊断周期UDS诊断服务Diagnostic Request和Response诊断服务介绍 诊断文件CDD介绍诊断安全访问服务(security Access)介绍 如何在Canoe UDS诊断实战CANoe 开启诊断功能Canoe 诊断实战 汽车诊断技术概述 汽车诊断技术是…

尚硅谷大数据项目《在线教育之实时数仓》笔记005

视频地址:尚硅谷大数据项目《在线教育之实时数仓》_哔哩哔哩_bilibili 目录 第9章 数仓开发之DWD层 P031 P032 P033 P034 P035 P036 P037 P038 P039 P040 第9章 数仓开发之DWD层 P031 DWD层设计要点: (1)DWD层的设计依…

ajax-axios发送 get请求 或者 发送post请求带有请求体参数

/* axios v0.21.1 | (c) 2020 by Matt Zabriskie */ !function(e,t){"object"typeof exports&&"object"typeof module?module.exportst():"function"typeof define&&define.amd?define([],t):"object"typeof export…

单链表经典算法

移除链表元素 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 思路:(1)创建三个结构体指针,分别代表一条新链表的头newhead,…

面试10000次依然会问的【ReentrantLock】,你还不会?

引言 在并发编程的世界中,ReentrantLock扮演着至关重要的角色。它是一个实现了重入特性的互斥锁,提供了比synchronized关键字更加灵活的锁定机制。ReentrantLock属于java.util.concurrent.locks包,是Java并发API的一部分。 与传统的synchro…

隐私保护多领域推荐的紧密度共聚类联邦概率偏好分布模型

论文链接 Federated Probabilistic Preference Distribution Modelling with Compactness Co-Clustering for Privacy-Preserving Multi-Domain Recommendation 引言 这篇论文提出的概率偏好分布是通过使用高斯分布来表示用户和项目的偏好。在论文中,作者提出了一…