etcd-1.安装

1. 二进制文件安装

1.1 脚本安装

linux /mac-os系统脚本如下:
修改对应的ETCD_VEROUTPUT_DIR参数来指定下载的版本和对应的安装路径

#!/bin/bash
# etcd 安装的脚本
ETCD_VER=v3.5.2

GITHUB_URL=https://github.com/etcd-io/etcd/releases/download
# etcd 安装的目录
OUTPUT_DIR=/root/etcd

rm -f ${OUTPUT_DIR}/${ETCD_VER}-linux-amd64.tar.gz
mkdir -p ${OUTPUT_DIR}


curl -L ${GITHUB_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o ${OUTPUT_DIR}/${ETCD_VER}-linux-amd64.tar.gz
tar -xzvf ${OUTPUT_DIR}/${ETCD_VER}-linux-amd64.tar.gz -C ${OUTPUT_DIR}
rm -f ${OUTPUT_DIR}/${ETCD_VER}-linux-amd64.tar.gz
1.2 验证

打开之前指定的安装目录

[root@iZuf6g3hri8hvnuqng6id7Z etcd] cd /root/etcd
[root@iZuf6g3hri8hvnuqng6id7Z etcd]  ls
etcd-v3.5.2-linux-amd64

etcd-v3.5.2-linux-amd64 这个包就是对应的etcd 解压后的安装包,里面包括如下的文件:

Documentation  etcd  etcdctl  etcdutl  README-etcdctl.md  README-etcdutl.md  README.md  READMEv2-etcdctl.md

其中etcd 文件就是server 启动服务,etcdctl 对应的客户端服务

查看server 端client 版本

# 服务端
[root@iZuf6g3hri8hvnuqng6id7Z etcd-v3.5.2-linux-amd64] ./etcd --version
etcd Version: 3.5.2
Git SHA: 99018a77b
Go Version: go1.16.3
Go OS/Arch: linux/amd64

#客户端
[root@iZuf6g3hri8hvnuqng6id7Z etcd-v3.5.2-linux-amd64] ./etcdctl version
etcdctl version: 3.5.2
API version: 3.5

将etcd 设置环境变量,方便以后的直接使用
在家目录下 打开.bashrc文件,在末尾添加如下

# ETCD_HOME 对应的etcd 所在的路径
export ETCD_HOME=/root/etcd/etcd-v3.5.2-linux-amd64
export PATH=$PATH:$ETCD_HOME

添加完成后:

source .bashrc 

此时不需要在etcd 的路径下就可直接使用etcd 命令

2. 集群(以命令行参数启动)

集群的启动方式:

参数解析:

参数名 含义
name 集群中的节点名称,集群内唯一
data-dir 指定节点的数据存储目录,这些数据包括节点ID,集群ID,集群初始化配置,Snapshot文件,若未指定-wal-dir,还会存储WAL文件;如果不指定会用缺省目录
listen-client-urls 监听用于客户端通信的url,可以监听多个
advertise-client-urls 建议使用的客户端通信url,客户端该url 与etcd 节点通信
listen-peer-urls 监听用于etcd 节点间通信的url,可以监听多个
initial-advertise-peer-urls 建议用于集群中各节点间通信的url
initial-cluster-token 用于区分不同集群。本地如有多个集群要设为不同
initial-cluster 描述集群中所有节点的信息,集群间节点通过此信息与其他节点通信
initial-cluster-state 用于指示本次是否为新建集群。有两个取值new和existing
wal-dir 存放预写式日志,最大的作用是记录了整个数据变化的全部历程。默认共用data-dir文件所在目录
snapshot-count 数据快照触发数量,etcd处理指定的次数的事务提交后,生产数据快照,默认100000
discovery 集群发现服务地址
enable-pprof
logger
log-outputs

详细参数配置参考:https://etcd.io/docs/v3.5/op-guide/configuration/

2.1 静态启动

以单机多节点为例, 在一台服务器启动三个etcd 服务组成集群

hostName IP 客户端交互端口 节点间交互端口
test1 127.0.0.1 12379 12380
tes2 127.0.0.1 22379 22380
test3 127.0.0.1 32379 32380

节点1

# 节点1 (test1)
 etcd --name test1 --data-dir /root/etcd/node1/data --listen-client-urls http://127.0.0.1:12379 --advertise-client-urls http://127.0.0.1:12379 --listen-peer-urls http://127.0.0.1:12380 --initial-advertise-peer-urls http://127.0.0.1:12380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'test1=http://127.0.0.1:12380,test2=http://127.0.0.1:22380,test3=http://127.0.0.1:32380' --initial-cluster-state new 

节点2

# 节点2(test2)
 etcd --name test2 --data-dir /root/etcd/node2/data --listen-client-urls http://127.0.0.1:22379 --advertise-client-urls http://127.0.0.1:22379 --listen-peer-urls http://127.0.0.1:22380 --initial-advertise-peer-urls http://127.0.0.1:22380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'test1=http://127.0.0.1:12380,test2=http://127.0.0.1:22380,test3=http://127.0.0.1:32380' --initial-cluster-state new 

节点3

# 节点3(test3)
 etcd --name test3 --data-dir /root/etcd/node3/data  --listen-client-urls http://127.0.0.1:32379 --advertise-client-urls http://127.0.0.1:32379 --listen-peer-urls http://127.0.0.1:32380 --initial-advertise-peer-urls http://127.0.0.1:32380 --initial-cluster-token etcd-cluster-1 --initial-cluster 'test1=http://127.0.0.1:12380,test2=http://127.0.0.1:22380,test3=http://127.0.0.1:32380' --initial-cluster-state new 
2.2 etcd动态发现模式(etcd-discovery)

etcd提供了多种部署集群的方式,在通过静态发现方式部署etcd集群我们介绍了如何通过静态发现方式部署集群。

不过很多时候,你只知道你要搭建一个多大(包含多少节点)的集群,但是并不能事先知道这几个节点的ip,从而无法使用--initial-cluster参数。

这个时候,你就需要使用discovery的方式来搭建etcd集群。discovery方式有两种:etcd discoveryDNS discovery

2.2.1 etcd discovery

这种启动方式依赖另外一个ETCD集群,在该集群中创建一个目录,并在该目录中创建一个_config的子目录,并且在该子目录中增加一个size节点,指定集群的节点数目。在这种情况下,将该目录在ETCD中的URL作为节点的启动参数,即可完成集群启动。

etcd discovery集群方式分为两种:自定义的etcd discovery公共 etcd discovery
公共的discovery就是通过CoreOS提供的公共discovery服务申请token

自定义etcd discovery

这种方式就是利用一个已有的etcd集群来提供discovery服务,从而搭建一个新的etcd集群。

假设已有的etcd集群的一个访问地址http://192.168.2.210:2379,那么我们首先需要在已有etcd中创建一个特殊的key,方法如下

curl http://192.168.2.210:2379/v2/keys/discovery/8ebee6723eaf3f5c7724e879f8797e85/_config/size -d value=3

{"action":"create","node":{"key":"/discovery/8ebee6723eaf3f5c7724e879f8797e85/_config/size/00000000000000000011","value":"3","modifiedIndex":11,"createdIndex":11}}

其中value=3表示本集群的大小,即: 有多少集群节点。而 8ebee6723eaf3f5c7724e879f8797e85就是用来做discovery的token, 可通过uuidgen指令生成uuid 作为token。

此时对应的discovery url为:http://192.168.2.210:2379/v2/keys/discovery/8ebee6723eaf3f5c7724e879f8797e85

值得注意的是:如果实际启动的etcd节点个数大于discovery token创建时指定的size,多余的节点会自动变为proxy节点,作为反向代理把客户的请求转发给可用的etcd集群,新节点加入集群如果核心节点数已满足要求,则自动转化为proxy模式,此项不会在节点不足时逆向转化为实际节点

公共 etcd discovery

如果没有搭建好的etcd集群用于注册和发现,
可使用etcd公有服务来进行服务注册发现。公有etcd服务上创建用于发现的url为:

curl https://discovery.etcd.io/new?size=3

来获取对应的discovery url,其中size 就是集群的大小:

https://discovery.etcd.io/a6a292c79fff6d25ef09243e3dfd2043

启动节点
在每个节点的配置参数添加discover 并设置该参数为上述两种的discovery url之一,删除 initial-cluster-token, initial-cluster initial-cluster-state new 参数即可

节点1

etcd --name test1 --data-dir /root/etcd/node1/data --listen-client-urls http://127.0.0.1:12379 --advertise-client-urls http://127.0.0.1:12379 --listen-peer-urls http://127.0.0.1:12380   --discovery https://discovery.etcd.io/a6a292c79fff6d25ef09243e3dfd2043

节点2

 etcd --name test2 --data-dir /root/etcd/node2/data --listen-client-urls http://127.0.0.1:22379 --advertise-client-urls http://127.0.0.1:22379 --listen-peer-urls http://127.0.0.1:22380  --discovery https://discovery.etcd.io/a6a292c79fff6d25ef09243e3dfd2043

节点3

 etcd --name test3 --data-dir /root/etcd/node3/data  --listen-client-urls http://127.0.0.1:32379 --advertise-client-urls http://127.0.0.1:32379 --listen-peer-urls http://127.0.0.1:32380 --initial-advertise-peer-urls http://127.0.0.1:32380  --discovery https://discovery.etcd.io/a6a292c79fff6d25ef09243e3dfd2043
2.2.2 DNS discovery

//todo
参考https://www.hi-linux.com/posts/55447.html

3. 查看集群状态

参考https://www.jianshu.com/p/67cbef492812

4.通信安全(TLS)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,525评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,203评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,862评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,728评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,743评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,590评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,330评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,244评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,693评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,885评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,001评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,723评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,343评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,919评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,042评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,191评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,955评论 2 355

推荐阅读更多精彩内容