2021年4月22日星期四

etcd简介及集群安装部署使用

目录
  • 1. 简介
  • 2. Linux下载安装
  • 3. 单机模式启动
  • 4. 指定各集群成员的方式配置集群
  • 5. 使用discovery service的方式配置集群
  • 6. 集群模式下客户端命令行
  • 7. etcd-manager安装

1. 简介

etcd是一个键值存储仓库,用于配置共享和服务发现。etcd在使用中可作为一个高可用强一致性的服务发现存储仓库。

etcd作为一个高可用键值存储系统,天生就是为集群化而设计的。由于Raft算法在做决策时需要多数节点的投票,所以etcd一般部署集群推荐奇数个节点,推荐的数量为3、5或者7个节点构成一个集群。

etcd包含以下特点:

  • 简单:基于HTTP+JSON的API让你用curl就可以轻松使用。
  • 安全:可选SSL客户认证机制。
  • 快速:每个实例每秒支持2k+次写操作。
  • 可信:使用Raft算法充分实现了分布式。
  • 数据持久化:默认数据一更新就进行持久化。

Raft算法:工程上使用较为广泛的强一致性、去中心化、高可用的分布式协议。Raft是一个共识算法(consensus algorithm),所谓共识,就是多个节点对某个事情达成一致的看法,即使是在部分节点故障、网络延时、网络分割的情况下。

2. Linux下载安装

两种下载方法:

wget https://github.com/etcd-io/etcd/releases/download/v3.2.32/etcd-v3.2.32-linux-amd64.tar.gz或curl -L https://github.com/etcd-io/etcd/releases/download/v3.2.32/etcd-v3.2.32-linux-amd64.tar.gz -o /opt/etcd-v3.2.32-linux-amd64.tar.gz

解压

tar -zxvf etcd-v3.2.32-linux-amd64.tar.gz
etcd 为服务端执行文件etcdctl 为客户端执行文件

3. 单机模式启动

# 启动/opt/etcd-v3.2.32-linux-amd64/etcd --data-dir=default.etcd --name default \		--initial-advertise-peer-urls --listen-peer-urls \		--advertise-client-urls --listen-client-urls ETCDCTL_API=3./etcdctl put mykey "this is a test"./etcdctl get mykey

4. 指定各集群成员的方式配置集群

创建执行文件

touch etcd-static.sh

在每个etcd节点上,指定集群成员。

# 指定集群token# 如果你所在的网络环境配置了多个etcd集群,为了避免意外发生,最好使用-initial-cluster-token参数为每个集群单独配置一个token认证。这样就可以确保每个集群和集群的成员都拥有独特的ID。TOKEN=token-01CLUSTER_STATE=newNAME_1=machine-1NAME_2=machine-2NAME_3=machine-3HOST_1=192.168.199.140HOST_2=192.168.199.141HOST_3=192.168.199.142CLUSTER=${NAME_1}=http://${HOST_1}:2380,${NAME_2}=http://${HOST_2}:2380,${NAME_3}=http://${HOST_3}:2380

每个节点添加一下各节点对应启动命令行

THIS_NAME=${NAME_1}THIS_IP=${HOST_1}/opt/etcd-v3.2.32-linux-amd64/etcd --data-dir=data.etcd --name ${THIS_NAME} \	--initial-advertise-peer-urls --listen-peer-urls \	--advertise-client-urls --listen-client-urls \	--initial-cluster ${CLUSTER} \	--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}	THIS_NAME=${NAME_2}THIS_IP=${HOST_2}/opt/etcd-v3.2.32-linux-amd64/etcd --data-dir=data.etcd --name ${THIS_NAME} \	--initial-advertise-peer-urls --listen-peer-urls \	--advertise-client-urls --listen-client-urls \	--initial-cluster ${CLUSTER} \	--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}	THIS_NAME=${NAME_3}THIS_IP=${HOST_3}/opt/etcd-v3.2.32-linux-amd64/etcd --data-dir=data.etcd --name ${THIS_NAME} \	--initial-advertise-peer-urls --listen-peer-urls \	--advertise-client-urls --listen-client-urls \	--initial-cluster ${CLUSTER} \	--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}

