首页 >分析 > > 正文

【全球播资讯】2、etcd单机部署和集群部署

博客园 2023-05-07 06:29:47

上一章我们认识了etcd,简单的介绍了 etcd 的基础概念,但是理解起来还是比较抽象的。这一章我们就一起来部署下 etcd 。这样可以让我们对 etcd 有更加确切的认识。

1、etcd单实例部署

对于平常的学习,其实搭建一个单机节点是够了的。接下来就讲讲怎么搭建单机节点。


(资料图片仅供参考)

本次部署是在 centos7 系统,cpu 为amd64 上面进行的。

部署是直接使用官方编译好的二进制文件,大家也可以直接看 ectd-releases 界面选择需要的版本,进行部署。

部署步骤如下:

1、下载官方编译好的 二进制文件。大家可以根据自己的系统和cpu架构进行选择。

cd /optwget https://github.com/etcd-io/etcd/releases/download/v3.5.8/etcd-v3.5.8-linux-amd64.tar.gz

2、解压下载好的文件

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

3、启动 etcd 服务

cd etcd-v3.5.8-linux-amd64# 启动方式一:前台启动./etcd# 启动方式二:后台启动,日志文件位置可随意选择,有权限读写就可以了nohup ./etcd > /root/etcd.log 2>&1 &

启动的 etcd 进程默认监听的是 2379端口。我们可以使用 etcdctl 来与 etcd server进行交互。下面展示一个简单的使用案例:

./etcdctl --endpoints=localhost:2379 put foo bar./etcdctl --endpoints=localhost:2379 get foo

我们也可以将 etcdctl 拷贝到 /usr/local/bin 下面,这样使用 etcdctl 时,就不用想上面这样,必须指定 etcdctl 的位置了。

上面启动 etcd 进程的方式比较简单,大家也可以使用 systemd 来进行管理,这样可以实现开启自启了。

编写 etcd.service 文件:

cat > /usr/lib/systemd/system/etcd.service << EOF[Unit]Description=Etcd ServerAfter=network.target network-online.targetWants=network-online.target [Service]Type=notifyExecStart=/opt/etcd-v3.5.8-linux-amd64/etcd Restart=on-failureRestartSec=5LimitNOFILE=65536 [Install]WantedBy=multi-user.targetEOF

启动 etcd 服务以及设置为开机自启

# 重载脚本文件systemctl daemon-reload# 启动 etcd 服务systemctl start etcd.service# 设置 etcd 服务为开机自启systemctl enable etcd.service# 停止 etcd 服务systemctl stop etcd.service

上面就是 etcd 的单实例部署方式了。

2、etcd集群部署

在生产环境中,为了整个集群的高可用,etcd 正常都会集群部署,避免单点故障。接下来我们一起学习如何进行 etcd 集群部署。引导 etcd 集群的启动有以下三种机制:

预先已知etcd集群中有哪些节点,在启动时通过--initial-cluster参数直接指定好etcd的各个节点地址
静态配置前提是在搭建集群之前已经提前知道各节点的信息,而实际应用中可能存在预 先并不知道各节点ip的情况,这时可通过已经搭建的etcd来辅助搭建新的etcd集群。通过 已有的etcd集群作为数据交互点,然后在扩展新的集群时,实现通过已有集群进行服务发 现的机制。比如官方提供的:discovery.etcd.io
通过DNS查询方式获取其他节点地址信息

静态启动 etcd 集群要求每个成员都知道集群中的另一个成员,也就是在配置文件中写死每个集群成员的地址。 在实际情况下,群集成员的 IP 可能会提前未知。在这种情况下,我们可以使用 etcd 官方提供的动态发现功能来帮助引导 etcd 群集。

接下来我们看一看静态启动、etcd 动态发现是如何部署的,DNS 发现的部署方式,大家可以看看文章最后的参考连接,讲解得比较详细。

哈哈,因为 etcd 的部署方式,相对来说还是比较容易的,所以这里偷个懒,大家想看怎么集群部署的话,看文章最后的参考连接。

