微服务实战系列之玩转Docker(十六)

导览

  • 前言
  • Q:基于容器云如何实现高可用的配置中心
  • 一、etcd入门
    • 1. 简介
    • 2. 特点
  • 二、etcd实践
    • 1. 安装etcd镜像
    • 2. 创建etcd集群
      • 2.1 etcd-node1
      • 2.2 etcd-node2
      • 2.3 etcd-node3
    • 3. 启动etcd集群
  • 结语
  • 系列回顾

前言

Docker,一个宠儿,一个云原生领域的“容器健将”,博主自开设玩转Docker系列后,从7月到本月,已足足持续更新了3个月。通过循序渐进、由浅入深的方式,以十五篇“精美实干”的Docker实践文章,为各位有兴趣、需帮助的盆友/同学提供了一定的示范或指南。

经过这个系列的创作,博主深切地感受到知识的整合与传递过程,不是堆砌拼凑,更不是左拉右拽。正如你在提交一个方案时,如果没有明确的论题、论据,那么大概率是一次无效的思考。
总之,还是一句话,理论联系实际是“技术ren”的看家本领。

话不多言归正传,最近有粉丝又找博主了,询问什么时候更博啊…甚为惭愧。因为博主虽然主攻Java领域,但是周边也得涉猎。为积极响应粉丝盆友的号召,玩转Docker系列今日再续新篇。那么该谈点什么呢?咱们边走边聊,Let’s go~

在这里插入图片描述

Q:基于容器云如何实现高可用的配置中心

先抛个问题给各位,当业务从单体(或单节点)切换到集群服务模式时,你最该考虑的是什么呢?
甲说:我打包一次,可以随处部署,这正是Docker可以解决的,妙极了;
乙说:业务模块切换为微服务,实现高可用,好想法;
丙说:集中发布、集中部署、集中运维,好主意;
其他人怎么说,咱们先不谈了。以上甲乙丙的想法,也可能是我们的想法,博主在这里不做评价,但是必须考虑的指标一定是配置中心支持高可用

当前我们以微服务模式构建业务,以容器化思维部署应用,那么中心轴是什么?毫无疑问,一定是配置中心。配置中心至少发挥了以下3个作用:

  • 服务注册
  • 服务状态发布与订阅
  • 服务发现

行文至此,各位盆友,脑海中有没有闪现出一个“名人”:动物园管理员——ZooKeeper。在博主的历史文章中,已对这位管理员做了较为详细的介绍,这里不再赘述(可以回去查找)。今天我们看看另外一个活跃于云平台(PaaS)的服务发现配置中心——etcd 吧。

一、etcd入门

1. 简介

什么是etcd ?

etcdis a strongly consistent, distributed key-value store that provides a reliable way to store data that needs to be accessed by a distributed system or cluster of machines. It gracefully handles leader elections during network partitions and can tolerate machine failure, even in the leader node。

一句话总结:etcd是一个高度一致的分布式key-value存储仓库,支持集群共享访问,并且可以优雅的实现集群内的选举,避免宕机。

在这里插入图片描述

它的名称由来也很有意思,是 etc(unix/linux的/etc目录)+ d(distribute系统)。简单理解就是一个支持分布式的“文件目录”

2. 特点

根据官方提供的文档材料,博主进行简单描述,以供大家参考:
在这里插入图片描述
总结一下,即以下8个字:

  • 简单:调用简单
  • 安全:支持SSL机制
  • 快速:读写效率高
  • 可信:分布一致性强

二、etcd实践

对它有一个简单的认知后,博主先带着各位亲自体验一下,咱走着聊~

1. 安装etcd镜像

docker pull bitnami/etcd:3

效果如下:
在这里插入图片描述

2. 创建etcd集群

博主准备3个主机,用于模拟创建真实的etcd集群,每个节点定义如下:

节点名称节点IP端口
etcd-node110.11.12.44:2380
etcd-node210.11.12.45:2380
etcd-node310.11.12.46:2380

同时为便于管理,博主选择采用docker compose进行容器编排,以下是每个节点的docker-compose.yml基础配置内容。

2.1 etcd-node1

services:etcd-node1:image: bitnami/etcd:3container_name: etcd-node1environment:- TZ=Asia/Shanghai- ETCD_NAME=etcd-node1- ETCD_DATA_DIR=/bitnami/etcd/data- ALLOW_NONE_AUTHENTICATION=yes- ETCD_ADVERTISE_CLIENT_URLS=http://10.11.12.44:2379- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://10.11.12.44:2380- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380- ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster- ETCD_INITIAL_CLUSTER=etcd-node1=http://10.11.12.44:2380,etcd-node2=http://10.11.12.45:2380,etcd-node3=http://10.11.12.46:2380- ETCD_INITIAL_CLUSTER_STATE=newrestart: alwaysports:- 2380:2380- 2379:2379volumes:- /app/etcd/data:/bitnami/etcd/data

2.2 etcd-node2