后台启动服务:

nohup sh etcd-static.sh &

5. 使用discovery service的方式配置集群

如果你本地没有可用的etcd集群,etcd官网提供了一个可以公网访问的etcd存储地址。你可以通过如下命令得到etcd服务的目录,并把它作为--discovery参数使用。

执行:curl 'https://discovery.etcd.io/new?size=3'输出:https://discovery.etcd.io/d343fbdbc42552549ec02c2710cdca2c

执行得到的输出内容作为-discovery参数使用

同样的,当你完成了集群的初始化后,这些信息就失去了作用。当你需要增加节点时,需要使用etcdctl来进行操作。为了安全,请务必每次启动新etcd集群时,都使用新的discovery token进行注册。

另外,如果你初始化时启动的节点超过了指定的数量,多余的节点会自动转化为Proxy模式的etcd。

创建执行文件

touch etcd-dynamic.sh

每个节点如下配置

# 指定集群token# 如果你所在的网络环境配置了多个etcd集群,为了避免意外发生,最好使用-initial-cluster-token参数为每个集群单独配置一个token认证。这样就可以确保每个集群和集群的成员都拥有独特的ID。TOKEN=token-01CLUSTER_STATE=newDISCOVERY=https://discovery.etcd.io/d343fbdbc42552549ec02c2710cdca2cTHIS_NAME=节点自己的名称THIS_IP=节点自己的host/opt/etcd-v3.2.32-linux-amd64/etcd --data-dir=data.etcd --name ${THIS_NAME} \	--initial-advertise-peer-urls --listen-peer-urls \	--advertise-client-urls --listen-client-urls \	--discovery ${DISCOVERY} \	--initial-cluster-state ${CLUSTER_STATE} --initial-cluster-token ${TOKEN}

后台启动服务:

nohup sh etcd-dynamic.sh &

6. 集群模式下客户端命令行

执行客户端命令前需要指定使用哪个版本的api

export ETCDCTL_API=3
  • 获取集群节点
./etcdctl --endpoints=192.168.199.140:2379,192.168.199.141:2379,192.168.199.142:2379 member list加上参数:--write-out=table,可以以表的形式输出
  • 查看节点状态
./etcdctl --endpoints=192.168.199.140:2379,192.168.199.141:2379,192.168.199.142:2379 endpoint status --write-out=table
  • 向集群中设置值
./etcdctl --endpoints=192.168.199.140:2379,192.168.199.141:2379,192.168.199.142:2379 put key "value"
  • 获取集群中的值
./etcdctl --endpoints=192.168.199.140:2379,192.168.199.141:2379,192.168.199.142:2379 get key可以跟参数:--prefix,获取所有有相同前缀的数据
  • 删除集群中数据
./etcdctl --endpoints=192.168.199.140:2379,192.168.199.141:2379,192.168.199.142:2379 del key可以跟参数:--prefix,删除所有有相同前缀的数据

7. etcd-manager安装

官网下载安装包安装

https://etcdmanager.io/








原文转载:http://www.shaoqun.com/a/701743.html

跨境电商:https://www.ikjzd.com/

聚贸:https://www.ikjzd.com/w/1305

好东东网:https://www.ikjzd.com/w/1238


目录1.简介2.Linux下载安装3.单机模式启动4.指定各集群成员的方式配置集群5.使用discoveryservice的方式配置集群6.集群模式下客户端命令行7.etcd-manager安装1.简介etcd是一个键值存储仓库,用于配置共享和服务发现。etcd在使用中可作为一个高可用强一致性的服务发现存储仓库。etcd作为一个高可用键值存储系统,天生就是为集群化而设计的。由于Raft算法在做决策
auditor:https://www.ikjzd.com/w/2437
新单:https://www.ikjzd.com/w/79
锦桥纺织网:https://www.ikjzd.com/w/2469
看见老公抱着闺蜜大腿午休:http://www.30bags.com/a/251851.html
无良网友竟然让我找回爱爱的高潮:http://lady.shaoqun.com/m/a/271655.html
校花女友只是玩弄我 一夜激情之后就把我甩了:http://www.30bags.com/a/254716.html

没有评论:

发表评论