2.1 单机多实例部署

平常大家自己搭建着玩的话,可以使用此方式来部署一个单机多实例的 etcd 集群,这样管理维护都比较方便。

想要在一台机器上部署 etcd 集群,我们可以借助 goreman 这个工具,goreman 是一个 Go 语言编写的多进程管理工具,是对 Ruby 下广泛使用的 foreman 的重写(foreman 原作者也实现了一个 Go 版本:forego,不过没有 goreman 好用)。

使用goreman部署集群,需要我们先按照 go的环境,按照好 go 的环境后,执行下面的命令:

go install github.com/mattn/goreman@latest

注意,上面执行的命令,会将 goreman 按照在 $GOPATH 下面,GOPATH 可以通过 go env 查看。如果执行上面命令后,使用 goreman 命令提示找不到命令,多半是没有将 GOPATH 加入到环境变量中去。

简单的方式 vi /etc/profile。加入下面两句话,然后报错即可。

export GOPATH= 自己的实际路径

export PATH=$PATH:$GOPATH/bin

HostNameip客户端交互端口peer 通信端口
infra1127.0.0.11237912380
infra2127.0.0.12237922380
infra3127.0.0.13237932380

执行下面步骤之前,需要先将 官方文档 编译好的 etcd 二进制文件下载解压到本机,然后将etcd、etcdctl这两个可执行文件拷贝到 /usr/local/bin/下面去。

etcd_cluster_procfile 脚本如下:

etcd1: etcd --name infra1 --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 "infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380" --initial-cluster-state new --enable-pprof --logger=zap --log-outputs=stderretcd2: etcd --name infra2 --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 "infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380" --initial-cluster-state new --enable-pprof --logger=zap --log-outputs=stderretcd3: etcd --name infra3 --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 "infra1=http://127.0.0.1:12380,infra2=http://127.0.0.1:22380,infra3=http://127.0.0.1:32380" --initial-cluster-state new --enable-pprof --logger=zap --log-outputs=stderr

配置项说明:

参数说明
--nameetcd集群中的节点名,这里可以随意,可区分且不重复就行
--initial-advertise-peer-urls建议用于节点之间通信的url,节点间将以该值进行通信。
--initial-cluster也就是集群中所有的 initial-advertise-peer-urls 的合集。etcd启动的时候,通过这个配置找到其他etcd节点的列表。
--listen-peer-urls监听的用于节点之间通信的url,可监听多个,集群内部将通过这些url进行数据交互(如选举,数据同步等)
--listen-client-urls监听客户端请求的地址列表url,可以监听多个,多个用逗号分割。
--advertise-client-urls建议使用的客户端通信 url,该值用于 etcd 代理或 etcd 成员与 etcd 节点通信。
--initial-cluster-tokenetcd-cluster-1,节点的 token 值,设置该值后集群将生成唯一 id,并为每个节点也生成唯一 id,当使用相同配置文件再启动一个集群时,只要该 token 值不一样,etcd 集群就不会相互影响。
--initial-cluster-state初始化的时候,集群的状态:new 和 existing 两种状态。new代表新建的集群,existing 代表加入已经存在的集群

注意上面的脚本,etcd 命令执行时需要根据本地实际的安装地址进行配置。使用下面的命令启动 etcd 集群。

goreman -f /opt/etcd_cluster_procfile  start

使用如上的命令启动启动 etcd 集群,启动完成之后查看集群内的成员。

$ etcdctl --endpoints=http://localhost:22379  member list8211f1d0f64f3269, started, infra1, http://127.0.0.1:12380, http://127.0.0.1:12379, false91bc3c398fb3c146, started, infra2, http://127.0.0.1:22380, http://127.0.0.1:22379, falsefd422379fda50e48, started, infra3, http://127.0.0.1:32380, http://127.0.0.1:32379, false

