华为云云耀云服务器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等基准测试工具。请阅读此处的示例。
二、华为云主机准备
-
购买华为云主机,本次评测系统如下:
注意:本文我们采用2C4G环境测试,非2C2G~
-
创建新的安全组,开发所有端口方便测试
更改安全组,如下,选择我们的开发所有端口的这个安全组:
-
开发所有端口后,我们ssh登录上华为云主机即可~
三、etcd安装
官方安装文档:https://etcd.io/docs/v3.5/install/
官方快速开始文档:
https://etcd.io/docs/v3.5/quickstart/
etcd在生产环境中一般推荐集群方式部署,三节点集群可以实现高可用,单节点存在宕机风险。本文定位为入门,华为云云耀云服务器L实例测试验证安装,主要讲讲单节点安装和基本使用。
1. 安装预构建的二进制文件
安装 etcd 最简单的方法是使用预构建的二进制文件:
- 从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
- etcd 配置项解释
https://etcd.io/docs/v3.5/op-guide/configuration/
这篇文档详细解释了 etcd 的各种配置参数。 - etcd 生产部署建议
https://etcd.io/docs/v3.5/op-guide/production/
介绍了在生产环境部署 etcd 需要注意的安全、性能等方面的设置。 - 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
相关文章:

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

RDLC动态设置整个表格是否显示
最近有个新的需求:使用RDLC打印,当数据库中能查出数据时,显示表格。没有数据时,不显示整个表格。 1.首先在RDLC中选中表格的任意一列,右键Tablix属性 2.Tablix属性中选中可见性》选中基于表达式显示或隐藏(E)并点开右…...

xp 系统 安装 python 2.7 ide pip
1 下载python http://www.python.org/ftp/python/ python-2.7.2.msi 安装完需要设置环境变量 2 下载 setuptools setuptools-0.6c11.win32-py2.7.exe https://pypi.tuna.tsinghua.edu.cn/simple/setuptools/ 3 下载 pip ,python 2.7 最高支持 pip 20.3.4 https:…...

RabbitMQ生产故障问题分析
1. 问题引发 由某个服务BI-collector-xx队列出现阻塞,影响很整个rabbitMQ集群服务不可用,多个应用MQ生产者服务出现假死状态,系统影响面较广,业务影响很大。当时为了应急处理,恢复系统可用,运维相对粗暴的把…...

12大常用自动化测试工具,请记得转发收藏!
常用自动化测试工具 1、Appium AppUI自动化测试 Appium 是一个移动端自动化测试开源工具,支持iOS 和Android 平台,支持Python、Java 等语言,即同一套Java 或Python 脚本可以同时运行在iOS 和Android平台,Appium 是一个C/S 架构&…...

Android Studio 的aapt2.exe在哪个目录下
一般在:C:\Users\admin\AppData\Local\Android\Sdk\build-tools\30.0.2(不一定是30.0.2,这个得看你的版本) 怎么找: 1.打开Android studio...

【pytest】conftest.py使用
1. 创建test_project 目录 test_project/sub/test_sub.py def test_baidu(test_url):print(fsub {test_url}) test_project/conftest.py 设置钩子函数 只对当前目录 和子目录起作用 import pytest #设置测试钩子函数 pytest.fixture() def test_url():return "http…...

SpringBoot集成Prometheus实现监控
SpringBoot配置Prometheus pom.xml 引入监控以及prometheus依赖 <dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId></dependency><dependency><groupId>org.springfram…...

【操作系统笔记十】缓存一致性
CPU 核心之间数据如何传播 高速缓存中的值被修改了,那么怎么同步到内存中呢? ① 写直达(Write-Through)② 写回(Write-Back) 写直达(Write-Through) 简单,但是很慢&am…...