services:etcd-node2:image: bitnami/etcd:3container_name: etcd-node2environment:- TZ=Asia/Shanghai- ETCD_NAME=etcd-node2- ETCD_DATA_DIR=/bitnami/etcd/data- ALLOW_NONE_AUTHENTICATION=yes- ETCD_ADVERTISE_CLIENT_URLS=http://10.11.12.45:2379- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://10.11.12.45:2380- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380- ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster- ETCD_INITIAL_CLUSTER=etcd-node1=http://10.11.12.44:2380,etcd-node2=http://10.11.12.45:2380,etcd-node3=http://10.11.12.46:2380- ETCD_INITIAL_CLUSTER_STATE=newrestart: alwaysports:- 2380:2380- 2379:2379volumes:- /app/etcd/data:/bitnami/etcd/data

2.3 etcd-node3

services:etcd-node3:image: bitnami/etcd:3container_name: etcd-node3environment:- TZ=Asia/Shanghai- ETCD_NAME=etcd-node3- ETCD_DATA_DIR=/bitnami/etcd/data- ALLOW_NONE_AUTHENTICATION=yes- ETCD_ADVERTISE_CLIENT_URLS=http://10.11.12.46:2379- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://10.11.12.46:2380- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380- ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster- ETCD_INITIAL_CLUSTER=etcd-node1=http://10.11.12.44:2380,etcd-node2=http://10.11.12.45:2380,etcd-node3=http://10.11.12.46:2380- ETCD_INITIAL_CLUSTER_STATE=newrestart: alwaysports:- 2380:2380- 2379:2379volumes:- /app/etcd/data:/bitnami/etcd/data

3. 启动etcd集群

启动集群很简单,分别在每个节点中执行如下命令:

# 后台启动
docker compose up -d
# 查看
docker compose ps

效果如下:
在这里插入图片描述
至此,一个基于docker的etcd集群创建完成了。

结语

这是一篇极简的etcd学习教程,重在实践。etcd是容器云中常用的分布式存储工具,在高可用高可靠等安全服务的前提下, 它能够为业务服务提供极高的数据稳定性和可靠性。

走过的、路过的盆友们,点点赞,收收藏,并加以指导,以备不时之需哈~

系列回顾


微服务实战系列之玩转Docker(十五)
微服务实战系列之玩转Docker(十四)
微服务实战系列之玩转Docker(十三)
微服务实战系列之玩转Docker(十二)
微服务实战系列之玩转Docker(十一)
微服务实战系列之玩转Docker(十)
微服务实战系列之玩转Docker(九)
微服务实战系列之玩转Docker(八)
微服务实战系列之玩转Docker(七)
微服务实战系列之玩转Docker(六)
微服务实战系列之玩转Docker(五)
微服务实战系列之玩转Docker(四)
微服务实战系列之玩转Docker(三)
微服务实战系列之玩转Docker(二)
微服务实战系列之玩转Docker(一)
微服务实战系列之云原生

在这里插入图片描述

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

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

相关文章

固定翼无人机飞行操控技术详解

固定翼无人机飞行操控技术是一个复杂而精密的领域,涵盖了从起飞准备到实际飞行操作,再到安全降落的各个环节。以下是对固定翼无人机飞行操控技术的详细解析: 一、起飞准备 1. 设备检查: 确保无人机充满电,检查电池状…

文件描述符fd 和 缓冲区

目录 1.文件描述符 fd 1.1文件打开的返回值fd(重点) 1.2.如何理解Linux下的一切皆文件 1.3.文件fd的分配原则 && 输出重定向 1.4.dup2()函数 2.缓冲区 2.1. 概念 2.2. 存在的原因 2.3. 类型(刷新方案) 2.4. 存放的位置 1.文件描述符 fd …

【qt qtcreator使用】【正点原子】嵌入式Qt5 C++开发视频

QT creator 的使用 一.qtcreator的介绍  (1).ui界面介绍    [1].软件左侧界面部分    [2].软件界面下方部分    [3].UI设计界面 (2).debug的使用 (3).项目的配置 (4).帮助文档的使用 (5).构建多个项目 二.qtcreator 的设置 (1).qt编译套件的设置 (2).设置快…

Vue3和Springboot前后端简单部署

一、Vue3Springboot 的前后端简单部署 (在win下面部署) 1、前端实现部署 思想: 前端打包项目后、放到nginx中进行部署 1、nginx 安装 和 解压 1、下载 nginx.zip win版本 解压就可以 2、解压后、启动程序 3、访问 nginx 欢迎页面 http://localhost/ 80 端口 可以省略 直接访…

【大数据学习 | kafka】kafka的ack和一致性

1. ack级别 上文中我们提到过kafka是存在确认应答机制的,也就是数据在发送到kafka的时候,kafka会回复一个确认信息,这个确认信息是存在等级的。 ack0 这个等级是最低的,这个级别中数据sender线程复制完毕数据默认kafka已经接收到…

【分布式技术】分布式事务深入理解

