微服务实战系列之玩转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.xdnf.cn/news/1832.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

注册信息的提交

动态网页是指能够根据用户的操作或输入动态变化的网页。与静态网页相比,动态网页具有交互性和可变性。 一 动态网页概念 动态网页通常使用脚本语言(如JavaScript)与服务器进行交互,从服务器获取数据并动态更新网页内容。常见的动…

aws 部署测试环境服务+ip域名绑定

aws 部署springboot vue ip域名绑定域名 1.新建实例之后,作为测试环境开放mysql入出站规则,route53域名,红框中放入阿里云域名 1.设置出入站规则 实例应用安全组 2.mysql aws部署,redis,java环境,参见之前文章腾讯…

《数字图像处理基础》学习05-数字图像的灰度直方图

目录 一,数字图像的数值描述 1,二值图像 2,灰度图像 3,彩色图像 二,数字图像的灰度直方图 一,数字图像的数值描述 在之前的学习中,我知道了图像都是二维信息&…

书生大模型第四期 | L0G3000 git 基础知识

1、破冰行动 fork项目 PR链接:跳转访问 https://github.com/InternLM/Tutorial/pull/21632、构建个人项目 创建一个仓库保存LLM学习的笔记,以md文件为主 博客页面项目

使用 OpenTelemetry 定制跨度名称并丰富跨度而无需更改代码 - 第 1 部分

作者:来自 Elastic David Hope OpenTelemetry Collector 提供强大的功能,可以在遥测数据到达可观察性工具之前丰富和细化遥测数据。在这篇博文中,我们将探讨如何利用 Collector 在 Elastic Observability 中创建更有意义的 transaction 名称&…

成都睿明智科技有限公司正规吗靠谱吗?

在这个短视频风起云涌的时代,抖音电商以其独特的魅力,成为了无数商家竞相追逐的新蓝海。而在这片浩瀚的商海中,成都睿明智科技有限公司犹如一艘装备精良的航船,引领着众多企业破浪前行,探索抖音电商的无限可能。今天&a…

GHuNeRF: Generalizable Human NeRF from a Monocular Video

研究背景 研究问题:这篇文章要解决的问题是学习一个从单目视频中泛化的人类NeRF模型。尽管现有的泛化人类NeRF已经取得了令人印象深刻的成果,但它们需要多视图图像或视频,这在某些情况下可能不可用。此外,一些基于单目视频的人类…

中聚企服:打造智能企业服务助手,“中聚AI”解答一切企业难题

近日,一款专为企业用户设计的智能问答助手——“中聚AI”正式亮相市场。这款AI由中产聚融有限公司旗下的中聚企服团队自主研发,旨在帮助企业用户快速、高效地解答经营过程中的各种难题,覆盖从公司注册、财税规划到知识产权和资质办理等多领域…

手把手教你轻松掌握~Air780E软件UDP应用示例!快来看!

还不会的小伙伴看过来!通过本文的介绍,相信大家已经掌握了Air780E模组UDP应用的基本操作和常见问题的解决方法。赶快动手实践吧,让你的项目更加高效稳定! 1、UDP概述 UDP(用户数据报协议,UserDatagramProt…

Win10搭建SFTP服务器

1、下载安装 Release v9.5.0.0p1-Beta PowerShell/Win32-OpenSSH GitHub 下载OpenSSH-Win64.zip 解压之后放入到:C:\Program Files (x86)\OpenSSH-Win64以管理员身份打开CMD进入到 C:\Program Files (x86)\OpenSSH-Win64 文件夹执行命令 powershell.exe -Exec…

1分钟解决Excel打开CSV文件出现乱码问题

一、编码问题 1、不同编码格式 CSV 文件有多种编码格式,如 UTF - 8、UTF - 16、ANSI 等。如果 CSV 文件是 UTF - 8 编码,而 Excel 默认使用的是 ANSI 编码打开,就可能出现乱码。例如,许多从网络应用程序或非 Windows 系统生成的 …

构建灵活、高效的HTTP/1.1应用:探索h11库

文章目录 构建灵活、高效的HTTP/1.1应用:探索h11库背景这个库是什么?如何安装这个库?库函数使用方法使用场景常见的Bug及解决方案总结 构建灵活、高效的HTTP/1.1应用:探索h11库 背景 在现代网络应用中,HTTP协议是基础…

【算法】C++深度优先搜索(DFS)全解析

📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…

汽车免拆诊断案例 | 2010款起亚赛拉图车发动机转速表指针不动

故障现象  一辆2010款起亚赛拉图车,搭载G4ED 发动机,累计行驶里程约为17.2万km。车主反映,车辆行驶正常,但组合仪表上的发动机转速表指针始终不动。 故障诊断  接车后进行路试,车速表、燃油存量表及发动机冷却温度…

【环境搭建】Apache ZooKeeper 3.8.4 Stable

软件环境 Ubuntu 20.04 、OpenJDK 11 OpenJDK 11(如果已经安装,可以跳过这一步) 安装OpenJDK 11: $ sudo apt-get update$ sudo apt-get install -y openjdk-11-jdk 设置 JAVA_HOME 环境变量: $ sudo gedit ~/.bash…

solid works下载

软件安装包下载解压打开 将软件安装包下载到电脑本地,使用解压工具进行解压打开(下载解压安装全程关闭杀毒软件及防火墙) 打开Crack文件夹 打开Crack文件夹进去 复制SolidWorks_Flexnet_Server文件夹 复制SolidWorks_Flexnet_Server文件夹到…

硅谷甄选(10)用户管理

用户管理模块 9.1 静态搭建 主要是el-form、el-pagination <template><el-card style"height: 80px"><el-form :inline"true" class"form"><el-form-item label"用户名:"><el-input placeholder"请…

C语言-详细讲解-打印各种三角形矩阵

目录 1.字符三角形 2. 直角三角形&#xff08;1&#xff09; 3.直角三角形&#xff08;2&#xff09; 4. 打印乘法口诀表 1.字符三角形 入门级&#xff0c;熟悉输入与输出 #include<stdio.h> int main() {char i;scanf("%c",&i);printf(" %c…

图像的特征类别

一 图像的特征类别 1.自然特征 ①光谱特征 ②几何特征 ③时相特征 2.人工特征 ①直方图特征 ②灰度边缘特征 ③线、角点、纹理特征 图像的特征有很多&#xff0c;按提取特征的范围大小又可分为&#xff1a; ①点特征 仅由各个像素就能决定的性质。如单色图像中的灰度值、彩色…

MYSQL--完整性约束

目录 约束 设置约束 方式一 推荐&#xff1a;方式二 删除约束 主键约束 自增列 组合主键, 联合主键 外键约束 给表添加外键约束 注意: 约束 概念&#xff1a;约束是作用于表中字段上的规则&#xff0c;用于限制存储在表中的数据。 目的&#xff1a;保证数据库中数据的正…