上面我们使用单机部署了多个etcd实例,模拟一个etcd集群。我们在启动集群的时候,已经知道了各个实例的地址,但是在实际环境中,集群成员的 ip 可能不会提前知道。这时候就需要采用动态发现的机制。

2.2 动态发现启动 etcd 集群

下面的内容全部来自 文章最后的参考连接,如有侵权,请联系删除,谢谢。

参考连接还有 docker 部署以及 dns 部署,大家感兴趣可以去看看。

如前面所述,在实际环境中,集群成员的 ip 可能不会提前知道。在这种情况下,需要使用自动发现来引导 etcd 集群,而不是指定静态配置,这个过程被称为发现。我们启动三个 etcd,具体对应如下:

HostNameip客户端交互端口peer 通信端口
etcd1192.168.202.12823792380
etcd2192.168.202.12923792380
etcd3192.168.202.13023792380
2.2.1 协议的原理

Discovery service protocol帮助新的 etcd 成员使用共享 URL 在集群引导阶段发现所有其他成员。

该协议使用新的发现令牌来引导一个唯一的 etcd 集群。一个发现令牌只能代表一个 etcd 集群。只要此令牌上的发现协议启动,即使它中途失败,也不能用于引导另一个 etcd 集群。

2.2.2 协议的工作流程

Discovery protocol 使用内部 etcd 集群来协调新集群的引导程序。首先,所有新成员都与发现服务交互,并帮助生成预期的成员列表。之后,每个新成员使用此列表引导其服务器,该列表执行与 --initial-cluster标志相同的功能,即设置所有集群的成员信息。

注意:

Discovery service protocol仅用于集群引导阶段,不能用于运行时重新配置或集群 监视。

2.2.3 使用公共发现服务部署集群

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

公共发现服务 discovery.etcd.io以相同的方式工作,并提供针对过多请求的保护。公共发现服务在其上仍然使用 etcd 群集作为数据存储。

1、创建集群发现

# 使用公共etcd发现服务$ curl http://discovery.etcd.io/new?size=3# 生成的urlhttp://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de

2、部署前准备工作

所有节点均需要安装etcd。以及创建需要的目录。

#创建单独的etcd数据目录mkdir ‐p /opt/etcd/data

3、以动态发现方式启动集群

每个成员必须指定不同的名称标志,否则发现将因重复的名称而失败

etcd 发现模式下,启动 etcd 的命令如下:

# etcd1 启动$ /opt/etcd/bin/etcd  --name etcd1 --initial-advertise-peer-urls http://192.168.202.128:2380 \  --listen-peer-urls http://192.168.202.128:2380 \  --data-dir /opt/etcd/data \  --listen-client-urls http://192.168.202.128:2379,http://127.0.0.1:2379 \  --advertise-client-urls http://192.168.202.128:2379 \  --discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de# etcd2 启动 /opt/etcd/bin/etcd  --name etcd2 --initial-advertise-peer-urls http://192.168.202.129:2380 \  --listen-peer-urls http://192.168.202.129:2380 \  --data-dir /opt/etcd/data \  --listen-client-urls http://192.168.202.129:2379,http://127.0.0.1:2379 \  --advertise-client-urls http://192.168.202.129:2379 \  --discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de# etcd3 启动 /opt/etcd/bin/etcd  --name etcd3 --initial-advertise-peer-urls http://192.168.202.130:2380 \    --listen-peer-urls http://192.168.202.130:2380 \    --data-dir /opt/etcd/data \    --listen-client-urls http://192.168.202.130:2379,http://127.0.0.1:2379 \    --advertise-client-urls http://192.168.202.130:2379 \    --discovery https://discovery.etcd.io/3e86b59982e49066c5d813af1c2e2579cbf573de

需要注意的是,在我们完成了集群的初始化后,这些信息就失去了作用。当需要增加节点时,需要使用 etcdctl 进行操作。为了安全,每次启动新 etcd 集群时,都使用新的 discovery token 进行注册。另外,如果初始化时启动的节点超过了指定的数量,多余的节点会自动转化为 Proxy 模式的 etcd。

