华为云云耀云服务器L实例评测|华为云上安装etcd

文章目录

  • 华为云云耀云服务器L实例评测|华为云上安装etcd
    • 一、什么是etcd
      • 官方硬件建议
    • 二、华为云主机准备
    • 三、etcd安装
      • 1. 安装预构建的二进制文件
      • 2. 从源代码构建
    • 四、etcd服务注册与发现
      • 1. 配置etcd
      • 2. 使用systemctl 管理启动etcd服务
      • 3. 注册服务
      • 4. 发现服务
    • 五、其他参考

华为云云耀云服务器L实例评测|华为云上安装etcd

一、什么是etcd

官网:https://etcd.io/
github:https://github.com/etcd-io/etcd

etcd 是一个分布式键值对存储系统,由coreos 开发,内部采用raft 协议作为一致性算法,用于可靠、快速地保存关键数据,并提供访问。通过分布式锁、leader选举和写屏障(write barriers),来实现可靠的分布式协作

任何应用(从简单的 Web 应用到 Kubernetes 等高度复杂的容器编排引擎)都可以使用标准的 HTTP/JSON 工具在 etcd 中读写数据。

官方硬件建议

官方硬件推荐:https://etcd.io/docs/v3.5/op-guide/hardware/

etcd 通常在用于开发或测试目的的资源有限的情况下运行良好;在笔记本电脑或廉价的云机器上使用 etcd 进行开发是很常见的。但是,在生产中运行 etcd 集群时,一些硬件指南对于正确管理很有用。

在这里插入图片描述如上图,一个小集群,2C8G 够用了。

CPU:
很少有 etcd 部署需要大量 CPU。 典型的集群需要两到四个核心才能平稳运行。负载较重的 etcd 部署(每秒服务数千个客户端或数万个请求)往往会受到 CPU 限制,因为 etcd 可以服务于内存中的请求。如此繁重的部署通常需要八到十六个核心。

内存:
etcd 的内存占用相对较小,但其性能仍然取决于是否有足够的内存。etcd 服务器将积极缓存键值数据,并花费大部分剩余内存来跟踪观察者。通常 8GB 就足够了。对于具有数千个观察者和数百万个密钥的重型部署,请相应地分配 16GB 到 64GB 内存。

硬盘:
快速磁盘是 etcd 部署性能和稳定性的最关键因素。

缓慢的磁盘会增加 etcd 请求延迟并可能损害集群稳定性。由于 etcd 的共识协议依赖于将元数据持久存储到日志中,因此大多数 etcd 集群成员必须将每个请求写入磁盘。此外,etcd 还将增量地将其状态检查点到磁盘,以便它可以截断此日志。如果这些写入花费的时间太长,心跳可能会超时并触发选举,从而破坏集群的稳定性。一般来说,要判断磁盘对于 etcd 来说是否足够快,可以使用fio等基准测试工具。请阅读此处的示例。

二、华为云主机准备

  1. 购买华为云主机,本次评测系统如下:
    在这里插入图片描述注意:本文我们采用2C4G环境测试,非2C2G~

  2. 创建新的安全组,开发所有端口方便测试
    在这里插入图片描述
    更改安全组,如下,选择我们的开发所有端口的这个安全组:
    在这里插入图片描述

  3. 开发所有端口后,我们ssh登录上华为云主机即可~

三、etcd安装

官方安装文档:https://etcd.io/docs/v3.5/install/
官方快速开始文档:

https://etcd.io/docs/v3.5/quickstart/

etcd在生产环境中一般推荐集群方式部署,三节点集群可以实现高可用,单节点存在宕机风险。本文定位为入门,华为云云耀云服务器L实例测试验证安装,主要讲讲单节点安装和基本使用。

1. 安装预构建的二进制文件

安装 etcd 最简单的方法是使用预构建的二进制文件:

  1. 从Releases下载适合您平台的压缩存档文件,选择版本v3.5.0或更高版本。

解压缩存档文件。这会产生一个包含二进制文件的目录。

将可执行二进制文件添加到您的路径中。例如,将二进制文件重命名和/或移动到您的路径中的目录(如/usr/local/bin),或者将上一步创建的目录添加到您的路径中。

