美文网首页程序员
抛弃 yum 教你如何手工搭建 etcd 集群

抛弃 yum 教你如何手工搭建 etcd 集群

作者: 谢烟客 | 来源:发表于2017-08-11 10:13 被阅读2384次

    目标

    搭建一套三节点的 etcd 高可用集群

    资源准备

    • 准备三台 Linux 服务器:
    1. 192.168.9.1
    2. 192.168.9.2
    3. 192.168.9.3
    • 下载 etcd-v3.2.5
    • etcd:由于 raft 算法的特性,集群的节点数必须是奇数

    服务器初始化

    1. 三台服务器分别创建 etcd 用户并指定 gid 为:etcd

    etcd 集群配置

    • 分别在三台服务器创建 conf、data、bin 目录:

    etcd@XXXX$ mkdir -p /home/etcd/{conf,data,bin}

    • 将 etcd-v3.2.5-linux-amd64.tar.gz 分别上传至三台服务器中,解压后将 etcdctl、etcd 复制到 /home/etcd/bin 目录下,并将 /home/etcd/bin 目录配置到系统环境变量下
    • 三台服务器分别编辑 systemd 启动文件:

    使用 root 用户编辑: vi /usr/lib/systemd/system/etcd.service

    [Unit]
    Description=Etcd Server
    After=network.target
    After=network-online.target
    Wants=network-online.target
    
    [Service]
    Type=notify
    WorkingDirectory=/home/etcd/data
    EnvironmentFile=-/home/etcd/conf/etcd.conf
    User=etcd
    ExecStart=/bin/bash -c "GOMAXPROCS=$(nproc) /home/etcd/bin/etcd \
      --name ${ETCD_NAME} \
      --initial-advertise-peer-urls ${ETCD_INITIAL_ADVERTISE_PEER_URLS} \
      --listen-peer-urls ${ETCD_LISTEN_PEER_URLS} \
      --listen-client-urls ${ETCD_LISTEN_CLIENT_URLS},http://127.0.0.1:2379 \
      --advertise-client-urls ${ETCD_ADVERTISE_CLIENT_URLS} \
      --initial-cluster-token ${ETCD_INITIAL_CLUSTER_TOKEN} \
      --initial-cluster ${ETCD_CLUSTER_ADDRESS} \
      --initial-cluster-state new \
      --data-dir=${ETCD_DATA_DIR}"
    Restart=on-failure
    LimitNOFILE=65536
    
    [Install]
    WantedBy=multi-user.target
    
    • 通过 etcd 用户编辑 etcd 的启动参数文件:

    vi /home/etcd/conf/etcd.conf

    • 规划三个节点 etcd name 分别为:etcd1、etcd2、etcd3
    • 下列配置文件内容中包含中文处需要根据当前服务器实际信息进行修改,ETCD_CLUSTER_ADDRESS 的值也要根据自己实际的 IP 就行修改,切记请勿直接 copy 后就立即使用
    # [member]
    ETCD_NAME=当前节点的etcd name,例如:etcd1
    ETCD_DATA_DIR="/home/etcd/data"
    ETCD_LISTEN_PEER_URLS="http://当前服务器IP:2380"
    ETCD_LISTEN_CLIENT_URLS="http://当前服务器IP:2379"
    #ETCD_WAL_DIR=""
    #ETCD_SNAPSHOT_COUNT="10000"
    #ETCD_HEARTBEAT_INTERVAL="100"
    #ETCD_ELECTION_TIMEOUT="1000"
    #ETCD_MAX_SNAPSHOTS="5"
    #ETCD_MAX_WALS="5"
    #ETCD_CORS=""
    
    #[cluster]
    ETCD_INITIAL_ADVERTISE_PEER_URLS="http://当前服务器IP:2380"
    ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
    ETCD_ADVERTISE_CLIENT_URLS="http://当前服务器IP:2379"
    ETCD_CLUSTER_ADDRESS="etcd1=http://192.168.9.1:2380,etcd2=http://192.168.9.2:2380,etcd3=http://192.168.9.3:2380"
    
    #ETCD_INITIAL_ADVERTISE_PEER_URLS="http://localhost:2380"
    # if you use different ETCD_NAME (e.g. test), set ETCD_INITIAL_CLUSTER value for this name, i.e. "test=http://..."
    #ETCD_INITIAL_CLUSTER="default=http://localhost:2380"
    #ETCD_INITIAL_CLUSTER_STATE="new"
    #ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
    #ETCD_ADVERTISE_CLIENT_URLS="http://localhost:2379"
    #ETCD_DISCOVERY=""
    #ETCD_DISCOVERY_SRV=""
    #ETCD_DISCOVERY_FALLBACK="proxy"
    #ETCD_DISCOVERY_PROXY=""
    #ETCD_STRICT_RECONFIG_CHECK="false"
    #ETCD_AUTO_COMPACTION_RETENTIO:N="0"
    #
    #[proxy]
    #ETCD_PROXY="off"
    #ETCD_PROXY_FAILURE_WAIT="5000"
    
    • 通过 systemctl 启动 etcd,分别在三台服务器上通过 root 组用户执行:
    1. systemctl daemon-reload
    2. systemctl start etcd

    • 集群健康状态检测
    1. 任意一台服务器上通过 etcd 用户执行:etcdctl cluster-health
      如果三个节点状态都是 is healthy,证明 etcd 集群搭建完毕

    相关文章

      网友评论

        本文标题:抛弃 yum 教你如何手工搭建 etcd 集群

        本文链接:https://www.haomeiwen.com/subject/wfphrxtx.html