etcd 集群搭建【docker-compose】

文章目录

环境准备

IP ROLE ETCD_NAME
192.168.142.157 master etcd0
192.168.142.156 slave etcd1
192.168.142.155 slave02 etcd2
192.168.142.158 slave03 etcd3

部署

创建文件夹

复制代码
mkdir -p /docker/etcd/data

mkdir -p /docker/etcd/ca-certificates

进入文件夹

cd /docker/etcd

编辑 docker-compose.yml 文件

复制代码
services:
  etcd:
    image: bitnami/etcd
    container_name: etcd
    restart: always
    ports:
      - 4001:4001
      - 2380:2380
      - 2379:2379
    volumes:
      - /docker/etcd/ca-certificates/:/etc/ssl/certs
      - /docker/etcd/data:/bitnami/etcd/data
    environment:
      - TZ=Asia/Shanghai
      - ETCD_NAME=etcd0
      - ETCD_DATA_DIR=/bitnami/etcd/data
      - ETCD_ROOT_PASSWORD=123456
      - ETCD_CLIENT_CERT_AUTH=true
      - ETCD_PEER_CLIENT_CERT_AUTH=true
      - ETCD_ADVERTISE_CLIENT_URLS=http://192.168.142.157:2379,http://192.168.142.157:4001
      - ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379,http://0.0.0.0:4001
      - ETCD_INITIAL_ADVERTISE_PEER_URLS=http://192.168.142.157:2380
      - ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
      - ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster-1
      - ETCD_INITIAL_CLUSTER=etcd0=http://192.168.142.157:2380,etcd1=http://192.168.142.156:2380,etcd2=http://192.168.142.155:2380,etcd3=http://192.168.142.158:2380
      - ETCD_INITIAL_CLUSTER_STATE=new
      - ETCD_CERT_FILE=/etc/ssl/certs/etcd.crt
      - ETCD_KEY_FILE=/etc/ssl/certs/etcd.key
      - ETCD_TRUSTED_CA_FILE=/etc/ssl/certs/ca.crt
      - ETCD_PEER_CERT_FILE=/etc/ssl/certs/etcd.crt
      - ETCD_PEER_KEY_FILE=/etc/ssl/certs/etcd.key
      - ETCD_PEER_TRUSTED_CA_FILE=/etc/ssl/certs/ca.crt
      - ETCD_CLIENT_CERT_AUTH=true

所有主机的配置都差不多,略微差别,可以根据上述表格进行更改就行

生成密钥

具体操作请查看:etcd 快速入门

启动

复制代码
docker-compose.yml

查看集群成员

复制代码
docker exec -it etcd etcdctl --endpoints=http://192.168.142.157:2379 --user=root:123456 member list

查看节点状态

复制代码
docker exec -it etcd etcdctl --endpoints=http://192.168.142.157:2379 --user=root:123456 endpoint health

结果

复制代码
b7201f17edd745e, started, etcd2, http://192.168.142.155:2380, http://192.168.142.155:2379,http://192.168.142.155:4001, false
a3ece45ece93beee, started, etcd0, http://192.168.142.157:2380, http://192.168.142.157:2379,http://192.168.142.157:4001, true
e7c67df1418afbf6, started, etcd3, http://192.168.142.158:2380, http://192.168.142.158:2379,http://192.168.142.158:4001, false
f749462fb1703251, started, etcd1, http://192.168.142.156:2380, http://192.168.142.156:2379,http://192.168.142.156:4001, false

http://192.168.142.157:2379 is healthy: successfully committed proposal: took = 1.309654ms

看到这两个结果就说明集群部署基本成功了

检查

在主机点上插入数据

复制代码
docker exec -it etcd etcdctl --endpoints=http://192.168.142.157:2379 --user=root:123456 put /mykey "myValue"

在从节点上查看

复制代码
docker exec -it etcd etcdctl --endpoints=http://192.168.142.158:2379 --user=root:123456 get /mykey

返回

复制代码
/mykey
myvalue

配置解说

TZ=Asia/Shanghai: 设置容器的时区为上海时区。

ETCD_NAME=etcd0: 设置 etcd 节点的名称为 etcd0。