4、结果验证

集群启动好之后,进行验证,我们看一下集群的成员:

$ /opt/etcd/bin/etcdctl member list40e2ac06ca1674a7, started, etcd3, http://192.168.202.130:2380, http://192.168.202.130:2379, falsec532c5cedfe84d3c, started, etcd1, http://192.168.202.128:2380, http://192.168.202.128:2379, falsedb75d3022049742a, started, etcd2, http://192.168.202.129:2380, http://192.168.202.129:2379, false

结果符合预期,再看下节点的健康状态:

$ /opt/etcd/bin/etcdctl  --endpoints="http://192.168.202.128:2379,http://192.168.202.129:2379,http://192.168.202.130:2379"  endpoint  health  # 结果如下http://192.168.202.128:2379 is healthy: successfully committed proposal: took = 3.157068mshttp://192.168.202.130:2379 is healthy: successfully committed proposal: took = 3.300984mshttp://192.168.202.129:2379 is healthy: successfully committed proposal: took = 3.263923ms

可以看到,集群中的三个节点都是健康的正常状态。以动态发现方式启动集群成功。

上面是使用公共服务来做服务发现的,如果我们有自己搭建好的etcd,可以使用自建的etcd作为服务发现,搭建集群:

获取令牌时,必须指定群集大小。 发现服务使用该大小来了解何时发现了最初将组成集群的所有成员。

curl -X PUT http://10.0.10.10:2379/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83/_config/size -d value=3

我们需要把该 url 地址 http://10.0.10.10:2379/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83 作为 --discovery参数来启动 etcd。

节点会自动使用 http://10.0.10.10:2379/v2/keys/discovery/6c007a14875d53d9bf0ef5a6fc0257c817f0fb83 目录进行 etcd 的注册和发现服务。

参考链接:bilibili视频教程

彻底搞懂 etcd 系列文章(三):etcd 集群运维部署

搭建 etcd 集群--使用到了 tls

使用 StatefulSet 部署 etcd 集群

上一篇:公益WE+“魅力安阳”主题活动赋能“她力量” 每日聚焦 下一篇:最后一页
x
推荐阅读

【全球播资讯】2、etcd单机部署和集群部署

2023-05-07

公益WE+“魅力安阳”主题活动赋能“她力量” 每日聚焦

2023-05-07

玻利维亚决定出售21吨黄金储备 以偿还到期外债

2023-05-07

龙泉驿公办幼儿园招生划片及计划人数2023|天天消息

2023-05-06

祁连山国家公园雪豹卫星跟踪项目取得成功

2023-05-06

外资热议中国经济复苏 将从这些方面寻找超额收益

2023-05-06

等我先说夏天alex_等我先说 世界今头条

2023-05-06

当前热讯:艾滋病抗体检测方法_艾滋病自我检测方法

2023-05-06

彩虹猫是如何发出音乐的_彩虹猫是什么梗 焦点消息

2023-05-06

厦门平价商店增加至127家|天天通讯

2023-05-06

金智科技:未来公司的发展方向仍然是聚焦主业,围绕“双碳”、“数字经济”战略,不断加大产品研发及市场投入,坚持内生式增长与外延式并购相结合,促进主营业务稳步上行发展 当前信息

2023-05-06

5月6日正和石化石油焦价格平稳_天天热点评

2023-05-06

【世界速看料】世界体型最大的海龟是什么动物(世界体型最大的海龟是什么)

2023-05-06

【网连世界】实地探访法国博瓦勒动物园 看看即将回国的“圆梦”

2023-05-06

叙利亚霍姆斯省一天然气井开始生产活动 环球热闻

2023-05-06

三位“挖呀挖幼师”的三种境遇 世界即时看

2023-05-06

信用卡逾期能贷款买车吗?信用卡经常逾期会怎样? 世界今热点

2023-05-06

