etcd 的安装使用

etcd简介

etcd是一个开源的分布式键值存储系统,主要用于共享配置和服务发现,在分布式系统中扮演着重要的角色。以下是其详细简介:

特点

  • 简单易用:使用Go语言编写,部署简单,提供了gRPC和HTTP/JSON接口,方便不同语言的客户端进行交互。
  • 分布式:支持自动选举领导者,实现数据的分布式存储和复制,确保数据在多个节点上的一致性和高可用性。
  • 强一致性:基于Raft一致性算法,保证数据在分布式环境下的强一致性,即所有节点都能看到相同的数据状态。
  • 键值存储:提供了简单的键值对存储方式,支持对键值对的原子操作,如设置、获取、删除等。
  • 监控与健康检查:可以通过HTTP接口提供丰富的监控指标,方便运维人员了解系统的运行状态,同时支持健康检查机制,及时发现节点故障。

应用场景

  • 服务发现:微服务架构中,etcd可以用于存储服务的地址、端口等信息,服务消费者可以通过查询etcd来发现可用的服务实例。
  • 配置管理:集中存储应用程序的配置信息,当配置发生变化时,etcd可以实时通知应用程序,实现配置的动态更新。
  • 分布式锁:利用etcd的原子操作和一致性特性,可以实现分布式锁,确保在分布式环境中同一时间只有一个客户端能够获取锁,避免资源竞争和数据冲突。
  • 分布式队列:可以用于实现分布式队列,多个客户端可以将任务放入队列中,其他客户端可以从队列中获取任务进行处理,实现任务的异步处理和分布式调度。

工作原理

  • etcd采用Raft算法来实现分布式一致性。Raft算法将集群中的节点分为领导者(Leader)、跟随者(Follower)和候选者(Candidate)三种角色。
  • 领导者负责处理客户端的写请求,并将数据复制到其他节点。跟随者接收领导者发送的日志条目,并将其应用到本地状态机。
  • 当领导者出现故障时,候选者会发起选举,通过投票机制选出新的领导者,保证集群的正常运行。

etcd以其简单易用、分布式、强一致性等特点,成为了分布式系统中不可或缺的组件,为各种分布式应用提供了可靠的基础支持。

安装部署

yum 安装

yum --showduplicates list etcd

yum install etcd-3.3.11-2.el7.centos -y

修改配置

cat /etc/etcd/etcd.conf |

[root@localhost lys]# cat /etc/etcd/etcd.conf |grep http
#ETCD_LISTEN_PEER_URLS="http://localhost:2380"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
#ETCD_INITIAL_ADVERTISE_PEER_URLS="http://localhost:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://0.0.0.0:2379"
#ETCD_INITIAL_CLUSTER="default=http://localhost:2380"

启动

[root@localhost lys]#  systemctl start etcd
[root@localhost lys]#  systemctl status etcd
● etcd.service - Etcd Server
   Loaded: loaded (/usr/lib/systemd/system/etcd.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2025-04-14 14:44:28 CST; 5s ago
 Main PID: 43667 (etcd)
    Tasks: 21
   Memory: 15.9M
   CGroup: /system.slice/etcd.service
           └─43667 /usr/bin/etcd --name=default --data-dir=/var/lib/etcd/default.etcd --listen-client-urls=http://0.0.0.0:2379

Apr 14 14:44:28 localhost.localdomain etcd[43667]: 8e9e05c52164694d received MsgVoteResp from 8e9e05c52164694d at term 2
Apr 14 14:44:28 localhost.localdomain etcd[43667]: 8e9e05c52164694d became leader at term 2
Apr 14 14:44:28 localhost.localdomain etcd[43667]: raft.node: 8e9e05c52164694d elected leader 8e9e05c52164694d at term 2
Apr 14 14:44:28 localhost.localdomain etcd[43667]: setting up the initial cluster version to 3.3
Apr 14 14:44:28 localhost.localdomain etcd[43667]: set the initial cluster version to 3.3
Apr 14 14:44:28 localhost.localdomain etcd[43667]: enabled capabilities for version 3.3
Apr 14 14:44:28 localhost.localdomain etcd[43667]: ready to serve client requests
Apr 14 14:44:28 localhost.localdomain etcd[43667]: published {Name:default ClientURLs:[http://0.0.0.0:2379]} to cluster cdf818194e3a8c32
Apr 14 14:44:28 localhost.localdomain etcd[43667]: serving insecure client requests on [::]:2379, this is strongly discouraged!
Apr 14 14:44:28 localhost.localdomain systemd[1]: Started Etcd Server.

操作

务必先执行
export ETCDCTL_API=3
否则报错:No help topic for ‘put’


[root@localhost lys]# etcdctl put mykey "Hello, etcd"
OK


[root@localhost lys]# etcdctl get mykey
mykey
Hello, etcd


[root@localhost lys]# etcdctl del mykey
1





[root@localhost lys]# etcdctl put mykey1 "Hello, etcd"
OK
[root@localhost lys]# etcdctl put mykey2 "Hello, etcd"
OK
[root@localhost lys]# etcdctl put mykey "Hello, etcd"
OK
[root@localhost lys]# etcdctl get --prefix my
mykey
Hello, etcd
mykey1
Hello, etcd
mykey2
Hello, etcd

参考

https://etcd.io/docs/v3.5/demo/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuyunshengsir

微信:lys20191020

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值