ZooKeeper--基于Kubernetes部署ZooKeeper

news/2024/9/18 12:12:28/ 标签: zookeeper, java-zookeeper

在这里插入图片描述

ZooKeeper 服务
服务类型: 无头服务(clusterIP: None),这是 StatefulSet(有状态集)必需的配置。
端口:
2181 (客户端): 用于客户端连接。
2888 (跟随者): 用于 ZooKeeper 服务器之间的连接。
3888 (领导者): 用于领导者选举。
选择器: 选择带有 app: zookeeper 标签的 Pod。
ZooKeeper 有状态集 (StatefulSet)
副本数: 3(用于 ZooKeeper 的法定人数,保证集群可用性)。
服务名称: zookeeper(关联到上面的无头服务)。
环境变量:
ZOO_MY_ID: 根据 Pod 名称动态分配,例如 zookeeper-0、zookeeper-1、zookeeper-2。
ZOO_SERVERS: 定义集群中的服务器,确保它们可以相互通信。
数据卷挂载:
将 data 卷挂载到 /data 目录,存储 ZooKeeper 的数据。
持久化存储
PersistentVolume: 虽然配置中没有显示,但通常会通过 PersistentVolume 或动态存储供应配置持久存储。
VolumeClaimTemplates: 每个 ZooKeeper Pod 都有自己的 10Gi 存储,确保在 Pod 重启时数据不会丢失。
额外注意事项:
高可用性: 这个配置设计用于生产环境,具备高可用性和数据持久性。
动态 DNS: StatefulSet 中的 Pod 会有稳定的 DNS 名称,例如 zookeeper-0.zookeeperzookeeper-1.zookeeperzookeeper-2.zookeeper

拉取镜像

docker pull registry.cn-hangzhou.aliyuncs.com/qiluo-images/zookeeper:latest
vi zookeeper-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: zookeepernamespace: default
spec:replicas: 1selector:matchLabels:app: zookeepertemplate:metadata:labels:app: zookeeperspec:containers:- name: zookeeperimage: registry.cn-hangzhou.aliyuncs.com/qiluo-images/zookeeper:latestports:- containerPort: 2181env:- name: ZOOKEEPER_SERVER_IDvalue: "1"- name: ZOOKEEPER_CLIENT_PORTvalue: "2181"- name: ZOOKEEPER_DATA_DIRvalue: "/data"volumeMounts:- name: zookeeper-datamountPath: /datavolumes:- name: zookeeper-dataemptyDir: {}
---
apiVersion: v1
kind: Service
metadata:name: zookeepernamespace: default
spec:ports:- port: 2181targetPort: 2181selector:app: zookeeper

创建 zookeeper-pv.yaml

vi zookeeper-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:name: zookeeper-pv
spec:accessModes:- ReadWriteOncecapacity:storage: 10GihostPath:path: /mnt/data/zookeeper
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: zookeeper-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 10Gi

创建 zookeeper-statefulset.yaml

vi zookeeper-statefulset.yaml
apiVersion: v1
kind: Service
metadata:name: zookeeperlabels:app: zookeeper
spec:ports:- port: 2181name: client- port: 2888name: follower- port: 3888name: leaderclusterIP: Noneselector:app: zookeeper
---
apiVersion: apps/v1
kind: StatefulSet
metadata:name: zookeeper
spec:serviceName: zookeeperreplicas: 3selector:matchLabels:app: zookeepertemplate:metadata:labels:app: zookeeperspec:containers:- name: zookeeperimage: registry.cn-hangzhou.aliyuncs.com/qiluo-images/zookeeper:latestports:- containerPort: 2181name: client- containerPort: 2888name: follower- containerPort: 3888name: leaderenv:- name: ZOO_MY_IDvalueFrom:fieldRef:fieldPath: metadata.name- name: ZOO_SERVERSvalue: "server.1=zookeeper-0.zookeeper:2888:3888;2181 server.2=zookeeper-1.zookeeper:2888:3888;2181 server.3=zookeeper-2.zookeeper:2888:3888;2181"volumeMounts:- name: datamountPath: /datavolumeClaimTemplates:- metadata:name: dataspec:accessModes: [ "ReadWriteOnce" ]resources:requests:storage: 10Gi

第二种方法
PersistentVolume 和 PersistentVolumeClaim
首先,定义 PersistentVolume 和 PersistentVolumeClaim,这样 ZooKeeper 的数据可以持久化。

