当前位置:网站首页>ETCD容器化搭建集群
ETCD容器化搭建集群
2022-08-11 05:32:00 【!&君子九思&!】
系列文章目录
前言
本文介绍使用docker搭建一个etcd集群,附带对应的搭建脚本。我极力希望讲操作步骤和原理说明的尽量详细,能够让读者更容易理解。
一、环境信息
使用本地的vmstation创建3个虚拟机,信息如下
| 节点名称 | 节点IP | 节点配置 | 操作系统 | Etcd版本 | Docker版本 |
|---|---|---|---|---|---|
| etcd1 | 192.168.82.128 | 1c1g 20g | CentOS7.4 | v3.5 | 13.1 |
| etcd2 | 192.168.82.129 | 1c1g 20g | CentOS7.4 | v3.5 | 13.1 |
| etcd3 | 192.168.82.130 | 1c1g 20g | CentOS7.4 | v3.5 | 13.1 |
说明:服务器应该能够访问公网,以便能够下载对应的etcd镜像
二、搭建步骤
1.准备前置条件
1.1 安装Docker
代码如下(示例):
# 安装docker
yum install -y docker
# 重启docker
systemctl restart docker
# 验证docker
docker ps
备注,需要关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
1.2 拉取镜像
代码如下(示例):
# 拉取镜像
docker pull quay.io/coreos/etcd:v3.5.0
# 验证镜像
docker images|grep etcd
2.安装Etcd
2.1 新建目录
分别在3台机器上都新建目录 /data/etcd,用于挂载到容器中,能够讲etcd的数据持久化到本地磁盘。需要注意的是,再生产环境中尽可能的将etcd的数据目录单独挂载一个磁盘,磁盘的io性能越快越好。磁盘的io带宽尽量需要保证在40MByte/s以上。否则etcd会因为磁盘性能差,导致不断的切主或者无法完成基础的wal&snapshot写入,导致整体集群异常
2.2 编辑脚本
保存如下命令到脚本/data/start.sh,用于搭建etcd集群
代码如下(示例):
#! /bin/sh
name="etcd1"
host="192.168.92.128"
cluster="etcd1=http://192.168.92.128:2380,etcd2=http://192.168.92.129:2380,etcd3=http://192.168.92.130:2380"
docker run -d -p 2379:2379 -p 2380:2380 -v /data/etcd:/etcd-data/ --name $name --net=host quay.io/coreos/etcd:v3.5.0 /usr/local/bin/etcd --name $name --data-dir /data/etcd/data --listen-client-urls http://$host:2379 --advertise-client-urls http://$host:2379 --listen-peer-urls http://$host:2380 --initial-advertise-peer-urls http://$host:2380 --initial-cluster $cluster --initial-cluster-token tkn --initial-cluster-state new --log-level info --logger zap --log-outputs stderr
说明:分别在不同机器部署时,分别替换脚本中的host和name即可。
2.3 执行部署
分别在3个节点上,编辑和调整完脚本的host、name配置后,执行bash /data/start.sh命令,创建etcd集群。
三、结果验证
任意选一个节点,执行如下命令,进行集群验证,验证是否已经搭建完成。
代码如下(示例):
export ETCDCTL_API=3
export ETCD_ENDPOINTS=192.168.92.128:2379,192.168.92.129:2379,192.168.92.130:2379
/usr/local/bin/etcdctl --endpoints=192.168.92.128:2379 --write-out=table member list
/usr/local/bin/etcdctl --endpoints=$ETCD_ENDPOINTS --write-out=table endpoint status
注意 member list是记录整个集群中的所有节点信息。并不能反应集群当前的运行状态
endopont status是反应当前集群的运行状态,需要有Leader节点,并且datasize不为0,则说明集群搭建正常
总结
如果单机节点运行bash /data/start.sh后,可以通过执行docker ps -a|grep etcd验证容器是否创建。并通过docker logs ${dockerid}的方法查看日志
参考
边栏推荐
- Project Notes - Take Notes
- Threatless Technology-TVD Daily Vulnerability Intelligence-2022-7-31
- 【LeetCode-49】字母异位词分组
- Threatless Technology-TVD Daily Vulnerability Intelligence-2022-8-1
- UE4打包工程失败问题记录
- 无胁科技-TVD每日漏洞情报-2022-7-31
- 无胁科技-TVD每日漏洞情报-2022-7-28
- 2022年全国职业技能大赛网络安全竞赛试题B模块自己解析思路(3)
- Lua 快速入门(四)——多脚本执行
- 【LeetCode-13】罗马数字转整数
猜你喜欢
随机推荐
CLR via C# 第一章 CLR的执行模型
【LeetCode-74】搜索二维矩阵
【LeetCode-56】合并区间
【LeetCode-389】找不同
VirtualAPK初探
2022年全国职业技能大赛网络安全竞赛试题B模块自己解析思路(5)
Lua 快速入门(五)——协程(thread)
Lua 元表(Metatable)
Solve the problem that port 8080 is occupied
【LeetCode-75】 颜色分类
解决8080端口被占用问题
【力扣】同构字符串
【LeetCode-147】对链表进行插入排序
Unity Mesh、MeshFilter、MeshRenderer扫盲
非对称加密——网络安全
文本三剑客——sed 修改、替换
无胁科技-TVD每日漏洞情报-2022-7-21
BaseFragment的抽取
poco源码简单分析
Vulnhub靶机--Chronos





![[HTB]渗透Backdoor靶机](/img/fd/61fb3fe8498dec4462ee4156adb806.png)




