微服务自动化 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 集群

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

相关推荐
王彬泽3 小时前
【微服务】服务注册与发现、分布式配置管理 - Nacos
微服务·服务注册与发现·分布式配置管理
攸攸太上13 小时前
Spring Gateway学习
java·后端·学习·spring·微服务·gateway
南种北李16 小时前
Linux自动化构建工具Make/Makefile
linux·运维·自动化
一直在进步的派大星16 小时前
Docker 从安装到实战
java·运维·docker·微服务·容器
IG工程师19 小时前
关于 S7 - 1200 通过存储卡进行程序更新
经验分享·笔记·自动化
怒放的生命.1 天前
电器自动化入门08:隔离变压器、行程开关介绍及选型
运维·自动化·电气自动化·电工基础
我爱学Python!1 天前
基于 LangChain 的自动化测试用例的生成与执行
人工智能·自然语言处理·langchain·自动化·llm·测试用例·大语言模型
Gogeof1 天前
云原生化 - 基础镜像(简约版)
微服务·云原生·基础镜像
Gogeof1 天前
云原生化 - 旅程(简约版)
微服务·云原生
王彬泽1 天前
【微服务】负载均衡 - LoadBalance(day4)
微服务·负载均衡