vi  zookeeper-pv-pvc.yaml
apiVersion: v1
kind: PersistentVolume
metadata:name: zookeeper-pv
spec:accessModes:- ReadWriteOncecapacity:storage: 10GihostPath:path: /mnt/data/zookeeper
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: zookeeper-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 10Gi
vi zookeeper-deployment.yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:name: zookeepernamespace: default
spec:serviceName: "zookeeper"replicas: 3selector:matchLabels:app: zookeepertemplate:metadata:labels:app: zookeeperspec:containers:- name: zookeeperimage: registry.cn-hangzhou.aliyuncs.com/qiluo-images/zookeeper:latestports:- containerPort: 2181- containerPort: 2888- containerPort: 3888env:- name: ZOO_MY_IDvalueFrom:fieldRef:fieldPath: metadata.name- name: ZOO_SERVERSvalue: "zookeeper-0.zookeeper:2888:3888,zookeeper-1.zookeeper:2888:3888,zookeeper-2.zookeeper:2888:3888"volumeMounts:- name: zookeeper-datamountPath: /datavolumeClaimTemplates:- metadata:name: zookeeper-dataspec:accessModes: ["ReadWriteOnce"]resources:requests:storage: 10Gi
---
apiVersion: v1
kind: Service
metadata:name: zookeepernamespace: default
spec:ports:- port: 2181targetPort: 2181- port: 2888targetPort: 2888- port: 3888targetPort: 3888clusterIP: Noneselector:app: zookeeper
kubectl apply -f zookeeper-deployment.yamlkubectl apply -f zookeeper-pv-pvc.yaml

这样命令简单了许多。


http://www.ppmy.cn/news/1516436.html

相关文章

多平台谷歌浏览器驱动下载地址分享

多平台谷歌浏览器驱动下载地址分享 一、概述二、windows、linux、mac平台下载地址2.1windows平台下载地址2.2linux、mac平台下载地址 三、arm平台下载地址参考文档 一、概述 在使用一些自动化网页测试工具时,往往需要下载谷歌浏览器驱动文件,用于配合工…

虚幻5|按键触发学习

一,如图参考 1.下移 驱动阈值 越大按时间长才会触发,越小很快就可以触发 2.按下 当按下超出驱动阈值大小就会触发一次,这里的驱动阈值只能设置再0.1~1的大小 3.已松开 当按下的时候,先触发单次的started,如果按压…

[多线程] linux中的线程调度策略

文章目录 多线程调度如何设置调度策略Reference 多线程调度 包含5种线程调度: SCHED_OTHER:SCHED_FIFO:SCHED_RR:SCHED_BATCH:SCHED_IDLE: 如何设置调度策略 在Linux系统中,线程调度策略可以…

分组汇总后再根据数量拼上不同文字

Excel某表格有2列。 AB1Apples32Apples03Bananas14Bananas65Cantaloupe06Kiwis27Kiwis28Kiwis1 要求:按第1列分组,如果组内第2列大于0则对当前行进行计数,否则不计数;计数结果等于1则附加Occurrence,否则附加 Occurr…

一个php快速项目搭建框架源码,带一键CURD等功能

介绍: 框架易于功能扩展,代码维护,方便二次开发,帮助开发者简单高效降低二次开发成本,满足专注业务深度开发的需求。 百度网盘下载 图片:

OpenGL3.3_C++_Windows(36)

PBR_IBL镜面部分 镜面部分并不能像漫反射部分一样将常量提取出来,因为它受到wi和w0的影响,就比如一个x的等式,不能把x部分提取出来一样,他是随着等式变化的但是如果放在等式中,计算所有的可能性,计算量会极…

大模型网络安全能力和风险评估框架Cybench

大模型网络安全能力和风险评估框架Cybench 前言 语言模型在网络安全领域的双重应用,既可以用于攻击(如识别并利用代码漏洞),也可以用于防御(如渗透测试和漏洞检测)。当前的研究包括对CTF挑战、代码片段中的…

100101-批量将指定文件夹下视频时长快进或慢放到指定时长,指定比例尺寸,例如将50S视频转为1:1尺寸的30S-UI

程序功使用环境▶适用的系统环境说明:win7以上64位win系统注意:win32位系统/mac系统需要额外定制▶使用期限:无需注册、不绑电脑、无时间限制▶如何安装:不需要安装程序功能说明▶子文件夹穿透:支持▶支持的文件格式&a…

graphRAG原理解析——基于微软graphRAG+Neo4j llm-graph-builder

