docker 部署etcd集群

docker 部署etcd集群

往期内容

  • ETCD 简介

前言

上期我们对于分布式kv存储中间件有了简单的认识,本期简单介绍docker-compose 部署etcd集群以及可视化工具 etcd Keeper


1-etcd docker 部署

看了很多网上部署的教程,要么超级简陋,要么搞一堆配置,也不说明每项配置的作用,让人一头雾水。所以在这里写一篇详细的博客,搭建出一个具体的 etcd 集群,并介绍每项的配置作用,镜像使用的是 bitnami/etcd。

环境准备

在此列出我自己的环境,相关版本应该问题不大,但还是建议各位道友同版本使用

Docker ====> version 24.0.7

Docker Compose ====> version: v2.12.2

bitnami/etcd ====> version: 3.5.5

如果你还没有安装 Docker 和 Docker Compose,请先参照网上的教程安装一下。

创建以下文件夹保存 etcd 相关的文件,我这里以 /home/docker/etcd 做为教程演示:

  • 创建 /home/docker/etcd 目录,保存所有 etcd 的相关文件;
  • 创建 /home/docker/etcd/data 目录,用作数据卷映射,持久化 etcd 数据到宿主机;
  • 创建 /home/docker/etcd/docker-compose.yml,用来编写我们的部署配置。

docker-compose 部署etcd单节点

部署

单节点部署比较简单,docker-compose.yml 如下所示:

version: "2.1"services:etcd:image: "bitnami/etcd:3.5.5"container_name: "etcd"# 总是重启restart: "always"ports:- 2379:2379environment:# 时区设置- TZ=Asia/Shanghai# 允许无认证访问- ALLOW_NONE_AUTHENTICATION=yes# etcd 客户端访问URL- ETCD_ADVERTISE_CLIENT_URLS=http://etcd:2379volumes:# 将数据映射到宿主机- etcd_data:/bitnami/etcd
volumes:etcd_data:driver: localdriver_opts:type: "none"o: "bind"device: "/home/docker/etcd/data"

单机版部署比较容易,在docker-compose.yml所在文件夹下执行命令:docker-compose up -d 命令,此时在浏览器访问 http://IP:2379/version,即可看到我们的版本号:

在这里插入图片描述

此时,数据文件也会映射到 /home/docker/etcd/data 目录下,可以自行进去查看一下。

使用

执行如下命令,进入 etcd 容器:

docker exec -it etcd bash

创建一个key:

etcdctl put /k v

查看一个key:

etcdctl get /k

删除一个key:

etcdctl del /k

docker-compose 部署etcd集群

部署

集群部署较之单点配置,多了很多配置,请查看 docker-compose.yml:

