华为云云耀云服务器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.xdnf.cn/news/142005.html

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

相关文章

ISE_ChipScope Pro的使用

1.ChipScope Pro Core Inserter 使用流程 在之前以及编译好的流水灯实验上进行学习 ChipScope的使用。 一、新建一个ChipScope 核 点击Next,然后在下一个框中选择 Finish,你就会在项目菜单中看到有XX.cdc核文件。 二、对核文件进行设置 右键“Synthesize – XST” …

最快的包管理器--pnpm创建vue项目完整步骤

1.用npm全局安装pnpm npm install -g pnpm 2.在要创建vue项目的包下进入cmd,输入: pnpm create vue 3.输入项目名字,选择Router,Pinia,ESLint,Prettier之后点确定 4.cd到创建好的项目 ,安装依赖 cd .\刚创建好的项目名称\ p…

怎样快速打开github.com

1访问这个网站很慢是因为有DNS污染,被一些别有用心的人搞了鬼了, 2还有一个重要原因是不同的DNS服务器解析的速度不一样。 1 建议设置dns地址为114.114.114.114.我觉得假设一个县城如果有一个DNS服务器的话,这个服务器很可能不会存储…

[linux]服务器挂代理提升下载权重速度

写在前面 这里主要以huggingface下载权重为例,介绍如何在linux中部署代理提升下载速度 实际操作 第一步:服务器安装clash文件 https://github.com/Dreamacro/clash/releases#下载clash链接第二步:使用自己的配置文件 将config.yaml替换掉…

前端项目练习(练习-003-webpack-01)

学习webpack前,首先,创建一个web-003项目,内容和web-002一样。(注意将package.json中的name改为web-003) 想想,我们开发Java 的时候,Maven帮我们做的主要是编译,打包等等内容。开发前…

Spring Cloud Alibaba Gateway 简单使用

文章目录 Spring Cloud Alibaba Gateway1.Gateway简介2. 流量网关和服务网关的区别3. Spring Cloud Gateway 网关的搭建3.1 Spring Cloud Gateway 配置项的说明3.2 依赖导入3.3 配置文件 Spring Cloud Alibaba Gateway 1.Gateway简介 Spring Cloud Gateway是一个基于Spring F…

计算机竞赛 深度学习乳腺癌分类

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度,召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

构建自己的物料解决方案——构建物料库,实现前端设计

01: 数据拦截简化数据获取流程 /** * 响应拦截器: * 服务端返回数据之后,前端 .then 之前被调用 */ service.interceptors.response.use((response) > {const { success, message, data } response.dataif (success) {return data}// TODO&#xff…

法规标准-UN R48标准解读

UN R48是做什么的? UN R48全名为关于安装照明和灯光标志装置的车辆认证的统一规定,主要描述了对各类灯具的布置要求及性能要求;其中涉及自动驾驶功能的仅有6.25章节【后方碰撞预警信号】,因此本文仅对此章节进行解读 功能要求 …

Python中的设计模式 -- 单例

迷途小书童 读完需要 2分钟 速读仅需 1 分钟 当我们谈到单例模式时,可以想象一个非常特殊的餐厅,这个餐厅只有一个桌子,无论多少人来用餐,都只能坐在这个桌子上。这个桌子就是餐厅的单例,它保证了整个餐厅中只有一个桌…

Element登录+注册

Element登录注册 1.1 定义1.3 完成用户注册登录界面搭建1.3.3 下载js依赖1.3.4 创建用户登录注册组件1.3.5 配置路由 二、数据交互2.1 数据导入2.3 安装引用相关模块 2.3.1 安装相关模块2.3.2 引用相关模块2.4 axios之get请求2.5 axios之post请求 四、注册 1.1 定义 ElementUI是…

bash中执行比较的几种方法

bash 脚本中的 test 命令用于检查表达式的有效性,检查命令或表达式为 true 或者 false。此外,它还可以用于检查文件的类型和权限。 如果命令或表达式有效,则 test 命令返回0,否则返回1。 使用 test 命令 test 命令的基本语法如…

腾讯mini项目-【指标监控服务重构】2023-08-29

今日已办 Collector 指标聚合 由于没有找到 Prometheus 官方提供的可以聚合指定时间区间内的聚合函数,所以自己对接Prometheus的api来聚合指定容器的cpu_avg、cpu_99th、mem_avg 实现成功后对接小组成员测试完提供的时间序列和相关容器,将数据记录在表格…

Qt/C++音视频开发56-udp推流和拉流/组播和单播推流

一、前言 之前已经实现了rtsp/rtmp推流,rtsp/rtmp/hls/flv/ws-flv/webrtc等拉流,这种一般都需要依赖一个独立的流媒体服务程序,有没有一种更便捷的方式不需要这种依赖,然后又能实现推拉流呢,当然有的那就是udpp推流&a…

前端项目练习(练习-004-webpack-02)

学习前,首先,创建一个web-004项目,内容和web-003一样。(注意将package.json中的name改为web-004) 前面的例子,成功将js文件打包到了dist中,但是我们有三个文件,css,js和h…

利用C++开发一个迷你的英文单词录入和测试小程序-增强功能

小玩具基本完成之后,在日常工作中,记录一些单词,然后定时再复习下,还真的有那么一点点用(毕竟自己做的小玩具)。 在使用过程中,遇到不认识的单词,总去翻译软件翻译,然后…

使用matlab产生二维动态曲线视频文件具体举例

使用matlab产生二维动态曲线视频文件举例 在进行有些函数变化过程时候,需要用到直观的动态显示,本博文将举例说明利用Matlab编程进行二维动态曲线的生成视频文件。 一、问题描述 利用matlab编程实现 y 1 s i n ( t ) , y 2 c o s ( t ) , y 3 s i …

安卓生成公钥和md5签名

安卓公钥和md5证书签名 大家好,最近需要备案app,用到了公钥和md5,MD5签名我倒是知道,然而对于公钥却一下子不知道了, 现在我讲一下我的流程。 首先是md5证书签名的查看, 生成了apk和签名.jks后&…

3D设计软件Rhinoceros 6 mac 犀牛6中文版功能特征

Rhinoceros Mac中文版是一款3D设计软件“犀牛”,在众多三维建模软件中,Rhinoceros mac因为其体积小、功能强大、对硬件要求低而广受欢迎,对于专业的3D设计人员来说它是一款非常不错的3D建模软件,Rhinoceros Mac中文版能轻易整合3D…

tensorflow-卷积神经网络-图像分类入门demo

猫狗识别 数据预处理:图像数据处理,准备训练和验证数据集卷积网络模型:构建网络架构过拟合问题:观察训练和验证效果,针对过拟合问题提出解决方法数据增强:图像数据增强方法与效果迁移学习:深度…