ETCD_DATA_DIR=/bitnami/etcd/data: 指定 etcd 存储数据的目录。

ETCD_ROOT_PASSWORD=123456: 设置 etcd 节点的根用户密码。注意:这不是官方 etcd 配置的一部分,可能是 Bitnami 镜像特有的设置。

ETCD_CLIENT_CERT_AUTH=true: 启用客户端证书认证。

ETCD_PEER_CLIENT_CERT_AUTH=true: 启用对等证书认证。

ETCD_ADVERTISE_CLIENT_URLS=http://192.168.142.157:2379,http://192.168.142.157:4001: 定义 etcd 节点向客户端广告的 URL,包括 HTTP 和 HTTPS 端口。

ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379,http://0.0.0.0:4001: 定义 etcd 节点监听客户端请求的 URL,包括 HTTP 和 HTTPS 端口。

ETCD_INITIAL_ADVERTISE_PEER_URLS=http://192.168.142.157:2380: 定义 etcd 节点向其他 etcd 节点广告的对等 URL。

ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380: 定义 etcd 节点监听来自其他 etcd 节点的对等请求的 URL。

ETCD_INITIAL_CLUSTER_TOKEN=etcd-cluster-1: 设置初始集群的令牌,用于集群成员之间的发现。

ETCD_INITIAL_CLUSTER=etcd0=http://192.168.142.157:2380,etcd1=http://192.168.142.156:2380,etcd2=http://192.168.142.155:2380,etcd3=http://192.168.142.158:2380: 定义初始集群的配置,包括每个成员的名称和对等 URL。

ETCD_INITIAL_CLUSTER_STATE=new: 设置集群的初始状态为 new,表示这是一个新集群。

ETCD_CERT_FILE=/etc/ssl/certs/etcd.crt: 指定 etcd 节点的客户端证书文件路径。

ETCD_KEY_FILE=/etc/ssl/certs/etcd.key: 指定 etcd 节点的客户端密钥文件路径。

ETCD_TRUSTED_CA_FILE=/etc/ssl/certs/ca.crt: 指定 etcd 节点信任的 CA 证书文件路径。

ETCD_PEER_CERT_FILE=/etc/ssl/certs/etcd.crt: 指定 etcd 节点的对等证书文件路径。

ETCD_PEER_KEY_FILE=/etc/ssl/certs/etcd.key: 指定 etcd 节点的对等密钥文件路径。

ETCD_PEER_TRUSTED_CA_FILE=/etc/ssl/certs/ca.crt: 指定 etcd 节点信任的对等 CA 证书文件路径。

ETCD_CLIENT_CERT_AUTH=true: 再次设置客户端证书认证为启用状态。

相关推荐
SunnyRivers12 天前
LangChain中间件详解
中间件·langchain
金刚猿12 天前
06_虚拟机中间件部署_xxl-job 部署
中间件·xxl-job·xxl-job-admin
Loo国昌14 天前
【AI应用开发实战】Guardrail风险控制中间件:Agent系统的安全防线
人工智能·python·安全·自然语言处理·中间件·prompt
键盘鼓手苏苏14 天前
Flutter for OpenHarmony: Flutter 三方库 ntp 精准同步鸿蒙设备系统时间(分布式协同授时利器)
android·分布式·算法·flutter·华为·中间件·harmonyos
Coder_Boy_14 天前
Java后端核心技术体系全解析(个人总结)
java·开发语言·spring boot·分布式·spring cloud·中间件
CN-David15 天前
CentOS搭建Mycat中间件
linux·mysql·中间件·centos·mariadb
三水不滴16 天前
消息队列消费性能优化:批量消费 + 手动 ACK 提升吞吐量
经验分享·笔记·中间件·性能优化
nix.gnehc16 天前
Go进阶攻坚+专家深耕级学习清单|聚焦高并发、高性能中间件/底层框架开发(Java开发者专属)
学习·中间件·golang
金刚猿17 天前
05_虚拟机中间件部署_ubuntu 系统 安装 Redis 7.0.15
redis·ubuntu·中间件
GEM的左耳返17 天前
Java面试深度剖析:从JVM到云原生的技术演进
jvm·spring boot·云原生·中间件·java面试·分布式架构·ai技术