version: "2.1"
services:etcd1:image: "bitnami/etcd:3.5.5"container_name: "etcd1"restart: "always"ports:- 12379:12379environment:- TZ=Asia/Shanghai# 允许无认证访问- ALLOW_NONE_AUTHENTICATION=yes# 名称- ETCD_NAME=etcd1# 列出这个成员的伙伴 URL 以便通告给集群的其他成员- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd1:2380# 用于监听伙伴通讯的URL列表- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380# 用于监听客户端通讯的URL列表- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:12379# 初始化集群记号,建议一个集群内的所有节点都设置唯一的token- ETCD_INITIAL_CLUSTER_TOKEN=MyEtcd# 列出这个成员的客户端URL,通告给集群中的其他成员- ETCD_ADVERTISE_CLIENT_URLS=http://etcd1:12379# 集群配置,格式是ETCD_NAME=ETCD_INITIAL_ADVERTISE_PEER_URLS- ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380# 初始化集群状态,这里写 new 就行- ETCD_INITIAL_CLUSTER_STATE=newetcd2:image: "bitnami/etcd:3.5.5"container_name: "etcd2"restart: "always"ports:- 22379:22379environment:- TZ=Asia/Shanghai# 允许无认证访问- ALLOW_NONE_AUTHENTICATION=yes# 名称- ETCD_NAME=etcd2# 列出这个成员的伙伴 URL 以便通告给集群的其他成员- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd2:2380# 用于监听伙伴通讯的URL列表- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380# 用于监听客户端通讯的URL列表- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:22379# 初始化集群记号,建议一个集群内的所有节点都设置唯一的token- ETCD_INITIAL_CLUSTER_TOKEN=MyEtcd# 列出这个成员的客户端URL,通告给集群中的其他成员- ETCD_ADVERTISE_CLIENT_URLS=http://etcd2:22379# 集群配置,格式是ETCD_NAME=ETCD_INITIAL_ADVERTISE_PEER_URLS- ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380# 初始化集群状态,这里写 new 就行- ETCD_INITIAL_CLUSTER_STATE=newetcd3:image: "bitnami/etcd:3.5.5"container_name: "etcd3"restart: "always"ports:- 32379:32379environment:- TZ=Asia/Shanghai# 允许无认证访问- ALLOW_NONE_AUTHENTICATION=yes# 名称- ETCD_NAME=etcd3# 列出这个成员的伙伴 URL 以便通告给集群的其他成员- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd3:2380# 用于监听伙伴通讯的URL列表- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380# 用于监听客户端通讯的URL列表- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:32379# 初始化集群记号,建议一个集群内的所有节点都设置唯一的token- ETCD_INITIAL_CLUSTER_TOKEN=MyEtcd# 列出这个成员的客户端URL,通告给集群中的其他成员- ETCD_ADVERTISE_CLIENT_URLS=http://etcd3:32379# 集群配置,格式是ETCD_NAME=ETCD_INITIAL_ADVERTISE_PEER_URLS- ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380# 初始化集群状态,这里写 new 就行- ETCD_INITIAL_CLUSTER_STATE=new  

看到这么长的配置不要怕,它们之中大部分都是重复的,你也可以先一个不看,复制下来,跑了再说。etcd 还有很多的环境配置,可以移步官方文档查看:etcd 配置手册。

