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

news2024/11/25 7:12:17

文章目录

  • 华为云云耀云服务器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-download

ETCD_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.gz

curl -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-data


sudo rm -rf /etc/systemd/system/etcd.service
sudo cp $SERVER_CONF_PATH/etcd.service /etc/systemd/system/etcd.service

sudo 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.coloradmin.cn/o/1040630.html

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

相关文章

python+opencv神经网络风格迁移--你也可以拥有梵高一样的画作

梵高画作 什么是神经网络的风格迁移,简单来件就是输入1张照片(自己的照片),输出具备另外一张照片(例子梵高画作)风格的图片,同时保留原本自己图片的元素,如下图片表明了神经网络风格迁移的过程,当然你也可以使用自己的神经网络训练自己的模型,本期教程利用了已经训练…

macOS使用官方安装包安装python

新手程序员可能想知道如何在 Mac 上正确安装 Python,这里介绍在 macOS 上安装 Python 的方法。 操作步骤 1.从 Python 官方网站 (python.org) 下载最新的 Python 版本. 单击 macOS 链接并选择最新的 Python 版本。 2.下载完成后,双击包开始安装Python…

使用 Ruby 语言来解析开放文档格式 OOXML 文件

在这篇文章中,我们将了解一个开发团队如何解决他们在应用程序中解析数据时遇到的问题。 为了测试 ONLYOFFICE 文档编辑器,我们用Ruby语言开发编写了个docx、xlsx、pptx文件解析器程序,它是免费开源的,被我们放在GitHub和RubyGems…

python运算函数

