【zookeeper】zookeeper集群安装
环境规划
实际的生产使用中,我们一般推荐搭建奇数多节点的zookeeper集群,如3/5/7。在本次测试中,我使用了centos7 三台服务器搭建,复用了我搭建k8s集群的环境,如下表。
| IP | hostname |
|---|---|
| 192.168.2.140 | k8s-m1 |
| 192.168.2.141 | k8s-m2 |
| 192.168.2.142 | k8s-m3 |
此次部署的zookeeper版本为3.7.1
java安装
java版本要求
由于zookeeper服务需要java,至于版本要求,可以先将zookeeper的包下载下来解压后查看README.md 文件,里面相应说明。如 apache-zookeeper-3.7.1版本。
[root@k8s-m1 apache-zookeeper-3.7.1-bin]# cat /opt/apache-zookeeper-3.7.1-bin/README.md
.....
## Java 8
If you are going to compile with Java 1.8, you should use a
recent release at u211 or above
#说明java8的话需要u211以及以上版本
下面提供一个java安装的脚本,需要先下载这个包。直接在oracle上下载貌似要注册账号密码,之前用的下面的命令下载包,但是现在应该不行了。反正先找一个比要求版本高的jdk包安装就行。
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" https://download.oracle.com/otn-pub/java/jdk/8u191-b12/2787e4a523244c269598db4e85c51e0c/jdk-8u191-linux-x64.tar.gz
java安装脚本
注意java需要在所有zookeeper节点上安装,我这就包括k8s-m1、k8s-m2、k8s-m3三个节点。
[root@k8s-m1 ~]# cat install_java.sh
#!/bin/bash
java -version
if [ $? = 0 ];thenecho "Java is installed"
elseecho "installing Java...."tar -zxf ./jdk-8u65-linux-x64.tar.gz -C /opt/JAVA_HOME="/opt/jdk1.8.0_65"echo "export JAVA_HOME=/opt/jdk1.8.0_65" >> /etc/profileecho "export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar" >> /etc/profileecho "export PATH=$JAVA_HOME/bin:$PATH" >> /etc/profileecho "installed successful"
fi
source /etc/profile
exit##运行脚本
[root@k8s-m1 ~]# sh -x install_java.sh
[root@k8s-m1 ~]# java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
#找不到命令可以再执行一下source /etc/profile
zookeeper安装
安装包下载
下载地址https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/,目前该网站还可以下载历史版本的安装包。我们此次使用的是3.7.1版本。注意带有bin名称的包才是我们想要的下载可以直接使用的,里面有编译后的二进制的包,而之前的普通的tar.gz的包里面是只是源码的包无法直接使用。
[root@k8s-m1 ~]# wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz[root@k8s-m1 ~]# tar -zxf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/
[root@k8s-m1 ~]# cd /opt/apache-zookeeper-3.7.1-bin/[root@k8s-m1 apache-zookeeper-3.7.1-bin]# ls
bin conf docs lib LICENSE.txt log logs NOTICE.txt README.md README_packaging.md[root@k8s-m1 apache-zookeeper-3.7.1-bin]# ll lib/zookeeper-3.7.1.jar
-rw-r--r-- 1 kmc kmc 1305907 May 7 2022 lib/zookeeper-3.7.1.jar
配置更改
默认有一个zoo_sample.cfg的配置文件,我们可以留着。直接新创建一个配置文件后再进行修改。修改完成后,可以将整个文件夹拷贝到其他两个节点再更改部分配置。
[root@k8s-m1 apache-zookeeper-3.7.1-bin]# cd conf/
[root@k8s-m1 apache-zookeeper-3.7.1-bin]# vi zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zookeeperData
dataLogDir=/zookeeperDataLog
clientPort=2181
server.1=192.168.2.140:2888:3888
server.2=192.168.2.141:2888:3888
server.3=192.168.2.142:2888:3888
4lw.commands.whitelist=*
maxClientCnxns=1000
minSessionTimeout=30000
maxSessionTimeout=60000
autopurge.snapRetainCount=10
autopurge.purgeInterval=1
#globalOutstandingLimit=200
preAllocSize=131072
snapCount=300000
leaderServes=yes#还需要创建上面配置中使用的两个目录,3个节点都需要创建
[root@k8s-m1 apache-zookeeper-3.7.1-bin]# mkdir -p /zookeeperData
[root@k8s-m1 apache-zookeeper-3.7.1-bin]# mkdir -p /zookeeperDataLog
部分配置说明:
-
tickTime:心跳基本时间单位,毫秒级,ZK基本上所有的时间都是这个时间的整数倍。
-
initLimit:tickTime的个数(倍数),表示在leader选举结束后,followers与leader同步需要的时间,如果followers比较多或者说leader的数据灰常多时,同步时间相应可能会增加,那么这个值也需要相应增加。当然,这个值也是follower和observer在开始同步leader的数据时的最大等待时间(setSoTimeout)
-
syncLimit:tickTime的个数(倍数),这时间容易和上面的时间混淆,它也表示follower和observer与leader交互时的最大等待时间,只不过是在与leader同步完毕之后,进入正常请求转发或ping等消息交互时的超时时间。
-
dataDir:内存数据库快照存放地址,如果没有指定事务日志存放地址(dataLogDir),默认也是存放在这个路径下,建议两个地址分开存放到不同的设备上。
-
clientPort:配置ZK监听客户端连接的端口
-
server.serverid=host:tickpot:electionport
- server:固定写法
- serverid:每个服务器的指定ID(必须处于1-255之间,必须每一台机器不能重复)
- host:主机名
- tickpot:心跳通信端口
- electionport:选举端口
-
maxClientCnxns:默认值是10,一个客户端能够连接到同一个服务器上的最大连接数,根据IP来区分。如果设置为0,表示没有任何限制。设置该值一方面是为了防止DoS攻击。
-
minSessionTimeout:最小的session time时间,默认值是2个tick time,客户端设置的session time 如果小于这个值,则会被强制协调为这个最小值。
-
maxSessionTimeout:最大的session time 时间,默认值是20个tick time. ,客户端设置的session time 如果大于这个值,则会被强制协调为这个最大值。
-
globalOutstandingLimit:(Java system property: zookeeper.globalOutstandingLimit)默认值是1000,限定了所有连接到服务器上但是还没有返回响应的请求个数(所有客户端请求的总数,不是连接总数),这个参数是针对单台服务器而言,设定太大可能会导致内存溢出。
-
preAllocSize:(Java system property: zookeeper.preAllocSize)默认值64M,以KB为单位,预先分配额定空间用于后续transactionlog 写入,每当剩余空间小于4K时,就会又分配64M,如此循环。如果SNAP做得比较频繁(snapCount比较小的时候),那么请减少这个值。
-
snapCount:(Java system property: zookeeper.snapCount)默认值100,000,当transaction每达到snapCount/2+rand.nextInt(snapCount/2)时,就做一次SNAPSHOT,默认情况下是50,000~100,000条transactionlog就会做一次,之所以用随机数是为了避免所有服务器可能在同一时间做snapshot.
分发文件
[root@k8s-m1 conf]# scp -r /opt/apache-zookeeper-3.7.1-bin/ 192.168.2.141:/opt/
[root@k8s-m1 conf]# scp -r /opt/apache-zookeeper-3.7.1-bin/ 192.168.2.142:/opt/
serverid 配置
最重要的步骤,一定不能忘了。 需要去的各个 ZooKeeper 服务器节点,在新建的dataDir目录中,这个目录就是在 zoo.cfg 中配置的 dataDir 的目录,新建一个名叫 myid的文件,该文件里面的内容就是服务器的 id,而id就是 server.1=192.168.2.140:2888:3888当中对应的id,如k8s-m1节点上myid的内容为1,:
[root@k8s-m1 zookeeperData]# cat myid
1
其他两个节点配置类似依次为2,3。 到此,我们 ZooKeeper相关的配置文件就修改完成了。
zookeeper服务启动与停止
3台服务器都需要操作
[root@k8s-m1 ~]# /opt/apache-zookeeper-3.7.1-bin/bin/zkServer.sh start
[root@k8s-m1 ~]# /opt/apache-zookeeper-3.7.1-bin/bin/zkServer.sh stop
zookeeper服务检查
#进程检查,3台机器上都有QuorumPeerMain进程
[root@k8s-m1 opt]# jps | grep QuorumPeerMain
10277 QuorumPeerMain
[root@k8s-m1 opt]# ps -ef |grep zookeeper# 角色查询
[root@k8s-m1 opt]# /opt/apache-zookeeper-3.7.1-bin/bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /opt/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower
通过系统服务管理zookeeper
有时候时间久了不记得zookeeper的目录,或者为了方便对zookeeper服务的管理等。3台服务器都需要进行操作。
[root@k8s-m1 ~]# cat /usr/lib/systemd/system/zookeeper.service [Unit]Description=Zookeeper serviceAfter=network.target[Service]Type=simpleEnvironment=ZOO_LOG_DIR=/opt/apache-zookeeper-3.7.1-bin/logPIDFile=/zookeeperData/zookeeper_server.pidExecStart=/opt/apache-zookeeper-3.7.1-bin/bin/zkServer.sh startExecStop=/opt/apache-zookeeper-3.7.1-bin/bin/zkServer.sh stop[Install]WantedBy=multi-user.target
通过systemctl来管理zookeeper需要修改zkServer.sh 文件。大致位置如下,只需要添加java的home路径
vim /opt/apache-zookeeper-3.7.1-bin/bin/zkServer.sh
......
# use POSIX interface, symlink is followed automatically
ZOOBIN="${BASH_SOURCE-$0}"
ZOOBIN="$(dirname "${ZOOBIN}")"
ZOOBINDIR="$(cd "${ZOOBIN}"; pwd)"
JAVA_HOME='/opt/jdk1.8.0_65
......
然后就可以用systemctl来管理zookeeper
[root@k8s-m1 apache-zookeeper-3.7.1-bin]# systemctl enable zookeeper.service
Created symlink from /etc/systemd/system/multi-user.target.wants/zookeeper.service to /usr/lib/systemd/system/zookeeper.service.
[root@k8s-m1 apache-zookeeper-3.7.1-bin]# systemctl start zookeeper.service
[root@k8s-m1 apache-zookeeper-3.7.1-bin]# systemctl status zookeeper.service
更多关于zookeeper的知识分享,请前往博客主页。编写过程中,难免出现差错,敬请指出
相关文章:
【zookeeper】zookeeper集群安装
环境规划 实际的生产使用中,我们一般推荐搭建奇数多节点的zookeeper集群,如3/5/7。在本次测试中,我使用了centos7 三台服务器搭建,复用了我搭建k8s集群的环境,如下表。 IPhostname192.168.2.140k8s-m1192.168.2.141k…...
CUDA小白 - NPP(2) - Arithmetic and Logical Operations(1)
cuda小白 原文链接 NPP GPU架构近些年也有不少的变化,具体的可以参考别的博主的介绍,都比较详细。还有一些cuda中的专有名词的含义,可以参考《详解CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid》 常见的NppStatus,…...
计算机视觉-LeNet
目录 LeNet LeNet在手写数字识别上的应用 LeNet在眼疾识别数据集iChallenge-PM上的应用 LeNet LeNet是最早的卷积神经网络之一。1998年,Yann LeCun第一次将LeNet卷积神经网络应用到图像分类上,在手写数字识别任务中取得了巨大成功。LeNet通过连续使用…...
Java 复习笔记 - 面向对象篇
文章目录 一,面向对象概述二,类和对象(一)类和对象的概述(二)定义类的补充注意事项 三,封装四,就近原则和this关键字(一)就近原则(二)…...
行业追踪,2023-08-31
自动复盘 2023-08-31 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…...
科技资讯|苹果发布新专利:可在车内定位苹果的智能设备
根据美国商标和专利局近期公示的清单,苹果公司获得了一项名为《车内定位移动设备的系统和方式》专利,概述了在车内狭窄空间内如何定位 iPhone 等移动设备。 Find My 服务现阶段没有使用 UWB 来追踪 iPhone 或者 iPad,而是依赖 GPS 等相关辅…...
浅析Linux SCSI子系统:IO路径
文章目录 概述scsi_cmd:SCSI命令result字段proto_op字段proto_type字段 SCSI命令下发scsi_request_fnscsi_dev_queue_readyscsi_host_queue_ready SCSI命令响应命令请求完成的软中断处理 相关参考 概述 SCSI子系统向上与块层对接,由块层提交的对块设备的…...
linux系统(centos、Ubuntu、银河服务器)备份
制作u盘启动盘 下载usblive系统镜像 Get Kali | Kali Linux 下载u盘启动工具 balenaEtcher - Flash OS images to SD cards & USB drives 点击下载,等待下载完成 双击安装,等待安装完成 双击 启动 选择镜像 选择U盘 开始烧录 等地制作完成 进入…...
堆栈深度超过限制
报错:Cause: com.kingbase8.util.KSQLException: 错误: 堆栈深度超过限制 Hint: 在确定了平台的堆栈深度限制是足够大后,增加配置参数 "max_stack_depth"的值(当前值为2048kB).; 错误: 堆栈深度超过限制 Hint: 在确定了平台的堆栈深度限制是足…...
Linux ptrace系统调用
文章目录 一、ptrace 简介二、ptrace 参数request2.1 PTRACE_TRACEME2.2 PTRACE_PEEKTEXT, PTRACE_PEEKDATA2.3 PTRACE_PEEKUSER2.4 PTRACE_POKETEXT, PTRACE_POKEDATA2.5 PTRACE_POKEUSER2.6 PTRACE_GETREGS, PTRACE_GETFPREGS2.7 PTRACE_GETREGSET2.8 PTRACE_SETREGS, PTRACE…...
CSDN每日一练 |『贝博士发奖金』『Longest Continuous Increasing Subsequence』『最小差值』2023-09-01
CSDN每日一练 |『贝博士发奖金』『Longest Continuous Increasing Subsequence』『最小差值』2023-09-01 一、题目名称:贝博士发奖金二、题目名称:Longest Continuous Increasing Subsequence三、题目名称:最小差值一、题目名称:贝博士发奖金 时间限制:1000ms内存限制:25…...
二维数组创建方式比较
暑假跟着地质队去跑山了,到现在还没结束,今天休息的时候突然刷到了一篇关于C二维数组创建方面的文章,我觉得还是非常不错滴,就将其中提到的新方法和我已经使用过的三种方法进行了比较,发现该方法提高了二维数组的分配、…...
安达发|富士康科技集团利用自动排程APS软件打造智慧工厂
富士康科技集团作为全球领先的3C产品研发制造企业,近年来积极布局智能制造领域,通过引入先进的自动化排程系统(APS),成功打造了智慧工厂,提高了生产质量与效率,降低了生产成本。 富士康集团自2019年下半年提出在观澜厂区建立数字可…...
云计算在大数据分析中的应用与优势
文章目录 云计算在大数据分析中的应用云计算在大数据分析中的优势云计算在大数据分析中的示例未来发展和拓展结论 🎉欢迎来到AIGC人工智能专栏~云计算在大数据分析中的应用与优势 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客&…...
linux————ELK(日志收集系统集群)
目录 一、为什么要使用ELK 二、ELK作用 二、组件 一、elasticsearch 特点 二、logstash 工作过程 INPUT(输入) FILETER(过滤) OUTPUTS(输出) 三、kibana 三、架构类型 ELK ELKK ELFK ELFKK EFK 四、构建ELk集群…...
Leetcode213 打劫家舍2
思路:既然头尾不能同时取,那就分别算只取头或者只取尾,不考虑特殊情况的话是一个简单的动态规划 class Solution:def rob(self, nums: list[int]) -> int:if len(nums) < 3:return max(nums)max_sum [nums[0], max(nums[1], nums[0])…...
Redis全局命令
"那篝火在银河尽头~" Redis-cli命令启动 现如今,我们已经启动了Redis服务,下⾯将介绍如何使⽤redis-cli连接、操作Redis服务。客户端与服务端交互的方式有两种: ● 第⼀种是交互式⽅式: 后续所有的操作都是通过交互式的⽅式实现,…...
Xml转json
利用fastjson转换,pom文件依赖: <dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version> </dependency> <dependency><groupId>com.alibaba</groupId><artifa…...
Spring框架知识点汇总
01.Spring框架的基本理解 关键字:核心思想IOC/AOP,作用(解耦,简化),简单描述框架组成; Spring框架是一款轻量级的开发框架,核心思想是IOC(反转控制)和AOP&a…...
JavaScript Web APIs - 06 正则表达式
Web APIs - 06 文章目录 Web APIs - 06正则表达式正则基本使用元字符边界符量词范围字符类 替换和修饰符正则插件change 事件判断是否有类 目标:能够利用正则表达式完成小兔鲜注册页面的表单验证,具备常见的表单验证能力 正则表达式综合案例阶段案例 正…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
LLMs 系列实操科普(1)
写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...