文章目录 概述产生原因关键点 分布式事务解决方案3PC3PC的三个阶段:3PC相比于2PC的改进:3PC的缺点: TCCTCC事务的三个阶段:TCC事务的设计原则:TCC事务的适用场景:TCC事务的优缺点:如何解决TCC模…

Linux高阶——1027—

1、守护进程的基本流程 1、父进程创建子进程,父进程退出 守护进程是孤儿进程,但是是工程师人为创建的孤儿进程,低开销模式运行,对系统没有压力 2、子进程(守护进程)脱离控制终端,创建新会话 …

centos7配置keepalive+lvs

拓扑图 用户访问www.abc.com解析到10.4.7.8,防火墙做DNAT将访问10.4.7.8:80的请求转换到VIP 172.16.10.7:80,负载均衡器再将请求转发到后端web服务器。 实验环境 VIP:负载均衡服务器的虚拟ip地址 LB :负载均衡服务器 realserv…

服务器宝塔安装哪吒监控

哪吒文档地址:https://nezha.wiki/guide/dashboard.html 一、准备工作 OAuth : 我使用的gitee,github偶尔无法访问,不是很方便。第一次用了极狐GitLab,没注意,结果是使用90天,90天后gg了,无法登…

【动手学强化学习】part6-策略梯度算法

阐述、总结【动手学强化学习】章节内容的学习情况,复现并理解代码。 文章目录 一、算法背景1.1 算法目标1.2 存在问题1.3 解决方法 二、REINFORCE算法2.1 必要说明softmax()函数交叉熵策略更新思想 2.2 伪代码算法流程简述 2.3 算法代码2.4 运行结果2.5 算法流程说明…

单片机内存管理和启动文件

一、常见存储器介绍 FLASH又称为闪存,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据,U盘和MP3里用的就是这种存储器。在以前的嵌入式芯片中,存储设备一直使用ROM(EPROM),随着技术的…

Python画图3个小案例之“一起看流星雨”、“爱心跳动”、“烟花绚丽”

源码如下: import turtle # 导入turtle库,用于图形绘制 import random # 导入random库,生成随机数 import math # 导入math库,进行数学计算turtle.setup(1.0, 1.0) # 设置窗口大小为屏幕大小 turtle.title("流星雨动画&…

SQL-lab靶场less1-4

说明:部分内容来源于网络,如有侵权联系删除 前情提要:搭建sql-lab本地靶场的时候发现一些致命的报错: 这个程序只能在php 5.x上运行,在php 7及更高版本上,函数“mysql_query”和一些相关函数被删除&#xf…

AutoGLM:智谱AI的创新,让手机成为你的生活全能助手

目录 引言一、AutoGLM:开启AI的Phone Use时代二、技术核心:AI从“语言理解”到“执行操作”三、实际应用案例:AutoGLM的智能力量1. 智能生活管理🍎2. 社交网络的智能互动🍑3. 办公自动化🍒4. 电子商务的购物…

ceph补充介绍

SDS-ceph ceph介绍 crushmap 1、crush算法通过计算数据存储位置来确定如何存储和检索,授权客户端直接连接osd 2、对象通过算法被切分成数据片,分布在不同的osd上 3、提供很多种的bucket,最小的节点是osd # 结构 osd (or device) host #主…

Scrapy源码解析:DownloadHandlers设计与解析

1、源码解析 代码路径:scrapy/core/downloader/__init__.py 详细代码解析,请看代码注释 """Download handlers for different schemes"""import logging from typing import TYPE_CHECKING, Any, Callable, Dict, Gener…

如何解决docker镜像下载失败问题

经常用docker的朋友都知道,docker hub的镜像仓库经常访问不通 rootiZwz97kfjnf78copv1ae65Z:~# docker pull ubuntu:18.04 Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.…

探索 ONLYOFFICE:开源办公套件的魅力

文章目录 引言一、ONLYOFFICE 产品介绍与历史1.1 ONLUOFFICE 介绍1.2 ONLYOFFICE发展历史 二、ONLYOFFICE 的核心功能2.1 文档处理2.2 演示文稿 三、ONLYOFFICE 部署与安装四、ONLYOFFICE 产品优势和挑战五、ONLYOFFICE 案例分析六、ONLYOFFICE 的未来发展七、全文总结 引言 在…

FlaskFastAPIgunicornunicorn并发调用

Flask VS. FastAPI Flask和FastAPI是Python中两种流行的Web框架,它们各自具有不同的特点和适用场景。以下是它们之间的一些主要区别: 1. 框架类型 Flask:Flask是一个轻量级的微框架,适合构建小型到中型的Web应用。它灵活且易于扩展…

第2章 JSP基础

JavaWeb程序设计-T2(JSP基础) 一、JSP概述 1、JSP概念 JSP(Java Server Page)是sun公司倡导建立的一种动态网页标准。 用于开发动态网页(将后端开发语言嵌入带前端中【将java嵌入到HTML中】) 2、JSP工作原理 JSP就是将传统Java代码嵌入到html页面代码中,由Web服务器进…