lS1028 + 六网口TSN 硬交换+QNX/Linux实时系统解决方案在轨道交通系统的应用
lS1028 六网口TSN 硬交换QNX/Linux实时系统解决方案在轨道交通系统的应用 以下是在轨道交通应用的实物: CPUNXP LS1028A架构双核Cortex-A72主频1.5GHzRAM2GB DDR4ROM8GB eMMCOSUbuntu20.04供电DC 12V工作温度-40℃~ 80℃ 功能数量参数Display Port≤1路支持DP1.3…...
实现字符串反转函数
实现字符串反转 #include <stdio.h> #include <string.h>void reverse(char *str) {int len = strlen(str);...

抽检监测实施
声明 本文是学习GB-T 42893-2023 电子商务交易产品质量监测实施指南. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件提供了开展电子商务交易的有形产品质量监测的总则,监测准备、监测实施、监测效果评价 与反馈等过程指导…...
C++中的静态库与动态库
文章目录 静态库构建静态库 动态库构建动态库 它们的不同参考文章 单独提这个 库,我想我们在coding过程中,可能也会知道一两个词,如 标准库、xx库等。库作为一组已编写好、组织好的、可复用的资源接口,可以被用于其他程序。很不…...
UGUI 绘制线段
描述 点击鼠标左键在屏幕上绘制线段 准备 VertexHelper 网格绘制工具类向量、叉乘RectTransformUtility.ScreenPointToLocalPointInRectangleSetVerticesDirtyOnPopulateMesh 思路 鼠标按下,记录线段起点;鼠标持续按下,记录鼠标当前帧的…...
详细学习Mybatis(2)
详细学习Mybatis(2) 一、Mybatis核心配置文件详细解释1.1 environment(环境)1.2 事务管理器(transactionManager)1.3、dataSource(数据源)1.4、properties1.5、mapper 一、Mybatis核…...

LinkedList与链表
目录 一、Arraylist的缺陷 二、链表 2.1 链表的概念和结构 2.2 链表的实现 三、链表面试题 3.1 删除链表中所有值为val的节点 3.2 反转一个单链表 3.3 链表的中间节点 3.4 将有序链表合并 3.5 输出倒数第k个节点 3.6 链表分割 3.7 链表的回文结构 3.8 找两个链表的公共节…...

纳米软件芯片自动化测试系统测试电源芯片稳压反馈的方法
在一些电源芯片或稳压芯片中,通常内部都会有稳压反馈电路,这些电路可以将输入电压通过内部调整后输出一个稳定的输出电压,以满足电路中的稳定电源需求。也就是说芯片的稳压反馈就是内部稳压反馈电路中的电压。 芯片稳压反馈原理介绍 稳压反馈…...

微信小程序之项目基本结构、页面的基础及宿主环境
文章目录 前言一、基本组成结构基本组成小程序页面的组成部分JSON配置文件作用 二、页面基础pagesWXML和HTML的区别WXSS和CSS的区别小程序中js文件分类 三、小程序宿主环境总结 前言 微信小程序的项目基本结构、页面的基础及宿主环境 一、基本组成结构 基本组成 新建一个微信…...

C/C++鸡尾酒疗法 2023年5月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
目录 C/C鸡尾酒疗法 一、题目要求 1、编程实现 2、输入输出 二、解题思路 1、案例分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 C/C鸡尾酒疗法 2020年6月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 鸡尾酒疗法,原指“高效抗…...
人工智能及大模型简介
一、人工智能介绍 人工智能(Artificial Intelligence),英文缩写为AI。它试图赋予机器智能的能力,使它们能够像人类一样思考、学习和做出决策。它的核心要素是数据、模型和算力。 数据是人工智能的基础,数据的质量和…...

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

关于nvm与node.js
1 安装nvm 安装过程中手动修改 nvm的安装路径, 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解,但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后,通常在该文件中会出现以下配置&…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
tomcat入门
1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效,稳定,易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

WPF八大法则:告别模态窗口卡顿
⚙️ 核心问题:阻塞式模态窗口的缺陷 原始代码中ShowDialog()会阻塞UI线程,导致后续逻辑无法执行: var result modalWindow.ShowDialog(); // 线程阻塞 ProcessResult(result); // 必须等待窗口关闭根本问题:…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...

车载诊断架构 --- ZEVonUDS(J1979-3)简介第一篇
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是…...