【etcd】集群部署

一、环境准备

  1. 操作系统:建议使用Ubuntu 18.04 LTS或其他支持Docker的Linux发行版。
  2. 硬件要求:至少三台机器,每台机器两核CPU、2GB内存。
  3. 网络要求:集群内机器之间网络互通,建议使用内网。
  4. 安装Docker:请参考Docker官方文档进行安装。

二、安装etcd

参见 【etcd 编译与安装】。

  1. 创建集群配置文件:
    在etcd目录下创建etcd.yaml,配置如下:
yaml 复制代码
cluster:
  name: my-etcd-cluster
  peers:
    - peer-urls:
        - "http://192.168.1.101:2380"
        - "http://192.168.1.101:2379"
        name: "etcd-1"
      client-urls:
        - "http://192.168.1.101:2379"
    - peer-urls:
        - "http://192.168.1.102:2380"
        - "http://192.168.1.102:2379"
        name: "etcd-2"
      client-urls:
        - "http://192.168.1.102:2379"
    - peer-urls:
        - "http://192.168.1.103:2380"
        - "http://192.168.1.103:2379"
        name: "etcd-3"
      client-urls:
        - "http://192.168.1.103:2379"

修改配置文件中的IP地址为你的集群内机器的IP地址。

  1. 启动etcd集群:

在etcd目录下,为每个节点创建一个启动脚本,例如start-etcd-1.shstart-etcd-2.shstart-etcd-3.sh,内容如下:

bash 复制代码
#!/bin/bash
cd /path/to/etcd
./etcd --name=$1 --data-dir=/path/to/data --listen-client-urls="http://0.0.0.0:2379" --advertise-client-urls="http://$2:2379" --listen-peer-urls="http://0.0.0.0:2380" --initial-cluster=$3 --initial-cluster-token=my-etcd-cluster-token --initial-cluster-state=new

/path/to/etcd替换为etcd的安装路径,/path/to/data替换为etcd数据目录的路径,$1替换为节点名称,$2替换为节点IP地址,$3替换为集群配置文件中的peers部分。

在每个节点上执行对应的启动脚本,例如:

bash 复制代码
bash start-etcd-1.sh etcd-1 192.168.1.101
bash start-etcd-2.sh etcd-2 192.168.1.102
bash start-etcd-3.sh etcd-3 192.168.1.103

三、验证集群状态

  1. 安装etcdctl

    curl -L https://github.com/etcd-io/etcd/releases/download/v3.5.0/etcd-v3.5.0-linux-amd64.tar.gz | tar xz -C /tmp
    mv /tmp/etcd-v3.5.0-linux-am

相关推荐
heartbeat..4 小时前
Spring AOP 全面详解(通俗易懂 + 核心知识点 + 完整案例)
java·数据库·spring·aop
麦聪聊数据6 小时前
MySQL并发与锁:从“防止超卖”到排查“死锁”
数据库·sql·mysql
AC赳赳老秦7 小时前
DeepSeek 私有化部署避坑指南:敏感数据本地化处理与合规性检测详解
大数据·开发语言·数据库·人工智能·自动化·php·deepseek
YMatrix 官方技术社区8 小时前
YMatrix 存储引擎解密:MARS3 存储引擎如何超越传统行存、列存实现“时序+分析“场景性能大幅提升?
开发语言·数据库·时序数据库·数据库架构·智慧工厂·存储引擎·ymatrix
辞砚技术录9 小时前
MySQL面试题——索引2nd
数据库·mysql·面试
linweidong9 小时前
C++thread pool(线程池)设计应关注哪些扩展性问题?
java·数据库·c++
欧亚学术10 小时前
突发!刚刚新增17本期刊被剔除!
数据库·论文·sci·期刊·博士·scopus·发表
黑白极客10 小时前
怎么给字符串字段加索引?日志系统 一条更新语句是怎么执行的
java·数据库·sql·mysql·引擎
大厂技术总监下海10 小时前
数据湖加速、实时数仓、统一查询层:Apache Doris 如何成为现代数据架构的“高性能中枢”?
大数据·数据库·算法·apache
LeenixP11 小时前
RK3576-Debian12删除userdata分区
linux·运维·服务器·数据库·debian·开发板