【报资讯】李稻葵:人工智能监管要靠中美协调合作

2023-05-06

世界热点!这一大省连续21小时负电价

2023-05-06

河马股份2022年亏损398.9万同比亏损减少 投资收益增加|当前信息

2023-05-06

每日速读!大流行已经过去!张文宏:正常的感觉特别好!

2023-05-06

【速看料】李佳琦面试75岁主播 网友:向勇敢的奶奶致敬

2023-05-06

内蒙古推广智能化育苗播种 省力又提效_快讯

2023-05-06

最高300万元!宁波推出零抵押“外贸贷”,护航小微外贸企业

2023-05-06

摘下有色眼镜看化工

2023-05-06

自行车也有"时尚新潮的未来" 上海自行车展开幕_天天热闻

2023-05-06

额温枪的正常体温是多少F表示什么(额温枪的正常体温是多少)-世界要闻

2023-05-06

乡镇政府党风廉政建设工作汇报 求2012年乡镇党风廉政建设工作总结

2023-05-06

环球热门:乌鸡怎么做好吃,还营养价值高

2023-05-06

对上级请求帮助的范文(11篇)

2023-05-06

“十四五”末朝阳区将建成100家博物馆

2023-05-06

优待证上门办!中塘镇网格员贴心做好退役军人服务保障

2023-05-06

【当前独家】装备全靠打的网游_装备靠打的网络游戏

2023-05-06

镉怎么读 镐怎么读 天天热头条

2023-05-06

“乌龙”水落石出!格力电器(000651.SZ)将董明珠的股份状态更正为“质押”-讯息

2023-05-05

【地评线】中安时评:“五一”假日让中国经济呈现“活力+火力”

2023-05-05

“五一”小长假收官 铁路共发送旅客1.33亿人次

2023-05-05

每日消息!湖南省瑶族文化研究会第一节学术委员会第一次会议在江永县举行

2023-05-05

环球滚动:修水县气象台发布雷电黄色预警信号【III级/较重】【2023-05-05】

2023-05-05

时讯:九丰能源: 公司目前经营正常,内外部经营环境未发生重大变化

2023-05-05

2023郑州金水区文化苑5月份还能再申请吗?|焦点关注

2023-05-05

【时快讯】东管电力2022年亏损898.32万同比由盈转亏 运费及人工成本增大导致销售毛利率降低

2023-05-05

东望时代:与广厦大学签订战略合作协议 世界独家

2023-05-05

世界消息!广州潮宏基周五(5月5日)黄金价格592元/克

2023-05-05

观察:社区委员竞选稿子 社区委员竞选稿

2023-05-05

银行业危机 债务违约——美国经济领域麻烦不断

2023-05-05

每日热闻!南京财经大学举办第一届劳动教育文化周

2023-05-05

世界快看点丨《顶楼》第一季一共多少集?《顶楼》第一季中闵雪雅究竟是谁杀的?

2023-05-05

环球快播:特斯拉又涨价!上调全新Model S及全新Model X售价

2023-05-05

pdf文件太大如何变小(如何改变pdf文件大小)|当前快播

2023-05-05

热点评!“总有人在爱着你”:被陌生人暖到的8个瞬间

2023-05-05

天天新消息丨石柱县三星乡:党建引领优化营商环境助力乡村振兴

2023-05-05

资讯:俄媒:英国国防部高官承认,存在援乌武器在交付前被转卖的情况

2023-05-05

证券开户流程教程_证券开户流程

2023-05-05

8组数字感受五一假期有多火爆|热头条

2023-05-05

陌生却常见的肺动脉高压,该如何识别? 天天快资讯

2023-05-05

顺丰“同城半日达”已扩至80城 覆盖所有超大城市

2023-05-05

津媒:津门虎尊重但不惧怕对手 对阵海港仍将“以我为主”

2023-05-05

河钢资源(000923):2023年5月4日投资者关系活动记录表 世界热文

2023-05-05