mkdir -p etcd-download
cd etcd-downloadETCD_VER=v3.5.0# choose either URL
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}rm -f etcd-${ETCD_VER}-linux-amd64.tar.gzcurl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o etcd-${ETCD_VER}-linux-amd64.tar.gz# 改完自己的安装目录
export INSTALL_PATH="/opt/lighthouse/server/env/"
mkdir -p $INSTALL_PATH
tar xzvf etcd-${ETCD_VER}-linux-amd64.tar.gz  -C $INSTALL_PATH/
mv $INSTALL_PATH/etcd-* $INSTALL_PATH/etcd$INSTALL_PATH/etcd/etcd --version

2. 从源代码构建

如果您有Go 版本 1.16+,您可以按照以下步骤从源代码构建 etcd:

将 etcd 存储库下载为 zip 文件并解压缩,或使用以下命令克隆存储库。

$ git clone -b v3.5.0 https://github.com/etcd-io/etcd.git

要从 构建main@HEAD,请省略该-b v3.5.0标志。

更改目录:

$ cd etcd

运行构建脚本:

$ ./build.sh

二进制文件位于该bin目录下。

将目录的完整路径添加bin到您的路径中,例如:

$ export PATH="$PATH:`pwd`/bin"

测试etcd您的路径中的内容:

$ etcd --version

四、etcd服务注册与发现

etcd 基于Go语言实现,主要用于共享配置,服务发现,集群监控,leader选举,分布式锁等场景。

etcd是一个高可用、分布式的键值存储系统,可以用来实现服务注册与发现。

本文我们重点讲解服务注册与发现~

服务注册与发现是指将服务实例注册到服务注册中心,使得其他服务能够发现并使用该服务。etcd可以作为一个服务注册中心,用来存储服务实例的地址和其他相关信息。

服务提供者在启动时,将自己的服务实例信息(例如IP地址、端口号、服务名称、健康状态等)写入到etcd中,同时指定一个TTL(Time To Live)过期时间。etcd会自动维护这些服务实例的心跳信息,如果一个服务实例的心跳超时,则etcd会将其从注册中心中删除。

服务消费者在启动时,可以通过etcd中的API查询对应服务的实例信息。消费者可以使用该信息调用服务提供者,而不需要硬编码服务地址。

1. 配置etcd

  1. etcd 配置项解释
    https://etcd.io/docs/v3.5/op-guide/configuration/
    这篇文档详细解释了 etcd 的各种配置参数。
  2. etcd 生产部署建议
    https://etcd.io/docs/v3.5/op-guide/production/
    介绍了在生产环境部署 etcd 需要注意的安全、性能等方面的设置。
  3. etcd集群设置示例
    https://etcd.io/docs/v3.5/dev-guide/clusters/
    提供了不同场景下 etcd 集群配置的示例。

在终端中输入以下命令启动etcd服务:

etcd

如果需要自定义配置,可以使用etcd命令行参数,例如:

etcd --name my-etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379
  • –name my-etcd:指定etcd节点的名称,在集群中应该是唯一的。
  • –listen-client-urls http://0.0.0.0:2379:客户端访问的监听地址,0.0.0.0表示所有地址,2379是默认的etcd客户端端口。
  • –advertise-client-urls http://0.0.0.0:2379:对外公告的客户端地址,用于访问该etcd节点。

需要注意的是,这个只是单个etcd节点的最小配置,要构建集群还需要配置其他节点和初期集群信息。但命令包含了etcd节点的基本网络和识别配置。

当然,etcd支持使用配置文件来管理服务配置。命令行参数指定配置文件,在启动etcd时,使用–config-file参数指定配置文件:

etcd --config-file=/etc/etcd/etcd.conf.yml

这里给出单节点,配置demo:

# 节点名称
name: 'etcd-node1'# 数据目录
data-dir: /opt/lighthouse/server/env/etcd/etcd-data# 快照设置
snapshot-count: 10000# 心跳间隔
heartbeat-interval: 100# 通讯和客户端监听地址
listen-peer-urls: http://0.0.0.0:2380
listen-client-urls: http://0.0.0.0:2379# 初始集群配置
initial-advertise-peer-urls: http://0.0.0.0:2380
initial-cluster: etcd-node1=http://0.0.0.0:2380
initial-cluster-token: etcd-cluster-1
initial-cluster-state: new# 启用详细日志
log-level: debug
log-dir: /opt/lighthouse/server/logs/etcd
log-file: etcd.log
log-max-size: 100
log-backups: 3
log-format: text# 压缩设置
auto-compaction-mode: periodic
auto-compaction-retention: "1"# 安全传输
#client-transport-security:
#  trusted-ca-file: /path/to/ca.crt
#  cert-file: /path/to/etcd.crt
#  key-file: /path/to/etcd.key
#
#peer-transport-security:
#  trusted-ca-file: /path/to/ca.crt
#  cert-file: /path/to/etcd.crt
#  key-file: /path/to/etcd.key

