分类

安卓应用安卓游戏

网络软件 网络共享

etcd(分布式存储系统)

etcd(分布式存储系统) v3.4.14官方版 附教程

大小:10.4 MB

语言:简体中文系统:WinXP, Win2003, Vista, Win7, Win8, Win10

类别:网络共享时间:2020-12-01 17:14

etcd是一款分布式的可靠键值存储。软件界面简单、使用标准的HTTP工具读取和写入、将数据存储在分层组织的目录中、对于特定键或目录的变化、可以帮助你快速做出反应等,并且提供SSL客户证书认证。

软件介绍

界面简单

使用标准的HTTP工具来读取和写入数值,如curl。

键值存储

将数据存储在分层组织的目录中,就像标准的文件系统一样。

关注变化

观察特定键或目录的变化,并对值的变化做出反应。

可选SSL客户证书认证

以每个实例1000次/秒的写入量为基准。

钥匙过期的可选TTL

通过Raft协议适当分配

软件特色

简单:支持 curl 方式的用户 API (HTTP+JSON)

安全:可选 SSL 客户端证书认证

快速:单实例可达每秒 1000 次写操作

可靠:使用 Raft 实现分布式

安装配置教程

一.安装

mkdir -p /home/chenqionghe/test/etcd/

cd !$

# 下载

直接在本站下载

# 解压安装

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

cd etcd-v3.3.12-linux-amd64

## 将启动文件和命令管理文件拷贝到 PATH找到的路径中

cp etcd /usr/local/bin

cp etcdctl /usr/local/bin

启动参数解释

--name

etcd集群中的节点名,这里可以随意,可区分且不重复就行

--listen-peer-urls

监听的用于节点之间通信的url,可监听多个,集群内部将通过这些url进行数据交互(如选举,数据同步等)

--initial-advertise-peer-urls

建议用于节点之间通信的url,节点间将以该值进行通信。

--listen-client-urls

监听的用于客户端通信的url,同样可以监听多个。

--advertise-client-urls

建议使用的客户端通信url,该值用于etcd代理或etcd成员与etcd节点通信。

--initial-cluster-token etcd-cluster-1

节点的token值,设置该值后集群将生成唯一id,并为每个节点也生成唯一id,当使用相同配置文件再启动一个集群时,只要该token值不一样,etcd集群就不会相互影响。

--initial-cluster

也就是集群中所有的initial-advertise-peer-urls 的合集

--initial-cluster-state new

新建集群的标志

二.搭建单机版

直接启动

etcd

etcd默认监听的是localhost的2379端口,既只监听了lo设备,这样会导致启动后集群中的其他机器无法访问

因此我们可以在启动的时候将默认的localhost改成0.0.0.0,确保etcd监听了所有网卡。

etcd -listen-client-urls="http://0.0.0.0:2379" --advertise-client-urls="http://0.0.0.0:2379"

注意:etcd有要求,如果--listen-client-urls被设置了,那么就必须同时设置--advertise-client-urls,所以即使设置和默认相同,也必须显式设置

我们来使用curl来测试一下,是否可以远程访问,这里我的机器IP是10.211.55.25

➜ ~ curl -L http://10.211.55.25:2379/version

{"etcdserver":"3.3.12","etcdcluster":"3.3.0"}

如果不想使用2379和2380端口,也可以

#etcd 启动 指定端口2280 2279

/usr/local/bin/etcd \

--data-dir=/etcd-data --name node1 \

--initial-advertise-peer-urls http://0.0.0.0:2280 --listen-peer-urls http://0.0.0.0:2280 \

--advertise-client-urls http://0.0.0.0:2279 --listen-client-urls http://0.0.0.0:2279 \

--initial-cluster node1=http://0.0.0.0:2280

#连接

etcdctl --endpoints=http://127.0.0.1:2279 set cqh chenqionghe

etcdctl --endpoints=http://127.0.0.1:2279 get cqh

当然,我们也可以通过docker运行,这里给出启动脚本

#!/usr/bin/env bash

ETCD_NAME="etcd"

ETCD_VERSION="v3.3.1"

ETCD_PORT_CLIENT=2379

ETCD_PORT_NODE=2380

docker run -d \

-p ${ETCD_PORT_CLIENT}:2379 \

-p ${ETCD_PORT_NODE}:2380 \

--name ${ETCD_NAME} quay.io/coreos/etcd:${ETCD_VERSION} \

/usr/local/bin/etcd \

--data-dir=/etcd-data --name node1 \

--initial-advertise-peer-urls http://0.0.0.0:2380 --listen-peer-urls http://0.0.0.0:2380 \

