微服务自动化 etcd集群搭建

静态部署(前提)

它需要开多个虚拟机 那我们就找到你使用的那个虚拟机复制(强调两个主机都已经安装好了etcd服务并且能够正常运行)

不是复制就可以使用 我们需要把里面的不是vmdk和vmx的文件删了

然后再回到我们的虚拟机,鼠标右键选择打开

然后启动虚拟机它会提示我们是否已知虚拟机被复制选择已知复制该虚拟机就行 (选第一个就会默认IP一样的)

进来输入ifconfig查看IP 再到外部进行连接

连接之后我们在两个里面输入systemctl status etcd的状态

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

静态发现:

预先已知etcd集群中有哪些节点,在启动时通过--initial-cluster参数直接指定好etcd的各个节点地址

etcd动态发现:

静态配置前提是在搭建集群之前已经提前知道各节点的信息,而实际应用中可能存在预先并不知道各节点ip的情况, 这时可通过已经搭建的etcd来辅助搭建新的etcd集群。通过已有的etcd集群作为数据交互点,然后在扩展新的集群时 实现通过已有集群进行服务发现的机制。比如官方提供的:discovery.etcd.io

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

集群搭建

1.安装服务(参考http://t.csdnimg.cn/oZeA6

2.先删除/var/lib/etcd目录

cd /var/lib/etcd && rm -rf *

修改vim /etc/etcd/etcd.conf 文件 (注意:记得里面IP要改成自己的哦)

#[Member]

#1.节点名称,必须唯一

ETCD_NAME="etcd01"

#2.设置数据保存的目录

ETCD_DATA_DIR="/var/lib/etcd"

#3.用于监听其他etcd member的url

ETCD_LISTEN_PEER_URLS="http://192.168.27.128:2380"

#4.该节点对外提供服务的地址

ETCD_LISTEN_CLIENT_URLS="http://192.168.27.129:2379,http://127.0.0.1:2379"

#[Clustering]

#1.对外公告的该节点客户端监听地址

ETCD_ADVERTISE_CLIENT_URLS="http://192.168.27.129:2379"

#2.该节点成员对等URL地址,且会通告集群的其余成员节点

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.27.129:2380"

#3.集群中所有节点的信息

ETCD_INITIAL_CLUSTER="etcd01=http://192.168.27.128:2380,etcd02=http://192.168.27.129:2380"

#4.创建集群的token,这个值每个集群保持唯一

ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"

#5.初始集群状态,新建集群的时候,这个值为new;

ETCD_INITIAL_CLUSTER_STATE="new"

#6.flannel操作etcd使用的是v2的API,而kubernetes操作etcd使用的v3的API

#为了兼容flannel,将默认开启v2版本,故配置文件中设置

ETCD_ENABLE_V2="true"

打开两个主机的防火墙端口:

步骤一:firewall-cmd --zone=public --add-port=2379/tcp --permanent

步骤二:firewall-cmd --zone=public --add-port=2380/tcp --permanent

步骤三:firewall-cmd --reload

步骤四:firewall-cmd --list-port

我们在启动一下: systemctl start etcd

然后我们在第二个主机里面输入:systemctl stop etcd

先删除/var/lib/etcd目录

cd /var/lib/etcd && rm -rf *

编辑vim /etc/etcd/etcd.conf (然后把里面的128替换成129)

#[Member]

#1.节点名称,必须唯一

ETCD_NAME="etcd02(第二个主机)"

#2.设置数据保存的目录

ETCD_DATA_DIR="/var/lib/etcd(自己的目录)"

#3.用于监听其他etcd member的url

ETCD_LISTEN_PEER_URLS="http://192.168.27.128:2380"

#4.该节点对外提供服务的地址

ETCD_LISTEN_CLIENT_URLS="http://192.168.27.129:2379,http://127.0.0.1:2379"

#[Clustering]

#1.对外公告的该节点客户端监听地址

ETCD_ADVERTISE_CLIENT_URLS="http://192.168.27.129:2379"

#2.该节点成员对等URL地址,且会通告集群的其余成员节点

ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.27.129:2380"

#3.集群中所有节点的信息

ETCD_INITIAL_CLUSTER="etcd01=http://192.168.27.128:2380,etcd02=http://192.168.27.129:2380"

#4.创建集群的token,这个值每个集群保持唯一

ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"

#5.初始集群状态,新建集群的时候,这个值为new;

ETCD_INITIAL_CLUSTER_STATE="new"

#6.flannel操作etcd使用的是v2的API,而kubernetes操作etcd使用的v3的API

#为了兼容flannel,将默认开启v2版本,故配置文件中设置

ETCD_ENABLE_V2="true"

搞完之后我们分别在两个主机里面输入 systemctl start etcd

查看集群:etcd member list

拼上 -w table 它就是以表格的形式

然后试一下在第一个主机里面输入etcdctl put /spring/name root

在第二个主机里面输入 etcdctl get /spring/name

以上就是虚拟机的版本


接下来就是docker版本

镜像

docker pull quay.io/coreos/etcd:v3.3.1

创建一个网关

docker network create --subnet 172.19.0.0/16 ots

创建第一个主机

docker run -d \

-p 2379:2379 -p 2380:2380 \

--name node1 --network=ots \

--ip 172.19.0.110 \

quay.io/coreos/etcd:v3.3.1 \

etcd \

-name node1 \

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

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

-listen-client-urls http://0.0.0.0:2379 -listen-peer-urls http://0.0.0.0:2380 \

-initial-cluster-token etcd-cluster \

-initial-cluster "node1=http://172.19.0.110:2380,node2=http://172.19.0.120:2380,node3=http://172.19.0.130:2380" \

-initial-cluster-state new
创建第二个主机

docker run -d \

--name node2 --network=ots \

--ip 172.19.0.120 \

quay.io/coreos/etcd:v3.3.1 \

etcd \

-name node2 \

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

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

-listen-client-urls http://0.0.0.0:2379 -listen-peer-urls http://0.0.0.0:2380 \

-initial-cluster-token etcd-cluster \

-initial-cluster "node1=http://172.19.0.110:2380,node2=http://172.19.0.120:2380,node3=http://172.19.0.130:2380" \

-initial-cluster-state new
创建第三个主机

docker run -d \

-p 2579:2379 -p 2580:2380 \

--name node3 --network=ots \

--ip 172.19.0.130 \

quay.io/coreos/etcd:v3.3.1 \

etcd \

-name node3 \

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

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

-listen-client-urls http://0.0.0.0:2379 -listen-peer-urls http://0.0.0.0:2380 \

-initial-cluster-token etcd-cluster \

-initial-cluster "node1=http://172.19.0.110:2380,node2=http://172.19.0.120:2380,node3=http://172.19.0.130:2380" \

-initial-cluster-state new

创建之后我们在查看一下主机:docker ps

然后我们重新启动一下:docker restart {node1,node2,node3}

进入第一个主机:docker exec -it node1 sh 新开一个

进入之后输入etcdctl set /spring/name root
进入第一个主机:docker exec -it node2 sh 新开一个

进入之后输入:etcdctl get /spring/name
进入第一个主机:docker exec -it node3 sh

进入之后输入:etcdctl get /spring/name

然后关闭第一个主机:docker stop node1

然后我们查看:etcdctl memner list

--listen-client-urls #监听 URL;用于与客户端通讯

--listen-peer-urls #监听 URL;用于与其他节点通讯

--initial-advertise-peer-urls #告知集群其他节点 URL

--advertise-client-urls #告知客户端 URL

--initial-cluster-token #集群的 ID

--initial-cluster #集群中所有节点

--initial-cluster-state new #表示从无到有搭建 etcd 集群

如果虚拟机带不动 我们就可以使用这个方式

相关推荐
qq_452396231 小时前
第十五篇:《UI自动化中的稳定性优化:解决flaky tests的七种武器》
运维·ui·自动化
wapicn991 小时前
微服务架构下的数据核验设计,API接入最佳实践
微服务·云原生·架构
云飞云共享云桌面3 小时前
东莞智能装备工厂数字化实践—研发部门10名SolidWorks设计共享一台云主机流畅设计
服务器·自动化·汽车·负载均衡·制造
福大大架构师每日一题5 小时前
openclaw v2026.4.24 发布:Google Meet 深度集成、DeepSeek V4 上线、浏览器自动化与插件架构全面升级
运维·架构·自动化·openclaw
实在智能RPA5 小时前
金融行业财务审核自动化工具推荐:2026企业级AI Agent与智能合规选型指南
人工智能·ai·金融·自动化
Agent产品评测局5 小时前
生产排期与MES/ERP系统打通,实操方法详解 —— 2026企业级智能体自动化选型与实战指南
java·运维·人工智能·ai·chatgpt·自动化
面汤放盐6 小时前
从单体架构到微服务架构:模式与最佳实践
微服务·云原生·架构
chaofan9808 小时前
GPT-5.5 领衔 Image 2.0:像素级控制时代,AI 绘图告别开盲盒
开发语言·人工智能·python·gpt·自动化·api
星恒讯工业路由器8 小时前
配网自动化多网融合应用解决方案
运维·自动化
智慧物业老杨8 小时前
智慧物业收费系统的数智化落地实践:从人工硬扛到自动化闭环
运维·自动化