2. 使用systemctl 管理启动etcd服务

[Unit]
Description=etcd key-value store
Documentation=https://etcd.io/docs/
After=network.target[Service]
CPUAccounting=true
MemoryAccounting=true
CPUQuota=200%
MemoryLimit=2G
Type=notify
ExecStart=/opt/lighthouse/server/env/etcd/etcd  --config-file=/opt/lighthouse/server/conf/etcd/etcd.conf.yml
Restart=on-failure
LimitNOFILE=65536[Install]
WantedBy=multi-user.target

使用:–config-file= 指定启动用的配置文件即可`

配置为systemd服务:

# etcd 数据目录 $ETCD_DIR/etcd-data
sudo mkdir -p $ETCD_DIR/etcd-datasudo rm -rf /etc/systemd/system/etcd.service
sudo cp $SERVER_CONF_PATH/etcd.service /etc/systemd/system/etcd.servicesudo systemctl daemon-reload
sudo systemctl enable etcd
sudo systemctl restart etcd

3. 注册服务

服务提供者在启动时,需要将自己的服务实例信息写入到etcd中。可以使用etcdctl命令行工具。

etcdctl put /services/my-service/1 '{"host":"192.168.0.1","port":8080}'

上述命令将一个名为my-service的服务实例注册到etcd中,其IP地址为192.168.0.1,端口号为8080。

etcd支持多种编程语言的客户端库,例如Go、Java、Python等。使用客户端库可以更加方便地进行服务注册和发现。

4. 发现服务

服务消费者在启动时,可以从etcd中查询服务实例信息。

./etcdctl get /services/my-service --prefix

上述命令将查询所有名为my-service的服务实例信息。可以通过etcdctl的–watch参数实现自动监听服务实例的变化。

五、其他参考

etcd服务注册与发现
参考URL: https://zhuanlan.zhihu.com/p/625634172

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

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

相关文章

面试题:说一下SpringBoot的自动配置原理

文章目录 引言工作原理剖析EnableAutoConfiguration自动配置生效总结 引言 不论在工作中,亦或是求职面试,Spring Boot已经成为我们必知必会的技能项。除了某些老旧的政府项目或金融项目持有观望态度外,如今的各行各业都在飞速的拥抱这个已经…

【PHP】如何关闭buffer实时输出内容到前端

前言 默认情况下,我们在PHP里使用echo等函数输出的内容,是不会马上发送给前端的,原因是有 buffer 的存在,buffer又分两处,一处是PHP本身的buffer,另一处是Nginx的buffer。只有当buffer满了之后&#xff0c…

if条件分支计算分段函数

分别罗列x的值域区间,if条件跳转相应分支计算函数值。 (本笔记适合正在研学if条件分支语句的 coder 翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》&#xff0c…

【MySQL进阶】--- 存储引擎的介绍

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 目录 一、什么…

Object.defineProperty()方法详解,了解vue2的数据代理

假期第一篇,对于基础的知识点,我感觉自己还是很薄弱的。 趁着假期,再去复习一遍 Object.defineProperty(),对于这个方法,更多的还是停留在面试的时候,面试官问你vue2和vue3区别的时候,不免要提一提这个方法…

(2023,ControlNet,CFGRW,diffusion,控制组合)向文本到图像扩散模型添加条件控制

Adding Conditional Control to Text-to-Image Diffusion Models 公众号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 1. 简介 2.相关工作 2.1. 微调神经网络 2.2. 图像扩散 …

FFmpeg 命令:从入门到精通 | ffmpeg 命令分类查询

FFmpeg 命令:从入门到精通 | ffmpeg 命令分类查询 FFmpeg 命令:从入门到精通 | ffmpeg 命令分类查询ffmpeg -versionffmpeg -buildconfffmpeg -formatsffmpeg -muxersffmpeg -demuxersffmpeg -codecsffmpeg -decodersffmpeg -encodersffmpeg -bsfsffmpeg…

基于SSM+Vue的医院住院综合服务管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

三、2023.9.29.C++面向对象.3

文章目录 33、简述一下什么是面向对象?34、简述一下面向对象的三大特征?35、简述一下 C 的重载和重写,以及它们的区别?36、说说 C 的重载和重写是如何实现的?37、说说构造函数有几种,分别什么作用?38、只定…

汽车电子——产品标准规范汇总和梳理(开发体系)

文章目录 前言 一、设计架构 二、安全可靠 三、测试验证 四、过程能力 五、质量管理 六、开发指南 总结 前言 见《汽车电子——产品标准规范汇总和梳理》 一、设计架构 《Autosar R22-11 汽车开放系统体系架构》 二、安全可靠 《GB/T 34590.1-2022(ISO 262…

表格内日期比较计算

需求&#xff1a;在表格中新增数据&#xff0c;计算开始日期中最早的和结束日期中最晚的&#xff0c;回显到下方。 <el-formref"formRef":model"ruleForm":rules"rules"style"margin-top: 20px;"label-position"top">…

python爬虫基于管道持久化存储操作

文章目录 基于管道持久化存储操作scrapy的使用步骤1.先转到想创建工程的目录下&#xff1a;cd ...2.创建一个工程3.创建之后要转到工程目录下4.在spiders子目录中创建一个爬虫文件5.执行工程setting文件中的参数 基于管道持久化存储的步骤&#xff1a;持久化存储1&#xff1a;保…

Win11下无法打开丛林之狐,提示未检测到DirectX 8.1

新装的win11系统&#xff0c;打开丛林之狐提示未检测到DirectX 8.1. 运行dxdiag检查DirectX版本&#xff1a; DX版本已经是12了&#xff1a; 最终参考了这篇文章解决了&#xff1a; 罪恶都市出现XX-directx version 8.1处理方法 - 知乎 控制面板 > 程序 > 启用或关闭Wi…

小谈设计模式(6)—依赖倒转原则

小谈设计模式&#xff08;6&#xff09;—依赖倒转原则 专栏介绍专栏地址专栏介绍 依赖倒转原则核心思想关键点分析abc 优缺点分析优点降低模块间的耦合度提高代码的可扩展性便于进行单元测试 缺点增加代码的复杂性需要额外的设计和开发工作 Java代码实现示例分析 总结 专栏介绍…

PDF文件压缩软件 PDF Squeezer mac中文版​软件特点

PDF Squeezer mac是一款macOS平台上的PDF文件压缩软件&#xff0c;可以帮助用户快速地压缩PDF文件&#xff0c;从而减小文件大小&#xff0c;使其更容易共享、存储和传输。PDF Squeezer使用先进的压缩算法&#xff0c;可以在不影响文件质量的情况下减小文件大小。 PDF Squeezer…

7、Docker网络

docker网络模式能干嘛&#xff1f; 容器间的互联和通信以及端口映射 容器IP变动时候可以通过服务名直接网络通信而不受到影响 docker 网络模式采用的是桥接模式&#xff0c;当我们创建了一个容器后docker网络就会帮我们创建一个虚拟网卡&#xff0c;这个虚拟网卡和我们的容器网…

【数据结构】队列和栈

大家中秋节快乐&#xff0c;玩了好几天没有学习&#xff0c;今天分享的是栈以及队列的相关知识&#xff0c;以及栈和队列相关的面试题 1.栈 1.1栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作…

UG\NX二次开发 通过点云生成曲面 UF_MODL_create_surf_from_cloud

文章作者:里海 来源网站:《里海NX二次开发3000例专栏》 感谢粉丝订阅 感谢 Rlgun 订阅本专栏,非常感谢。 简介 有网友想做一个通过点云生成曲面的程序,我们也试一下 效果 代码 #include "me.hpp" /*HEAD CREATE_SURF_FROM_CLOUD CCC UFUN */

安全学习_开发相关_Java第三方组件Log4jFastJSON及相关安全问题简介

文章目录 JNDI&#xff1a;(见图) Java-三方组件-Log4J&JNDILog4J&#xff1a;Log4j-组件安全复现使用Log4j Java-三方组件-FastJsonFastJson&#xff1a;Fastjson-组件安全复现对象转Json(带类型)Json转对象Fastjson漏洞复现&#xff08;大佬文章 JNDI&#xff1a;(见图) …

C# Task任务详解

文章目录 前言Task返回值无参返回有参返回 async和await返回值await搭配使用Main async改造 Task进阶Task线程取消测试用例超时设置 线程暂停和继续测试用例 多任务等最快多任务全等待 结论 前言 Task是对于Thread的封装&#xff0c;是极其优化的设计&#xff0c;更加方便了我…