--advertise-client-urls http://0.0.0.0:2379 --listen-client-urls http://0.0.0.0:2379 \

--initial-cluster node1=http://0.0.0.0:2380

三.搭建集群版

Etcd构建自身高可用集群主要有三种形式:

静态发现: 预先已知 Etcd 集群中有哪些节点,在启动时直接指定好Etcd的各个node节点地址

Etcd动态发现: 通过已有的Etcd集群作为数据交互点,然后在扩展新的集群时实现通过已有集群进行服务发现的机制

DNS动态发现: 通过DNS查询方式获取其他节点地址信息

这里我们采用Static方式,准备三台机器,ip如下(都已经安装etcd)

node1 10.211.55.2

node2 10.211.55.25

node3 10.211.55.26

进入node1,创建并运行run.sh,脚本内容如下

#!/usr/bin/env bash

#节点名称

ETCD_NAME=node-1

#本机IP地址

LOCAL_IP=10.211.55.2

#ETCD存储目录

ETCD_DATA_DIR=/usr/local/etcd/data

#初始化名称

INITIAL_CLUSTER_TOKEN=cqh-test-cluster

#初始化群集列表

INITIAL_CLUSTER="node-1=http://10.211.55.2:2380,node-2=http://10.211.55.25:2380,node-3=http://10.211.55.26:2380"

#初始化状态

INITIAL_CLUSTER_STATE=new

#开始运行

etcd --name ${ETCD_NAME} --data-dir ${ETCD_DATA_DIR} \

--initial-advertise-peer-urls http://${LOCAL_IP}:2380 \

--listen-peer-urls http://${LOCAL_IP}:2380 \

--listen-client-urls http://${LOCAL_IP}:2379,http://127.0.0.1:2379 \

--advertise-client-urls http://${LOCAL_IP}:2379 \

--initial-cluster-token ${INITIAL_CLUSTER_TOKEN} \

--initial-cluster ${INITIAL_CLUSTER} \

--initial-cluster-state ${INITIAL_CLUSTER_STATE}

进入node2,创建并运行run.sh,脚本内容和node1差不多(只修改了ETCD_NAME和LOCAL_IP)

#!/usr/bin/env bash

#节点名称

ETCD_NAME=node-2

#本机IP地址

LOCAL_IP=10.211.55.25

#ETCD存储目录

ETCD_DATA_DIR=/usr/local/etcd/data

#初始化名称

INITIAL_CLUSTER_TOKEN=cqh-test-cluster

#初始化群集列表

INITIAL_CLUSTER="node-1=http://10.211.55.2:2380,node-2=http://10.211.55.25:2380,node-3=http://10.211.55.26:2380"

#初始化状态

INITIAL_CLUSTER_STATE=new

#开始运行

etcd --name ${ETCD_NAME} --data-dir ${ETCD_DATA_DIR} \

--initial-advertise-peer-urls http://${LOCAL_IP}:2380 \

--listen-peer-urls http://${LOCAL_IP}:2380 \

--listen-client-urls http://${LOCAL_IP}:2379,http://127.0.0.1:2379 \

--advertise-client-urls http://${LOCAL_IP}:2379 \

--initial-cluster-token ${INITIAL_CLUSTER_TOKEN} \

--initial-cluster ${INITIAL_CLUSTER} \

--initial-cluster-state ${INITIAL_CLUSTER_STATE}

进入node3,创建并运行run.sh

#!/usr/bin/env bash

#节点名称

ETCD_NAME=node-3

#本机IP地址

LOCAL_IP=10.211.55.26

#ETCD存储目录

ETCD_DATA_DIR=/usr/local/etcd/data

#初始化名称

INITIAL_CLUSTER_TOKEN=cqh-test-cluster

#初始化群集列表

INITIAL_CLUSTER="node-1=http://10.211.55.2:2380,node-2=http://10.211.55.25:2380,node-3=http://10.211.55.26:2380"

#初始化状态

INITIAL_CLUSTER_STATE=new

#开始运行

etcd --name ${ETCD_NAME} --data-dir ${ETCD_DATA_DIR} \

--initial-advertise-peer-urls http://${LOCAL_IP}:2380 \

--listen-peer-urls http://${LOCAL_IP}:2380 \

--listen-client-urls http://${LOCAL_IP}:2379,http://127.0.0.1:2379 \

--advertise-client-urls http://${LOCAL_IP}:2379 \

--initial-cluster-token ${INITIAL_CLUSTER_TOKEN} \

--initial-cluster ${INITIAL_CLUSTER} \

--initial-cluster-state ${INITIAL_CLUSTER_STATE}

我们看到3台都启动成功了

然后我们在node2上面执行操作

