本文采用知识共享 署名-相同方式共享 4.0 国际 许可协议进行许可。
访问 https://creativecommons.org/licenses/by-sa/4.0/ 查看该许可协议。

1) 环境

  • Centos 7.2 +

2) 环境要求

  • CPU 要求
    • 小型集群: 2 - 4 Core
    • 大型集群: 8 - 16 Core
  • 内存
    • 普通并发:8G
    • 百万千万并发:16G - 64G
  • 磁盘: IOPS

3) 步骤

本文采用 1主 2从 架构搭建

  1. 安装 etcd

    yum install etcd -y
  2. 配置

    # 备份配置文件
    cp /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak
    # 防火墙配置
    firewall-cmd --add-port=2379/tcp --permanent
    firewall-cmd --add-port=2380/tcp --permanent
    firewall-cmd --reload
    # 编辑配置文件
    vim /etc/etcd/etcd.conf
    1. Master01
      localhost 全局替换为本机 IP

      ETCD_LISTEN_PEER_URLS="http://Master01的IP:2380"
      ETCD_LISTEN_CLIENT_URLS="http://Master01的IP:2379,http://127.0.0.1:2379"
      ETCD_NAME="Master01" 
      ETCD_INITIAL_ADVERTISE_PEER_URLS="http://Master01的IP:2380"
      ETCD_INITIAL_CLUSTER="Master01=http://Master01的IP:2380,Slave01=http://Slave01的IP:2380,Slave02=http://Slave02的IP:2380"
      ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
      ETCD_INITIAL_CLUSTER_STATE="new"
    2. Slave01
      localhost 全局替换为本机 IP

      ETCD_LISTEN_PEER_URLS="http://Slave01的IP:2380"
      ETCD_LISTEN_CLIENT_URLS="http://Slave01的IP:2379,http://127.0.0.1:2379"
      ETCD_NAME="Slave01" 
      ETCD_INITIAL_ADVERTISE_PEER_URLS="http://Slave01的IP:2380"
      ETCD_INITIAL_CLUSTER="Master01=http://Master01的IP:2380,Slave01=http://Slave01的IP:2380,Slave02=http://Slave02的IP:2380"
      ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
      ETCD_INITIAL_CLUSTER_STATE="new"
    3. Slave02
      localhost 全局替换为本机 IP

      ETCD_LISTEN_PEER_URLS="http://Slave02的IP:2380"
      ETCD_LISTEN_CLIENT_URLS="http://Slave02的IP:2379,http://127.0.0.1:2379"
      ETCD_NAME="Slave02" 
      ETCD_INITIAL_ADVERTISE_PEER_URLS="http://Slave02的IP:2380"
      ETCD_INITIAL_CLUSTER="Master01=http://Master01的IP:2380,Slave01=http://Slave01的IP:2380,Slave02=http://Slave02的IP:2380"
      ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
      ETCD_INITIAL_CLUSTER_STATE="new"
  3. 启动

    # 重启 etcd 并配置开机自启
    systemctl restart etcd
    systemctl enable etcd
    # 检查 member 状态
    etcdctl member list
    # 在 Master10 上 set 测试集群工作是否正常
    etcdctl set wars cat
    # 在 Slave 上 get 测试
    etcdctl get wars