拋棄 yum 教你如何手工搭建 etcd 集群

目標

搭建一套三節點的 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 集群搭建完畢
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容