男子撞狗被村干部殴打 警方通报!这是有多大的仇恨吗?

2023-05-05

热点聚焦:瀚蓝环境:5月4日融资买入371.36万元,融资融券余额2.81亿元

2023-05-05

用好数学工具 解决力学难题(讲述·一辈子一件事)

2023-05-05

武汉农业科技信息数据库的建立与利用_关于武汉农业科技信息数据库的建立与利用简述|全球速递 当前看点

2023-05-05

稳定民营企业融资预期

2023-05-05

叶片结构示意图怎么画_叶片结构示意图 环球时讯

2023-05-05

环球聚焦:ess系统网址_ess系统

2023-05-05

海信5G手机又增加了一款 但参数配置一般! 全球短讯

2023-05-05

只狼雷汞位置大全_只狼雷汞哪里刷

2023-05-04

全球简讯:中信消费金融2022年净利润约8613万元

2023-05-04

一天一点普洱(2734)143.82万人次、13.88亿元!普洱“五一”假日迎来“人从众”热潮|世界聚焦

2023-05-04

中南建设:中南城投补充质押2000万股 被动减持99.2万股

2023-05-04

微头条丨天铁股份:签订3391万元橡胶减振垫买卖合同

2023-05-04

环球今亮点!向“智造”要效益要动能——从工厂车间透视一线生产提质增效

2023-05-04

上海夫妇拒绝“黑白灰”,把家装的清凉却温馨,网友:毫无违和感

2023-05-04

环球要闻:中国有色金属工业协会:预计二季度规上有色金属企业效益降幅收窄

2023-05-04

当前时讯:美女幼师挖呀挖呀爆火网络,嘉年华刷到流泪,堪比当年章泽天

2023-05-04

外媒:为了苹果订单,三星电子和LG显示大力扩充中型OLED面板产能 环球今亮点

2023-05-04

降温10℃!暴雨+雷暴大风!|世界报道

2023-05-04

五年级数学上册试卷题 五年级上册试卷数学试卷

2023-05-04

挖呀挖呀挖呀挖歌词完整版分享

2023-05-04

经济日报丨财经早餐【5月3日星期三】

2023-05-04

朋友朱煦 环球快播

2023-05-04

qq被冻结手机号换了怎么办申诉也不行 QQ被冻结了绑定的手机号换了怎么解冻-今日讯

2023-05-04

全效学习中考学练测九年级英语外研版参考答案

2023-05-04

中草药海马的作用与功效_中草药海马的作用与功效简述

2023-05-04

环球播报:哈登:我们在空间方面有问题 需更好站位让彼此都能更轻松地出手

2023-05-04

新资讯:简单早餐做法大全减脂_简单早餐做法大全

2023-05-04

2:1!挪威一哥连续两年进半决赛;唏嘘!纳达尔11次角逐难寻冠军

2023-05-04

九大建筑央企2023年计划新签合同额破16万亿

2023-05-04

全球视点!海信视像携手音视频国检中心发布行业首个《XDR评测技术规范》

2023-05-04

中国软件联合中国物流集团等共设数字科技公司 注册资本5亿元_每日消息

2023-05-04

国际油价再度大跌

2023-05-04

视讯!收到现金支票会计分录(收到支票会计分录)

2023-05-04

全球观热点:破14亿,五一档又见“几家欢喜几家愁”

2023-05-04

宝通科技等20只创业板股融资余额增幅超10%

2023-05-04

【世界快播报】河北区娇阳金钟美发创始人邢绍杰:心存高远 从“头”做起

2023-05-04

今日精选:我孩子上高中十八岁,因同学打架她去拉架反被误,导致现在有抑郁倾向

2023-05-04

“筝”奇斗艳 放飞快乐 世界快资讯

2023-05-04

九寨沟属于哪个省的城市_九寨沟属于哪个省_环球观察

2023-05-04

21记三分却无法取胜,湖人内线优势只是其一,还有一点让勇士绝望

2023-05-04