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

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

相关推荐
漫谈网络24 分钟前
基于 Netmiko 的网络设备自动化操作
运维·自动化·netdevops·netmiko
编程一生1 小时前
微服务相比传统服务的优势
微服务·云原生·架构
亿坊电商2 小时前
PHP框架在微服务迁移中能发挥什么作用?
开发语言·微服务·php
工头阿乐7 小时前
Appium自动化开发环境搭建
运维·appium·自动化
Angindem8 小时前
SpringClound 微服务分布式Nacos学习笔记
分布式·学习·微服务
细心的莽夫16 小时前
SpringCloud 微服务复习笔记
java·spring boot·笔记·后端·spring·spring cloud·微服务
夸克App20 小时前
实现营销投放全流程自动化 超级汇川推出信息流智能投放产品“AI智投“
运维·人工智能·自动化
Rainbond云原生20 小时前
83k Star!n8n 让 AI 驱动的工作流自动化触手可及
运维·人工智能·自动化
YONG823_API20 小时前
深度探究获取淘宝商品数据的途径|API接口|批量自动化采集商品数据
java·前端·自动化
木觞清20 小时前
深度对比评测:n8n vs Coze(扣子) vs Dify - 自动化工作流工具全解析
运维·自动化