Etcd 快速搭建一个 etcd 集群的两个方法

本文介绍了如何在Linux环境中快速搭建ETCD 3.5集群,包括下载预编译文件、配置数据目录、日志存储、设置集群节点等步骤。通过配置文件或systemd服务启动ETCD,详细解析了配置参数,如心跳间隔、选举超时等,并强调了关闭防火墙和SELinux的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近一直在学习ETCD,搭建一个快速的学习环境是最重要的,官方给了一些搭建的方法,通过git 的方式。这边没有采用,还是使用传统的老的方法。

下载已经编译好的文件,直接放到3台虚拟机中的LINUX 中的 /usr/local/etcd 目录中, 并建立/data  数据和日志存储的目录

b660765ee69dec4cde3460289a79e82f.png

本身etcd 的执行文件由三个文件组成,etcd  etcdctl  etcdutl, 老的ETCD 版本只有两个文件,服务执行文件 etcd 和 客户端文件 etcdutl ,这边新的版本添加了 etcdutl 其中部分功能代替了 etcdctl 的部分功能。

目前ETCD 支持两个版本 V2  V3  ,V2 提供的是纯内存的方式进行数据存储,V3 采用的方法是对数据持久化的数据存储方式。

这边先跳过ETCD 以及分布式的原理,先来简单的部署一个ETCD的3节点的集群。将从ETCD 官方网站上下载的文件都放到/usr/local/etcd/中后,就需要对ETCD的数据目录,以及日志目录,和配置文件进行设置。

这边以ETCD 3.5 为基础,一下是配置文件中的配置项,当然也可以将这些配置项写到执行命令的参数中。

name: 每个ETCD都有自己的节点名字,这个与节点初始化有关,在给定名字后尽量就不要在修改了,一般以主机名,同一个集群中的节点名字不要重复。

 绑定的变量为  ETCD_NAME

data-dir: 数据目录,ETCD 自V3后数据是存储在物理磁盘上的,所以需要设置ETCD的数据目录

wal-dir:这个指的是ETCD的日志存储的目录 ,数据是定期刷到磁盘上的,但保证数据在单点的数据安全性,就需要与传统数据库一样,将数据的操作在写入的时刻,用日志的方式写到磁盘介质。

snapshot-count :这里是的是写入多少数据这里以transaction作为触发的单位,达到一定程度后,就直接触发将数据写到磁盘上,这里默认的值为100000

heartbeat-interval 在集群中多个节点要判断对方是否正常就需要定期的发送心跳,通过心跳来证明自己或对方节点的是否在线,心跳这里默认值是100 单位毫秒

election-timeout  在集群中当主节点失效后,就会存在一个问题,从新选举出来一个主节点失败后的超时时间。

initial-election-tick-advance  提高选举的初始化的速度,默认为true,在跨数据中心的初始化选举中,如果默认为true则会降低整体的分布式数据中心的选择过程

listen-peer-urls  listen-peer-urls 相当于监听地址

listen-client-urls  监听客户访问的地址,这个与上面的地址不能一样,一般以端口号进行分割

max-snapshots 保留snapshot 文件的数量默认为5个

initial-advertise-peer-urls     在集群中自己标明的访问地址

initial-cluster    这里写清楚集群中的每个节点的地址

initial-cluster-state   初始化集群的状态,如果是第一次状态都设置为NEW

initial-cluster-token 初始etcd集群的令牌

advertise-client-usrls 通告给其他客户端的集群的服务地址

基本上初次搭建ETCD 使用上面的配置就已经足够了

这里确认关闭防火墙,设置好selinux 

systemctl stop firewalld
systemctl disable firewalld

安装方法  1   使用配置文件的方法

在三台服务器中的 /etc/目录下建立etcd.conf 或者 etcd,yml 问题文件并将下面的内容粘贴到每个服务器的文件中,这里注意标注粗体的在每个服务器上都不一样。

name: 'etcd2'

data-dir: '/data'

wal-log: '/wal'

snapshot-count: 10000

heartbeat-interval: 100

election-timeout: 1000

listen-peer-urls: 'http://192.168.198.101:2380'

listen-client-urls: 'http://192.168.198.101:2379'

max-snapshots: 5

max-wals: 5

cors:

initial-advertise-peer-urls: 'http://192.168.198.101:2380'

advertise-client-urls: 'http://192.168.198.101:2379'

initial-cluster: 'etcd1=http://192.168.198.100:2380,etcd2=http://192.168.198.101:2380,etcd3=http://192.168.198.102:2380'

initial-cluster-token: 'etcd'

initial-cluster-state: 'new'

strict-reconfig-check: false

enable-v2: true

enable-pprof: true

debug: false

logger: zap

log-outputs: [stderr]

~                         

然后直接在每个机器上执行ETCD 命令启动ETCD 

 etcd --config-file /etc/etcd.conf > /wal/etcd1.log 2>&1 &

启动后可以从三个节点中,找到哪个是leader

134e0819948b274a9e420555aaa99c08.png

这是第一种简易的安装方法,这个方法好的地方是安装简单方便,但不好的地方是每次启动和关闭都比较麻烦。

下面是第二种安装的方法, 这个方法本身是通过service中的配置进行的,加粗的地方是需要根据服务器的状态进行变化的

cat << EOF > /lib/systemd/system/etcd.service

[Unit]

Description=etcd service

Documentation=https://github.com/coreos/etcd

[Service]

User=root

Type=notify

ExecStart=/usr/local/etcd \\

 --name etcd-3 \\

 --data-dir /data \\

 --initial-advertise-peer-urls http://192.168.198.102:2380 \\

 --listen-peer-urls http://192.168.198.102:2380 \\

 --listen-client-urls http://192.168.198.102:2379,http://127.0.0.1:2379 \\

 --advertise-client-urls http://192.168.198.102:2379 \\

 --initial-cluster-token etcd-cluster \\

 --initial-cluster etcd-1=http://192.168.198.100:2380,etcd-2=http://192.168.198.101:2380,etcd-3=http://192.168.198.102:2380 \\

 --initial-cluster-state new \\

 --heartbeat-interval 1000 \\

 --election-timeout 5000

Restart=on-failure

RestartSec=5

[Install]

WantedBy=multi-user.target

EOF

通过将这些服务注册到系统中,打开ETCD

sudo systemctl daemon-reload

sudo systemctl enable etcd

sudo systemctl start etcd

同样ETCD 也可以被启动和运行。

1fa08697e2948bd1215ab0000f8e20e2.png

d83865a89642012c331f28d6163ada25.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值