知识图谱生成 llm-graph-builder(以下简称 LGB)也使用了最新的 graph RAG 的思路,使用知识图谱来加持RAG,提供更加准确和丰富的知识问答。知识图谱的生成上,利用大模型的泛化能力来自动生成和构建知识图谱&#xff0…

Qt使用usbcan通信

一.usbcan环境搭建 可以参照我的这篇博客&#xff1a;USBCAN-II/II使用方法以及qt操作介绍 二.项目效果展示 三.项目代码 这部分代码仅仅展示了部分功能&#xff0c;仅供参考。 #include"ControlCAN.h" #include<QDebug> #include <windows.h> #incl…

《Clean Code《代码整洁之道》解读

《Clean Code》&#xff08;《代码整洁之道》&#xff09;是软件开发领域的经典著作&#xff0c;由知名软件工程师Robert C. Martin&#xff08;又称"Uncle Bob"&#xff09;编写。本书详细探讨了如何编写整洁、易于维护、可读性强的代码。对于任何软件项目的长期维护…

el-form只对rules中个别字段进行校验

正常属性校验方式 const moveToErr () > {const errorDom document.getElementsByClassName(el-form-item__error);console.log(errorDom)if (errorDom.length) {errorDom[0].scrollIntoView({block: center,behavior: smooth})} };const saveItem async (formEl?: For…

机器学习——决策树,朴素贝叶斯

一.决策树 决策树中的基尼系数&#xff08;Gini Index&#xff09;是用于衡量数据集中不纯度&#xff08;或混杂度&#xff09;的指标。基尼系数的取值范围在0到0.5之间&#xff0c;其中0表示数据完全纯&#xff08;同一类别&#xff09;&#xff0c;0.5表示数据完全混杂。 基…

linux下部署数据库总结

数据库 数据库主要分为两大类&#xff1a;关系型数据库与 NoSQL 数据库 关系型数据库&#xff0c;是建立在关系模型基础上的数据库&#xff0c;其借助于集合代数等数学概念和方法来处理数据库 中的数据主流的 MySQL、Oracle、MS SQL Server 和 DB2 都属于这类传统数据库。 NoSQ…

大数据挖掘的步骤是怎样的呢?

大数据挖掘是一个复杂而系统的过程&#xff0c;它利用计算机科学的方法和技术&#xff0c;对大量、多样化、高速增长的数据进行深入挖掘&#xff0c;以发现有价值的信息和知识。以下是大数据挖掘的主要步骤和方法&#xff1a; 一、大数据挖掘的步骤 数据收集&#xff1a; 从各…

[Meachines] [Easy] BoardLight Dolibarr17.0.0-RCE+Enlightenment v0.25.3权限提升

信息收集 IP AddressOpening Ports10.10.11.11TCP:22,80 $ nmap -p- 10.10.11.11 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 06:2…

【Java】IDEA从零到一使用statemachine状态机模拟订单 (图解)

Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容&#xff1a;三、问题描述四、解决方案&#xff1a;4.1 认识依赖4.2 使用状态机4.2.1 目录结构4.2.2 状态机解析4.2.2.1 概念4.2.2.…

【Python游戏】Joystick游戏手柄编程介绍

本文收录于 《一起学Python趣味编程》专栏&#xff0c;从零基础开始&#xff0c;分享一些Python编程知识&#xff0c;欢迎关注&#xff0c;谢谢&#xff01; 文章目录 一、前言二、正式开始2.1 认识游戏手柄结构2.2 了解pygame.joystick模块简单使用步骤2.3 了解pygame.joystic…

USB详解,配置及难点

一、USB发展历史 二、USB简介 USB有USB1.0/1.1/2.0/3.0多个版本&#xff0c;标准USB由4根线组成,VCC&#xff0c;GND&#xff0c;D&#xff0c;D-&#xff0c;其中D和D-是数据线&#xff0c;采用差分传输。在USB主机上,D-和D都是接了15K的电阻到地,所以在没有设备接入的时候,D、…

网络安全场景化解决方案编写教程(大纲)

目录 1.概述 1.1.项目背景 1.2.项目现状 1.3.项目目标 2.需求分析 3.方案设计 3.1设计依据 3.2设计原则 3.3架构设计 3.3产品设计 3.5服务设计 4.方案收益 5.项目预算 附录A&#xff08;案例&#xff09; 附录B&#xff08;公司资质人员资质等&#xff09; 1.概…