北京建设厅网站查询,网站制作生成器,青岛最新通知,鄂州招聘网文章目录 华为云云耀云服务器L实例评测#xff5c;华为云上安装etcd一、什么是etcd官方硬件建议 二、华为云主机准备三、etcd安装1. 安装预构建的二进制文件2. 从源代码构建 四、etcd服务注册与发现1. 配置etcd2. 使用systemctl 管理启动etcd服务3. 注册服务4. 发现服务 五、其… 文章目录 华为云云耀云服务器L实例评测华为云上安装etcd一、什么是etcd官方硬件建议 二、华为云主机准备三、etcd安装1. 安装预构建的二进制文件2. 从源代码构建 四、etcd服务注册与发现1. 配置etcd2. 使用systemctl 管理启动etcd服务3. 注册服务4. 发现服务 五、其他参考 华为云云耀云服务器L实例评测华为云上安装etcd
一、什么是etcd
官网https://etcd.io/ githubhttps://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_VERv3.5.0# choose either URL
GOOGLE_URLhttps://storage.googleapis.com/etcd
GITHUB_URLhttps://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 --version2. 从源代码构建
如果您有Go 版本 1.16您可以按照以下步骤从源代码构建 etcd
将 etcd 存储库下载为 zip 文件并解压缩或使用以下命令克隆存储库。
$ git clone -b v3.5.0 https://github.com/etcd-io/etcd.git要从 构建mainHEAD请省略该-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中同时指定一个TTLTime 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-node1http://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.key2. 使用systemctl 管理启动etcd服务
[Unit]
Descriptionetcd key-value store
Documentationhttps://etcd.io/docs/
Afternetwork.target[Service]
CPUAccountingtrue
MemoryAccountingtrue
CPUQuota200%
MemoryLimit2G
Typenotify
ExecStart/opt/lighthouse/server/env/etcd/etcd --config-file/opt/lighthouse/server/conf/etcd/etcd.conf.yml
Restarton-failure
LimitNOFILE65536[Install]
WantedBymulti-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 etcd3. 注册服务
服务提供者在启动时需要将自己的服务实例信息写入到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