root@ubuntu:~# etcdctl member list

2033c1336b929ca7: name=node-3 peerURLs=http://10.211.55.26:2380 clientURLs=http://10.211.55.26:2379 isLeader=true

edc51d36208cfbcf: name=node-2 peerURLs=http://10.211.55.25:2380 clientURLs=http://10.211.55.25:2379 isLeader=false

f09a9dba19a725e2: name=node-1 peerURLs=http://10.211.55.2:2380 clientURLs=http://10.211.55.2:2379 isLeader=false

可以看到集群已经生效了,我们再来测试一下,在ndoe2上执行操作

etcdctl set /cqh muscle

看看node1和node3是否能保持数据一致

可以看到在node1和node3中都能能够正确的获取/cqh的值

四.监听功能-watch

五.使用rest api

创建键值

➜ ~ curl http://10.211.55.25:2379/v2/keys/cqh -XPUT -d value="陈琼和1"

{"action":"set","node":{"key":"/cqh","value":"陈琼和","modifiedIndex":14,"createdIndex":14},"prevNode":{"key":"/cqh","value":"陈琼和","modifiedIndex":13,"createdIndex":13}}

创建目录

➜ ~ curl http://10.211.55.25:2379/v2/keys/gym -XPUT -d dir=true

{"action":"set","node":{"key":"/gym","dir":true,"modifiedIndex":12,"createdIndex":12}}

获取键值

➜ ~ curl http://10.211.55.25:2379/v2/keys/cqh

{"action":"get","node":{"key":"/cqh","value":"陈琼和","modifiedIndex":14,"createdIndex":14}}

创建键值带ttl

➜ ~ curl http://10.211.55.25:2379/v2/keys/hero -XPUT -d value="超人" -d ttl=5

创建有序键值

curl http://10.211.55.25:2379/v2/keys/fitness -XPOST -d value="bench_press"

curl http://10.211.55.25:2379/v2/keys/fitness -XPOST -d value="dead_lift"

curl http://10.211.55.25:2379/v2/keys/fitness -XPOST -d value="deep_squat"

获取刚创建的fitness

curl http://10.211.55.25:2379/v2/keys/fitness

{"action":"create","node":{"key":"/fitness/00000000000000000020","value":"bench_press","modifiedIndex":20,"createdIndex":20}}

{"action":"create","node":{"key":"/fitness/00000000000000000021","value":"dead_lift","modifiedIndex":21,"createdIndex":21}}

{"action":"create","node":{"key":"/fitness/00000000000000000022","value":"deep_squat","modifiedIndex":22,"createdIndex":22}}

{"action":"get","node":{"key":"/fitness","dir":true,"nodes":[{"key":"/fitness/00000000000000000022","value":"deep_squat","modifiedIndex":22,"createdIndex":22},{"key":"/fitness/00000000000000000020","value":"bench_press","modifiedIndex":20,"createdIndex":20},{"key":"/fitness/00000000000000000021","value":"dead_lift","modifiedIndex":21,"createdIndex":21}],"modifiedIndex":20,"createdIndex":20}}

删除键

curl http://10.211.55.25:2379/v2/keys/cqh -XDELETE

列出所有集群成员

curl http://10.211.55.25:2379/v2/members

统计信息-查看leader

curl http://10.211.55.25:2379/v2/stats/leader

节点自身信息

curl http://10.211.55.26:2379/v2/stats/self

查看集群运行状态

curl http://10.211.55.26:2379/v2/stats/store

六.可视化界面

这里分别演示搭建etcd-browser和etcdkeeper,两者功能大同小异,不同的是etcdkeeper支持v3的api

etcd-browser

docker run --rm -d --name etcd-browser \

-p 8000:8000 \

--env ETCD_HOST=10.211.55.25 \

--env ETCD_PORT=2379 \

buddho/etcd-browser

运行后访问http://10.211.55.25:8000/

看到如下界面,可以看到上面添加的所有数据,这里我使用界面添加了漫威和DC的英雄

etcdkeeper

docker run -it -d --name etcdkeeper \

-p 8080:8080 \

deltaprojects/etcdkeeper

访问http://10.211.55.25:8080/etcdkeeper/,输入etcd的地址,看到如下界面

∨ 展开

同类推荐

相关下载

热门游戏

下载排行

热门关键字

  • 浏览器
  • 上网辅助
  • 下载工具
  • FTP工具
  • 站长工具
  • 网络共享
  • 网络辅助
  • 网络加速
  • 网络监测
  • 远程监控
  • IP工具
  • 服务器类
  • 邮件处理
  • 网页制作
  • 网络其他
  • 网络收音机