简 python输入输出函数input() :用户用于读取键盘输入的函数,返回值为“string”类型 运算函数abs(x) :x的绝对值int(x) :将x转换成整型(截掉小数部分)float(x):浮点数divmod(x,y):返回(x//y,x%y)complex(re,im):返回一…

A股风格因子看板 (2023.09 第08期)

要点预告:10月,天软课堂将添加新主题--天软超高频行情数据。针对市场上高频行情数据处理业务的相关痛点,直观的在线演示如何通过天软高频数仓及高性能计算能力,将其逐个击破,期待各位老师的参会。请持续关注天软课堂动态&#xff…

企业架构LNMP学习笔记60

Tomcat企业常见使用方法&#xff1b; 1&#xff09;简单代码测试&#xff1a; 将两个jsp文件上传到ROOT目录下。 查看下这个jsp代码&#xff1a; test.jsp <html> <head><title>Hello World</title> <% page language"java" contentT…

短视频矩阵系统,短视频矩阵源码技术

1、抖音开放平台申请账号&#xff0c;快手平台申请账号&#xff1b;阿里云混剪接口。 2、系统总台支持OEM代理&#xff0c;可以按点数管理。 3、代理功能。包括是否允许再次开二级代理、是否允许OEM等。 4、可支持一条龙搭建服务&#xff0c;抖音平台开放平台代申请等 开发…

《学术小白学习之路》论文常见方法:Doc2vec-句向量模型实现

1. 数据 用于文献的摘要的相似度的计算 ## 导包 import pandas as pd import jieba import gensim from gensim.models import Doc2Vec from gensim.models.doc2vec import TaggedDocument再定义停用词典,用于分词,还可以自己定义一个分词词典 ## 读入数据 papers = pd.&l…

JVS规则引擎,打造智能自动化决策的利器

在日常的项目中&#xff0c;实时数据处理和自动化决策是智能化业务、灵活化配置的关键能力。为了满足这一需求&#xff0c;JVS规则引擎应运而生&#xff0c;它是一种高效的低代码/零代码平台&#xff0c;能够帮助企业快速构建各种应用场景&#xff0c;实现自动化、智能化决策的…

iOS 17隐私设置指南

最近把手机升级到iOS 17了&#xff0c;升级后的设置里多了很多以前没注意到的指南&#xff0c;我发现特别是有关隐私相关配置的很多我没有启用。 那么&#xff0c;我就来扒一扒iOS中和隐私相关的配置&#xff0c;这些配置可能是iOS 17以后加入的&#xff0c;也可能是以前就有&a…

spring一个项目多个模块聚合打包问题解决方案

文章目录 1.问题描述&#xff1a;2.解决方案一、创建聚合父工程二、创建子模块&#xff08;module&#xff09;三、编写子模块代码1.模块1&#xff08;demo-one&#xff09;2.模块2&#xff08;demo-tow&#xff09; 四、创建聚合模块 &#xff08;demo-starter&#xff09;1. …

Servlet开发-通过代码案例熟悉HttpServletRequest类

关于Servlet开发的流程推荐看servlet开发-通过Tomcat部署一个简单的webapp Servlet开发与idea集成的插件安装推荐看idea集成tomcat&#xff08;Smart Tomcate插件安装&#xff09; postman&#xff08;第三方创建HTTP请求工具&#xff09;的安装推荐看创建HTTP请求的几种方式…

AcWing算法提高课-4.3.1最大数

宣传一下 算法提高课整理 CSDN个人主页&#xff1a;更好的阅读体验 原题链接 题目描述 给定一个正整数数列 a 1 , a 2 , … , a n a_1,a_2,…,a_n a1​,a2​,…,an​&#xff0c;每一个数都在 0 ∼ p − 1 0 \sim p-1 0∼p−1 之间。 可以对这列数进行两种操作&#xff1…

若依系统的小程序调试时,不出现验证码

一、&#xff08;这里我用的是夜神模拟器&#xff09;调试网络 1.如果是网线、需要进行ipconfig 查看IP 然后在 点击修改网络 将你的本机的ip地址写到代理服务器主机名和对以下网址不适用代理&#xff0c;代理服务器端口 自己写个就行 &#xff08;连接无线网络&#xff0c;…

苹果电脑Git客户端 SourceTree for Mac中文

SourceTree是一款图形化Git和Mercurial版本控制工具&#xff0c;旨在为开发人员提供简单且直观的界面来管理代码库和版本控制操作。下面是SourceTree的主要特点和功能&#xff1a; 图形化界面&#xff1a;SourceTree提供了直观的用户界面&#xff0c;使用户能够轻松地查看和管理…

旅行季《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书想象和世界一样宽广

旅行季《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书想象和世界一样宽广

Redis 集群搭建教程

一、介绍 Redis 集群有着高可用、易扩展、更好的性能等优势&#xff0c;本文主要是实战搭建一个三主三从的 Redis 集群。 正常来说&#xff0c;搭建 Redis 集群需要 6 台服务器。为了简单一点&#xff0c;本文通过一台服务器&#xff0c;6 个端口&#xff0c;搭建一个 Redis …

在微信公众平台 设置小程序域名白名单

首先 我们打开微信公众平台 微信公众平台 然后扫描二维码 登录自己需要操作的小程序 这里特别声明一下此操作必须是企业账号创建的小程序 然后 在左侧菜单中选择开发下的 开发管理 然后在这里选择 开发设置 然后 下拉找到 服务器域名 点击 修改 按钮 然后会需要你扫个二维…

软考中级哪一门比较好过?

如果你不确定要备考中级考试中的哪一科目&#xff0c;那么我建议你备考系统集成项目管理工程师。因为系统集成相对于其他中级考试更容易一些&#xff0c;它更偏文科&#xff0c;需要多背记多刷题。这也意味着你可以通过自学来备考&#xff0c;而且难度并不大。只要你愿意下功夫…

大学宿舍IP一键视频对讲

大学宿舍ip一键视频对讲 大学宿舍一键视频对讲是指在大学宿舍内安装一套视频对讲系统&#xff0c;通过一键操作&#xff0c;实现与宿舍内其他人进行视频通话的功能。 该系统通常包括以下组成部分&#xff1a; 1. 室内终端&#xff1a;每个宿舍内安装一个室内终端&#xff0c;…