我这里没有配置数据卷映射,如果想配置,参照单节点部署即可,运行 docker-compose up -d 命令,三个节点的 etcd 集群就可以启动了,三个节点的客户端端口分别是 12379、22379、32379,可以分别在浏览器使用 [http://IP:PORT/version] 查看它们的版本号。

在这里插入图片描述

使用
1. 验证集群同步数据

随便进入一台节点容器,我这里以 etcd1 进行举例子:

docker exec -it etcd1 bash

创建一个 key:

etcdctl --endpoints=localhost:12379 put  /t v

–endpoints 用于指定节点地址,我们这里在 etcd1 节点上创建了一个key。然后试试其他节点是否能获取到信息:

etcdctl --endpoints=etcd2:22379 get /t
etcdctl --endpoints=etcd3:32379 get /t

docker 同网段的容器之间可以通过别名互相访问,所以这里直接使用 etcd2/etcd3 就可以了,结果截图:

node1设置值

在这里插入图片描述

node2,node3 获取值

在这里插入图片描述
在这里插入图片描述

2-可视化工具docker部署

etcd的可视化工具非常之多,我搜了一下,一抓一大把

  1. Kstone:这是一个针对etcd的全方位运维解决方案,由腾讯云容器TKE团队发起,基于Kubernetes的云原生一站式etcd治理项目。Kstone提供集群管理(如关联已有集群、创建新集群等)、监控、备份、巡检、数据迁移、数据可视化、智能诊断等一系列功能。它支持注册现有集群和创建新的etcd集群,支持Prometheus监控,内置丰富的etcd Grafana面板图,支持多种数据备份方式和检查策略,内置web控制台和可视化查看etcd数据。
  2. etcdwp:这是一款免费且支持Macos桌面的etcd客户端桌面工具(Mac Version >= 11.0)。它支持对etcd单机版和集群版键值存储进行增删改查等操作,同时也增加了对etcd集群资源和成员的操作。
  3. Etcd Assistant:这是一个Etcd的可视化管理工具,GUI客户端。它支持多标签页,同时连接到多个集群,以漂亮的格式显示JSON、XML、MessagePack、十六进制等数据格式,支持浏览、创建、编辑、删除键,导出和导入数据,支持基于用户名和密码的基本身份验证、HTTPS客户端证书认证,支持HTTP和HTTPS连接,显示etcd集群及其节点的基本信息,管理租约、用户和角色等。
  4. Etcd-Browser:这是一款用来对etcd进行管理的图形化管理工具,在传统的etcd管理工具的功能基础上,添加了很多非常实用的新的特性。它可以监控所有Key,监控指定的前缀的Key,监控修订号在指定范围内的Key,监控版本号在变化范围的Key,监控Key在指定的Range范围内的多个维度的监控。

在此我们以etc keeper为例子进行docker-compose 的部署

evildecay/etcdkeeper v0.7.6

在上文的docker-compose.yml的基础上继续添加etc keeper的相关依赖

  docker-etcdkeeper:hostname: etcdkeeperimage: evildecay/etcdkeeper:v0.7.6ports:- "8099:8080"networks:- etcd-net
networks:etcd-net:           # 网络driver: bridge    # 桥接模式

继续在docker-compose.yml所在文件夹下执行命令:docker-compose up -d 命令

然后访问配置的端口

在这里插入图片描述

点击etckeeper

在这里插入图片描述

默认的上述图中的地址是127.0.0.1,这儿一定要换成你自己的宿主机的ip地址,不要用默认的

在这里插入图片描述


至此,我们在docker中部署了etcd以及etcdkeeper

码字不易,希望大家能够一键三连🌝⭐🌟


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

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

相关文章

kubernetes附加组件—图形化管理工具Dashboard

一、介绍 Dashboard是k8s集群管理的一个WebUi,它是k8s的一个附加组件,需要单独部署。 我们可以通过图形化的方法,创建、删除、修改、查询k8s资源。 二、安装部署dashboard组件 Github地址:GitHub - kubernetes/dashboard: Gen…

centos8.5 安装 redis 7.2.4 详细步骤

1 下载Index of /releases/ (redis.io) 通过xftp等方式上传到服务器,安装依赖包 yum install gcc gcc-c make tcl -y [rootlocalhost software]# ll total 3308 -rw-r--r--. 1 root root 3386861 May 3 21:56 redis-7.2.4.tar.gz [rootlocalhost software]# ll…

基于STM32F103ZE平台分析FreeRtos(九)——协程

目录 一、协程简介 二、协程工作机制 2.1 协程控制块结构 2.2 协程管理方式 2.3 协程调度方式 2.4 协程通信机制 三、协程状态及状态切换 3.1 协程状态 3.2 状态切换 四、协程创建 五、协程调度分析 5.1 源码分析 5.2 逻辑图分析 六、协程通信 6.1 协程发送消息…

如何评估大模型音频理解能力-从Gemini说起

Gemini家族包含Ultra、Pro和Nano三种大小的模型是谷歌开发的大型多模态人工智能模型,它在人工智能的多模态领域实现了重大突破,结合了语言、图像、音频和视频的理解能力。 Gemini的性能评估情况如下: Gemini模型的评估的具体指标从文本理解能…

Sqli-labs第一关到第四关

目录 一,了解PHP源代码 二,破解第一关 2.1在了解完源码之后,我们重点看一下 2.2破解这道题表中有几列 2.3查看表中哪一列有回显 2.4查询库,表,列信息 三,总结 前提: 之所以把1234关…

gpt_academic的使用——含一键安装和接入其他API以及本地模型

https://github.com/binary-husky/gpt_academic/releases/ https://github.com/binary-husky/gpt_academic/wiki 安装

测试平台开发:Django开发实战之注册界面实现(上)

实现注册功能,大概包括以下几个步骤 1、设计ui ##字段 通过看数据库里面的user表里面的字段,可以大概知道需要几个字段: emailusernamepasswordpassword_confirm 生成简单的ui界面,复制这个html代码 然后在项目路径下面创建一…

鸿蒙 DevEcoStudio:简单实现网络请求登录案例

使用http或axios实现登录案例 在entry/src/main/ets/pages路径下新建Page9.ets文件: import http from ohos.net.http import router from ohos.router Entry Component struct Page9 {State message: string Hello WorldState username: string State password:…

数据结构(十二)----查找

目录 一.查找的概念 二.查找算法 1.顺序查找 顺序查找的查找效率: 顺序查找的优化: •有序表的优化(缩短查找失败的平均查找长度) •被查概率不相等的表的优化(缩短查找成功的平均查找长度) 2.折半…

2024年钉钉群直播回放怎么保存

钉钉群直播回放下载插件我已经打包好了,有需要的自己下载一下 小白钉钉工具打包链接:百度网盘 请输入提取码 提取码:1234 --来自百度网盘超级会员V10的分享 1.首先解压好我给大家准备好的压缩包 2.再把逍遥一仙下载器解压出来&#xff0…

CentOS 重启网络失败service network restart

命令 service network restart 提示 Job for network.service failed because the control process exited with error code. See “systemctl status network.service” and “journalctl -xe” for details. 原因分析 使用journalctl -xe命令查看日志后的具体错误 -- Un…

Baidu Comate——让软件研发更高效、更智能

个人名片: 😊作者简介:一名大二在校生 🤡 个人主页:坠入暮云间x 🐼座右铭:给自己一个梦想,给世界一个惊喜。 🎅**学习目标: 坚持每一次的学习打卡 文章目录 一、Baidu Co…

LLM——大语言模型完整微调策略指南

1、 概述 GPT-4、LaMDA、PaLM等大型语言模型(LLMs)以其在广泛主题上的深入理解和生成高度类人文本的能力而闻名遐迩,它们在全球范围内引起了广泛关注。这些模型的预训练过程涉及对来自互联网、书籍和其他来源的数十亿词汇的海量数据集进行学…

杰理-701-单线灯-ws2812-驱动

杰理-701-单线灯-ws2812-驱动 LED_gradual_open(); //调用后 呼吸灯 set_led_colour(R,G,B);//具体颜色 spi_dma_set_addr_for_isr //spi 配置dma 后灯才亮 #define LED_H 0x7c #define LED_L 0x40 发送高位和地位的字节,具体…

2024.5.12 机器学习周报

引言 Abstract 文献阅读 1、题目 Deep High-Resolution Representation Learning for Human Pose Estimation 2、引言 在本文中,我们感兴趣的是人类姿态估计问题,重点是学习可靠的高分辨率表示。大多数现有的方法从由高到低分辨率网络产生的低分辨…

YOLOv5改进(二)BiFPN替换Neck网络

前言 针对红绿灯轻量化检测,上一节使用MobileNetv3替换了主干网络,本篇将在使用BiFPN替换Neck的方式优化算法~ 往期回顾 YOLOv5改进(一)MobileNetv3替换主干网络 目录 一、BiFPN简介二、改进方法一第一步:在common.…

LeetCode509:斐波那契数(使用动态规划)

题目描述 斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n) F(n - 1) F(n - 2),其中 n > 1…

D3CTF2024

文章目录 前言notewrite_flag_where【复现】D3BabyEscapePwnShell 前言 本次比赛笔者就做出两道简单题,但队里师傅太快了,所以也没我啥事。然后 WebPwn 那题命令行通了,但是浏览器不会调试,然后就简单记录一下。 note 只开了 N…

封装Springboot基础框架功能-03

在些模块中汇总了一些web开发常用的配置和功能。 模块源码结构 Restful API常用定义 QueryParam请求参数 Data public class QueryParam {private String key;private String value; }RestfulController实现 RestfulController.java,主要汇总一些常用的restful的…

CV每日论文--2024.4.29

1、Make-it-Real: Unleashing Large Multimodal Models Ability for Painting 3D Objects with Realistic Materials 中文标题:实现高仿真3D物体绘制:释放大型多模态模型的能力 简介:物理材料对于增强不同应用场景和光照条件下的3D资产的逼真感至关重要…