etcd基本介绍

1 etcd 介绍

etcd 是一种开源的分布式统一键值存储,用于分布式系统或计算机集群的共享配置、服务发现和的调度协调。 etcd 是 Kubernetes 的首要数据存储,也是容器编排的实际标准系统。

etcd 是 CoreOS 团队于 2013 年 6 月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。具有以下特点:

  • 简单:安装配置简单,而且提供了 HTTP API 进行交互,使用也很简单
  • 键值对存储:将数据存储在分层组织的目录中,如同在标准文件系统中
  • 监测变更:监测特定的键或目录以进行更改,并对值的更改做出反应
  • 安全:支持 SSL 证书验证
  • 快速:根据官方提供的 benchmark 数据,单实例支持每秒 2k+ 读操作
  • 可靠:采用 raft 算法,实现分布式系统数据的可用性和一致性

etcd 采用 Go 语言编写,它具有出色的跨平台支持,很小的二进制文件和强大的社区。 etcd 机器之间的通信通过 Raft 算法处理。 

要解决服务发现的问题,需要下面三大支柱,缺一不可。

etcd基本介绍_第1张图片 

  • 强一致性、高可用的服务存储目录。
    基于 Raft 算法的 etcd 天生就是这样一个强一致性、高可用的服务存储目录。
  • 一种注册服务和服务健康状况的机制。
    用户可以在 etcd 中注册服务,并且对注册的服务配置 key TTL,定时保持服务的心跳以达到监控健康状态的效果。
  • 一种查找和连接服务的机制。通过在 etcd 指定的主题下注册的服务也能在对应的主题下查找到。为了确保连接,我们可以在每个服务机器上都部署一个 Proxy 模式的 etcd,这样就可以确保访问 etcd 集群的服务都能够互相连接。

 etcd 

  • Raft:分布式一致性算法;
  • Node:Raft 状态机实例;
  • Member:管理着 Node 的 etcd 实例,为客户端请求提供服务;
  • Cluster:etcd 集群,由多个 Member 构成;
  • Peer:同一个 etcd 集群中的另一个 Member;
  • Client:客户端,向 etcd 发送 HTTP 请求;
  • WAL:持久化存储的日志格式,预写式日志;
  • Snapshot:etcd 数据快照,防止 WAL 文件过多而设置的快照。

下载之后 进行解压

[root@localhost local]# tar -zxvf etcd-v3.4.3-linux-amd64.tar.gz

 再进入etcd-v3.4.3-linux-amd64/

[root@localhost local]# cd etcd-v3.4.3-linux-amd64/

 这就是解压里面的文件

如果你要打开etcd就直接运行./etcd  但是每次运行它不能关闭这个窗口太麻烦了,那我们怎么办?

答:将etcd和etcdctl二进制文件复制到/usr/local/bin

cp etcd etcdctl /usr/local/bin

 查看etcd版本

etcd --version

 我们没有指定它在哪个文件 但是它自己会自动去找文件

 

 输入etcd 即可启动一个单节点的etcd服务

创建一个etcd服务

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

 [root@localhost /]# mkdir -p /var/lib/etcd/ && mkdir -p /etc/etcd/

创建etcd

[root@localhost /]# vim /etc/etcd/etcd.conf

  etcd基本介绍_第2张图片

# 节点名称
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

 刷新一下

systemctl daemon-reload

etcd基本介绍_第3张图片就不要使用etcd什么的 而是使用systemctl

帮助命令

etcdctl -h

put放入数据

etcdctl put /testdir/testkey "Hello world"

--sort 对结果进行排序

--consistent 将请求发给主节点

del删除数据

清空数据

etcdctl del / --prefix

删除所有

etcdctl del /test --prefix

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

etcdctl watch key1

 

你可能感兴趣的:(etcd,数据库)