etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。

etcd作为服务发现系统,有以下的特点:

  • 简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单
  • 安全:支持SSL证书验证
  • 快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作
  • 可靠:采用raft算法,实现分布式系统数据的可用性和一致性

etcd项目地址:https://github.com/coreos/etcd/

配置参考:https://www.cnblogs.com/hatlonely/p/11945491.html

集群配置:https://blog.csdn.net/god_wot/article/details/77854093

etcd安装

etcd在生产环境中一般推荐集群方式部署。本文定位为入门,主要讲讲单节点安装和基本使用。

etcd目前默认使用2379端口提供HTTP API服务,2380端口和peer通信(这两个端口已经被IANA官方预留给etcd);在之前的版本中可能会分别使用4001和7001,在使用的过程中需要注意这个区别。

因为etcd是go语言编写的,安装只需要下载对应的二进制文件,并放到合适的路径就行。

我使用的openSUSE系统,安装非常简单:

1
2
3
4
5
6
7
8
9
zypper in etcd
vi /etc/sysconfig/etcd
# 修改其中的ip地址,注意最好加上与本机自己通信,后面etcdctl需要用到
ETCD_LISTEN_CLIENT_URLS="http://your-ip:2379,http://127.0.0.1:2379"

# 启动服务就Ok了
systemctl start etcd.service  
systemctl status etcd.service  
systemctl enable etcd.service  

可以自己下载安装包,简单启动单机版服务:

// 比如如下目录:/opt/etcd/conf.yaml,配置如下:
name: etcd-142
data-dir: /opt/etcd/data
listen-client-urls: http://xx.xx.xx.xx:2379,http://127.0.0.1:2379
advertise-client-urls: http://127.0.0.1:2379

# listen-peer-urls: http://xx.xx.xx.xx:2380

新建一个脚本:start.sh,执行这个启动项目就好了:

etcd --config-file /opt/etcd/conf.yaml

etcd基本使用

etcdctl是一个命令行客户端,它能提供一些简洁的命令,供用户直接跟etcd服务打交道,而无需基于 HTTP API方式。可以方便我们在对服务进行测试或者手动修改数据库内容。建议刚刚接触etcd时通过etdctl来熟悉相关操作。这些操作跟HTTP API基本上是对应的。

etcd项目二进制发行包中已经包含了etcdctl工具,etcdctl支持的命令大体上分为数据库操作和非数据库操作两类。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
zypper in etcdctl

etcdctl -h

# 常用命令选项
--debug 输出CURL命令,显示执行命令的时候发起的请求
--no-sync 发出请求之前不同步集群信息
--output, -o 'simple' 输出内容的格式(simple 为原始信息,json 为进行json格式解码)
--peers, -C 指定集群中的同伴信息,用逗号隔开(默认为: "127.0.0.1:4001")
--cert-file HTTPS下客户端使用的SSL证书文件
--key-file HTTPS下客户端使用的SSL密钥文件
--ca-file 服务端使用HTTPS时,使用CA文件进行验证
--help, -h 显示帮助命令信息
--version, -v 打印版本信息

# 远程连接一个服务器
etcdctl.exe --endpoints="http://x.x.x.x:2379" get /chende/testkey

查询数据库中所有的键值对:

etcdctl get --from-key ''

Go如何调用etcd数据库:

https://blog.csdn.net/luslin1711/article/details/93160135

其它命令参考:

http://blueskykong.com/2020/05/19/etcd-1/

https://www.jianshu.com/p/cd93f7b3f089

https://www.jianshu.com/p/4be30c0716b4

http://www.manongjc.com/detail/13-vdpxhkvxlwuynxh.html

(完)