微服务自动化etcd的入门

目录

基本介绍

Raft选举算法

Etcd关键词 

安装

创建一个etcd服务

etcd的基本使用

1.帮助命令

2.put 放入数据

3.del 删除数据

4.watch 监测一个键值的变化,一旦键值发生更新,就会输出最新的值并退出


基本介绍

etcd 是一个高度一致的分布式键值(key-value)存储,它提供了一种可靠的方式来存储需要由分布式系统或机器集群访问的数据。它可以优雅地处理网络分区期间的领导者选举

Raft选举算法

Raft 算法是典型的多数派投票选举算法,其选举机制与我们日常生活中的民主投票机制类似,核心思想是“少数服从多数”。 也就是说,Raft 算法中,获得投票最多的节点成为主节点。

采用 Raft 算法选举,集群节点的角色有 3 种:

  1)Leader: 即主节点,同一时刻只有一个 Leader,负责协调和管理其他节点; 

  2)Candidate: 即候选者,每一个节点都可以成为 Candidate,节点在该角色下才可以被选为新的Leader;

  3)Follower: Leader 的跟随者,不可以发起选举。

Raft 选举的流程,可以分为以下几步:

1. 初始化时,所有节点均为 Follower 状态。

2. 开始选主时,所有节点的状态由 Follower 转化为 Candidate,并向其他节点发送选举请求。

3. 其他节点根据接收到的选举请求的先后顺序,回复是否同意成为主。这里需要注意的是,在每一轮选举中,一个节点只能投出一张票。

4. 若发起选举请求的节点获得超过一半的投票,则成为主节点,其状态转化为 Leader,其他节点的状态则由 Candidate 降为 Follower。Leader 节点与 Follower 节点之间会定期发送 心跳包,以检测主节点是否活着。

5. 当 Leader 节点的任期到了,即发现其他服务器开始下一轮选主周期时,Leader 节点的状态由 Leader 降级为 Follower,进入新一轮选主。

每一轮选举,每个节点只能投一次票。 这种选举就类似人大代表选举,正常情况下每个人大代表都有一定的任期,任期到后会触发重新选举,且投票者只能将自己手里唯一的票投给其中一个候选者。 对应到 Raft 算法中,选主是周期进行的,包括选主和任值两个时间段,选主阶段对应投票阶段,任值阶段对应节点成为主之后的任期。 但也有例外的时候,如果主节点故障,会立马发起选举,重新选出一个主节点。

Etcd关键词 

  • Raft:etcd所采用的保证分布式系统强一致性的算法。
  • Node(节点):一个Raft状态机实例。
  • Member(成员): 一个etcd实例。它管理着一个Node,并且可以为客户端请求提供服务。
  • Cluster(集群):由多个Member构成可以协同工作的etcd集群。
  • Peer(伙伴):对同一个etcd集群中另外一个Member的称呼。
  • Client(客户端): 向etcd集群发送HTTP请求的客户端。
  • WAL:预写式日志,etcd用于持久化存储的日志格式。
  • snapshot:etcd防止WAL文件过多而设置的快照,存储etcd数据状态。
  • Proxy:etcd的一种模式,为etcd集群提供反向代理服务。
  • Leader(领导者):Raft算法中通过竞选而产生的处理所有数据提交的节点。
  • Follower(跟随者):竞选失败的节点作为Raft中的从属节点,为算法提供强一致性保证。
  • Candidate:当Follower超过一定时间接收不到Leader的心跳时转变为Candidate开始Leader竞选。
  • Term:某个节点成为Leader到下一次竞选开始的时间周期,称为一个Term。
  • Index:数据项编号。Raft中通过Term和Index来定位数据。

大概意思就是当跟随者超过一定时间没有接受到主节点的心跳,就会转换为候选者,然后开始竞选主节点,而当主节点竞选出来,剩下的候选者则统统转换为跟随者

安装

下载etcd

注:可以在迅雷等软件中下载,在官网直接下载太慢了

https://github.com/etcd-io/etcd/releases/download/v3.4.3/etcd-v3.4.3-linux-amd64.tar.gz

上传etcd安装包

tar -zxvf etcd-v3.4.3-linux-amd64.tar.gz

进入etcd 文件

切换至etcd根目录,运行查看命令ls,里面会有一些文档和2个二进制文件etcd和etcdctl。etcd是server端,etcdctl是客户端 。

cd etcd-v3.4.3-linux-amd64 && ls

etcdetcdctl二进制文件复制到/usr/local/bin目录这样系统中可以直接调用etcd/etcdctl这两个程序

cp etcd etcdctl /usr/local/bin

查看etcd 版本

etcd --version

创建一个etcd服务

建立etcd相关目录(即数据文件和配置文件的保存位置)

mkdir -p /var/lib/etcd/ && mkdir -p /etc/etcd/

创建etcd配置文件

vim /etc/etcd/etcd.conf

# 节点名称
ETCD_NAME="etcd0"
# 指定数据文件存放位置
ETCD_DATA_DIR="/var/lib/etcd/"

 创建systemd配置文件

vim /etc/systemd/system/etcd.service

[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
User=root
Type=notify
WorkingDirectory=/var/lib/etcd/
## 根据实际情况修改EnvironmentFile和ExecStart这两个参数值
## 1.EnvironmentFile即配置文件的位置,注意“-”不能少
EnvironmentFile=-/etc/etcd/etcd.conf
## 2.ExecStart即etcd启动程序位置
ExecStart=/usr/local/bin/etcd
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

启动/停止/查看etcd服务

刷新系统缓存    systemctl daemon-reload  

开机自启     systemctl enable etcd

启动etcd     systemctl start etcd

查看状态      systemctl status etcd

etcd的基本使用

1.帮助命令

etcdctl -h

2.put 放入数据

etcdctl put /testdir/testkey "Hello world"

--sort 对结果进行排序

--consistent 将请求发给主节点,保证获取内容的一致性。

3.del 删除数据

清空数据 etcdctl del / --prefix

删除所有/test前缀的节点 etcdctl del /test --prefix

4.watch 监测一个键值的变化,一旦键值发生更新,就会输出最新的值并退出

etcdctl watch key1

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值