「云托管」etcd快速入门-ag九游会j9官方网站

ag九游会j9官方网站-j9九游会登录入口首页新版
「云托管」etcd快速入门
什么是etcd?
etcd 集群是一个分布式系统,由多个节点相互通信构成整体对外服务。每个节点都存储了完整的数据,并且通过 raft 协议保证每个节点维护数据的一致性。在 raft 协议中,有一个强 leader,由它全权负责接收客户端的请求命令,并将命令作为日志条目复制给其他服务器,在确认安全后,将日志命令提交执行。当 leader 故障时,会选举产生一个新的 leader。在强 leader 的帮助下,raft 将一致性问题分解为三个问题:
leader election(领导人选举):raft 通过选举机制产生一个强 leader,由它负责接收客户端的请求命令,并将命令作为日志条目复制给其他服务器。当 leader 故障时,会选举产生一个新的 leader。领导人选举是 raft 协议中最关键的部分,它确保了系统中至少有一个节点成为 leader,并负责协调其他节点的工作。
log replication(日志复制):raft 通过将日志条目复制到所有节点来保证数据的一致性。当 leader 接收到客户端的请求命令时,它将命令作为一个新的日志条目写入自己的日志中,并将该条目复制到其他节点的日志中。随着时间的推移,所有节点的日志将逐渐变得相同。这个过程中还包括了日志的压缩等机制,以提高效率。
safety(安全性):raft 通过多个机制来保证数据的安全性,包括领导人选举、日志复制、心跳机制等。其中最重要的机制是日志复制和安全性约束。raft 要求所有节点在提交日志条目之前必须得到多数派节点的确认,从而保证了数据的安全性。
etcd软件架构图

http server:接受客户端发出的 api 请求以及其它 etcd 节点的同步与心跳信息请求。
store:用于处理 etcd 支持的各类功能的事务,包括数据索引、节点状态变更、监控与反馈、事件处理与执行等等,是 etcd 对用户提供的大多数 api 功能的具体实现。
raft:强一致性算法的具体实现,是 etcd 的核心算法。
wal(write ahead log,预写式日志):是 etcd 的数据存储方式,etcd 会在内存中储存所有数据的状态以及节点的索引,此外,etcd 还会通过 wal 进行持久化存储。wal 中,所有的数据提交前都会事先记录日志。
snapshot: 是为了防止数据过多而进行的状态快照;
entry: 表示存储的具体日志内容。
docker部署etcd集群
docker环境准备
docker环境准备可参见j9九游会登录入口首页新版官网:
镜像准备
etcd1
dockerfile
复制代码
#基于的基础镜像
from quay.io/coreos/etcd:v3.4.22
#环境变量配置
env etcd_name=etcd1 \ etcd_initial_cluster=etcd1=http://172.20.0.2:2380,etcd2=http://172.20.0.3:2380,etcd3=http://172.20.0.4:2380 \
etcd_initial_advertise_peer_urls=http://172.20.0.2:2380 \
etcd_advertise_client_urls=http://172.20.0.2:2379 \
etcd_listen_peer_urls=http://0.0.0.0:2380 \
etcd_listen_client_urls=http://0.0.0.0:2379
#运行启动命令
cmd ["sh", "-c", "/usr/local/bin/etcd"]
参数含义
etcd2
etcd3
镜像构建
分别将测试的三个etcd1、etcd2、etcd3全部构建完成
创建自定义网络
因为默认模式不支持手动指定容器ip,所以需要创建一个自定义网络。

启动容器
分别将etcd1、etcd2、etcd3全部启动
进入容器
进入容器内部,查看etcd集群信息等
查看是否集群创建成功,可以通过在容器内部执行下面命令查看:
#ip地址可以是集群任一节地址

etcd的高可用
etcd的高可用性是通过raft一致性算法来实现的,主要体现在leader选举和故障转移。
通过kill掉leader,查看是否自动选举leader,实现高可用。可通过容器id看到etcd1为leader,kill掉etcd1。

再次查看leader信息。

可看到自动选举etcd3为leader。
分布式存储
etcd是一个分布式键值存储系统,可以用于存储关键数据和服务发现。
首先通过以下命令可以写入数据

查询数据命令

可以看到可以成功写入数据,并且在etcd1写入数据后,集群节点都会同步此数据
restful api
在etcd中,restful api是通过http协议来实现的,可以使用http客户端来访问etcd api,也可以使用etcd提供的命令行工具、客户端库或者第三方工具来访问api。
可以通过以下命令新增 键名:test 键值:value
命令解析



查询、新增等操作都是通过base64编码或解码,如果直接查询就会出现下面报错:

通过cpt部署etcd集群
cpt安装
linux 上安装详情参见:
macos 上安装详情参见:
windows 上安装详情参见:
步骤一:登录云托管
在命令窗口中,执行 cpt login -a -k ,即可登录云托管。更多详情参见:
步骤二:服务部署
部署etcd服务
支持参数:
输入对应的环境名称与持久卷大小即可开始部署

查看到如下面截图内容即部署成功,就可以看到对应的etcd服务

步骤三:查看服务设置与集群状态
通过云托管 服务管理>服务列表>服务设置 查看通过cpt部署配置的环境变量

参数解释
通过云托管 服务管理>服务里表>部署版本 任意登录一个实例中

执行以下命令即可查看集群状态信息:

小程序云etcd的高可用
查询集群的leader信息,可以看到7-0实例为leader

查询pid,kill掉该进程,看是否会重新竞选leader


重新进入一个实例内部,再次查看leader信息,可以发现leader已经切换

小程序云分布式存储
任意登录一台实例中,通过以下命令写入数据

小程序云restful api
登录同环境下任意服务的实例中(需要封装curl命令)
curl命令安装:
首先通过 cat /etc/os-release 查看系统版本,根据系统版本下载命令
在实例中执行下面命令新增数据

进入etcd集群中查看数据已经新增成功

查看集群其他节点,数据已同步成功

avatarname
后发表内容
您的社区活跃积分 3,登录后即可领取  
网站地图