etcd集群安装

  • 环境信息
ipIS LEADER
10.240.13.187true
10.240.13.137false
10.240.13.66false
  • 安装证书工具
curl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssl_1.5.0_linux_amd64 -o cfssl
curl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssljson_1.5.0_linux_amd64 -o cfssljson
curl -L https://github.com/cloudflare/cfssl/releases/download/v1.5.0/cfssl-certinfo_1.5.0_linux_amd64 -o cfssl-certinfo
chmod +x cfssl-certinfo cfssl cfssljson
mv cfssl-certinfo cfssl cfssljson /usr/local/bin
  • 创建证书目录
mkdir /usr/local/src/ssl -p
cd /usr/local/src/ssl
  • 配置ca
cat << EOF | tee ca-config.json
{
  "signing": {
    "default": {
      "expiry": "876000h"
    },
    "profiles": {
      "etcd": {
         "expiry": "876000h",
         "usages": [
            "signing",
            "key encipherment",
            "server auth",
            "client auth"
        ]
      }
    }
  }
}
EOF
  • ca证书
cat << EOF | tee ca-csr.json
{
    "CN": "etcd CA",
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {	
            "O": "etcd",
            "OU": "etcd Security",
            "C": "CN",
            "L": "Beijing",
            "ST": "Beijing"
        }
    ]
}
EOF
  • 生成ca证书
cfssl gencert -initca ca-csr.json | cfssljson -bare ca 
  • etcd证书配置
cat << EOF | tee server-csr.json
{
    "CN": "etcd",
    "hosts": [
	"127.0.0.1",
    "10.240.13.187",
    "10.240.13.66",
	"10.240.13.137"
    ],
    "key": {
        "algo": "rsa",
        "size": 2048
    },
    "names": [
        {
            "O": "etcd",
            "OU": "etcd Security",
            "C": "CN",
            "L": "Beijing",
            "ST": "Beijing"
        }
    ]
}
EOF
  • 生成etcd证书
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=etcd server-csr.json | cfssljson -bare server
  • 证书如下
总用量 36
-rw-r----- 1 etcd etcd  290 630 09:48 ca-config.json
-rw-r----- 1 etcd etcd 1009 630 09:48 ca.csr
-rw-r----- 1 etcd etcd  269 630 09:48 ca-csr.json
-rw------- 1 etcd etcd 1679 630 09:48 ca-key.pem
-rw-r----- 1 etcd etcd 1371 630 09:48 ca.pem
-rw-r----- 1 etcd etcd 1074 630 09:48 server.csr
-rw-r----- 1 etcd etcd  358 630 09:48 server-csr.json
-rw------- 1 etcd etcd 1679 630 09:48 server-key.pem
-rw-r----- 1 etcd etcd 1456 630 09:48 server.pem

  • 下载etcd安装包
https://github.com/etcd-io/etcd/releases/
  • 上传etcd-v3.5.4-linux-amd64.tar.gz到/usr/local/src下
  • 解压安装包
cd /usr/local/src
tar -zxvf etcd-v3.5.4-linux-amd64.tar.gz
mv etcd-v3.5.4-linux-amd64 /usr/local/etcd
  • 将etcd证书拷贝到etcd目录下
mv /usr/local/src/ssl /usr/local/etcd
  • etcd01配置文件
[root@10-240-13-187 etcd]# cat conf.yml 
name: etcd01 #节点名称 10.240.13.187是当前内网ip
data-dir: /usr/local/etcd/data
initial-advertise-peer-urls: https://10.240.13.187:2380
listen-peer-urls: https://10.240.13.187:2380
listen-client-urls: https://10.240.13.187:2379,https://127.0.0.1:2379
advertise-client-urls: https://10.240.13.187:2379
initial-cluster-token: shiajun-etcd-cluster
initial-cluster: etcd01=https://10.240.13.187:2380,etcd02=https://10.240.13.137:2380,etcd03=https://10.240.13.66:2380 #集群节点地址
client-transport-security:
  trusted-ca-file: /usr/local/etcd/ssl/ca.pem  
  cert-file: /usr/local/etcd/ssl/server.pem 
  key-file: /usr/local/etcd/ssl/server-key.pem 
  client-cert-auth: true
  auto-tls: false
peer-transport-security:
  cert-file: /usr/local/etcd/ssl/server.pem  
  key-file: /usr/local/etcd/ssl/server-key.pem
  trusted-ca-file: /usr/local/etcd/ssl/ca.pem 
  client-cert-auth: true
  auto-tls: false
  • etcd02配置文件
name: etcd02 #节点名称 10.240.13.137是当前内网ip
data-dir: /usr/local/etcd/data
initial-advertise-peer-urls: https://10.240.13.137:2380
listen-peer-urls: https://10.240.13.137:2380
listen-client-urls: https://10.240.13.137:2379,https://127.0.0.1:2379
advertise-client-urls: https://10.240.13.137:2379
initial-cluster-token: shiajun-etcd-cluster
initial-cluster: etcd01=https://10.240.13.187:2380,etcd02=https://10.240.13.137:2380,etcd03=https://10.240.13.66:2380 #集群节点地址
initial-cluster-state: new
client-transport-security:
  trusted-ca-file: /usr/local/etcd/ssl/ca.pem
  cert-file: /usr/local/etcd/ssl/server.pem
  key-file: /usr/local/etcd/ssl/server-key.pem
  client-cert-auth: true
  auto-tls: false
peer-transport-security:
  cert-file: /usr/local/etcd/ssl/server.pem
  key-file: /usr/local/etcd/ssl/server-key.pem
  trusted-ca-file: /usr/local/etcd/ssl/ca.pem
  client-cert-auth: true
  auto-tls: false

  • etcd03配置文件
[root@10-240-13-66 etcd]# cat conf.yml 
name: etcd03 #节点名称 10.240.13.66是当前内网ip
data-dir: /usr/local/etcd/data
initial-advertise-peer-urls: https://10.240.13.66:2380
listen-peer-urls: https://10.240.13.66:2380
listen-client-urls: https://10.240.13.66:2379,https://127.0.0.1:2379
advertise-client-urls: https://10.240.13.66:2379
initial-cluster-token: shiajun-etcd-cluster
initial-cluster: etcd01=https://10.240.13.187:2380,etcd02=https://10.240.13.137:2380,etcd03=https://10.240.13.66:2380 #集群节点地址
initial-cluster-state: existing
client-transport-security:
  trusted-ca-file: /usr/local/etcd/ssl/ca.pem
  cert-file: /usr/local/etcd/ssl/server.pem
  key-file: /usr/local/etcd/ssl/server-key.pem
  client-cert-auth: true
  auto-tls: false
peer-transport-security:
  cert-file: /usr/local/etcd/ssl/server.pem
  key-file: /usr/local/etcd/ssl/server-key.pem
  trusted-ca-file: /usr/local/etcd/ssl/ca.pem
  client-cert-auth: true
  auto-tls: false
  • 配置etcd启动项
[Unit]
Description=etcd
After=network.target

[Service]
Type=notify
User=root
Group=root
WorkingDirectory=/usr/local/etcd/
EnvironmentFile=/usr/local/etcd/conf.yml
ExecStart=/usr/local/etcd/etcd --config-file=/usr/local/etcd/conf.yml
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
  • 创建etcd用户并授权
groupadd etcd
useradd etcd -g etcd -d /usr/local/etcd -s /sbin/nologin
  • 三节点同时启动etcd
systemctl start etcd
systemctl status etcd
systemctl enable etcd
  • 集群命令
#查看集群状态
./etcdctl  -w table  --endpoints="http://10.240.13.137:2380,http://10.240.13.187:2380" endpoint status --cluster
#查看集群状态带证书
./etcdctl  -w table --cacert=./ssl/ca.pem --cert=./ssl/server.pem --key=./ssl/server-key.pem endpoint status --cluster
#查看成员状态
./etcdctl  -w table -cacert=./ssl/ca.pem --cert=./ssl/server.pem --key=./ssl/server-key.pem --endpoints="https://10.240.13.137:2380,https://10.240.13.187:2380,https://10.240.13.66:2380" member list
#查看节点状态
./etcdctl  -w table -cacert=./ssl/ca.pem --cert=./ssl/server.pem --key=./ssl/server-key.pem --endpoints="https://10.240.13.137:2380,https://10.240.13.187:2380,https://10.240.13.66:2380" endpoint health
  • 数据备份
#备份etcd数据
./etcdctl snapshot save ./etcd-snapshot-`date +%Y%m%d.db`
  • 数据恢复
恢复ectd01数据
./etcdctl  snapshot  restore etcd-snapshot-20220629.db \
--name=etcd01 \
--initial-cluster=etcd01=https://10.240.13.187:2380,etcd02=https://10.240.13.137:2380,etcd02=https://10.240.13.66:2380 \
--initial-cluster-token=shiajun-etcd-cluster \
--initial-advertise-peer-urls=https://10.240.13.187:2380 \
--data-dir=/usr/local/etcd/data

恢复ectd02数据
./etcdctl  snapshot  restore etcd-snapshot-20220629.db \
--name=etcd02 \
--initial-cluster=etcd01=https://10.240.13.187:2380,etcd02=https://10.240.13.137:2380,etcd02=https://10.240.13.66:2380 \
--initial-cluster-token=shiajun-etcd-cluster \
--initial-advertise-peer-urls=https://10.240.13.137:2380 \
--data-dir=/usr/local/etcd/data

恢复ectd03数据
./etcdctl  snapshot  restore etcd-snapshot-20220629.db \
--name=etcd03 \
--initial-cluster=etcd01=https://10.240.13.187:2380,etcd02=https://10.240.13.137:2380,etcd02=https://10.240.13.66:2380 \
--initial-cluster-token=shiajun-etcd-cluster \
--initial-advertise-peer-urls=https://10.240.13.66:2380 \
--data-dir=/usr/local/etcd/data
  • etcd新增节点
#主节点执行
./etcdctl -cacert=./ssl/ca.pem --cert=./ssl/server.pem --key=./ssl/server-key.pem  member add etcd04 --peer-urls="https://10.240.13.67:2380"
#新增节点
name: etcd04 #节点名称 10.240.13.67是当前内网ip
  • etcd04配置
[root@10-240-13-67 etcd]# cat conf.yml 
name: etcd04 #节点名称 10.240.13.67是当前内网ip
data-dir: /usr/local/etcd/data
initial-advertise-peer-urls: https://10.240.13.67:2380
listen-peer-urls: https://10.240.13.67:2380
listen-client-urls: https://10.240.13.67:2379,https://127.0.0.1:2379
advertise-client-urls: https://10.240.13.67:2379
initial-cluster-token: shiajun-etcd-cluster
initial-cluster: etcd01=https://10.240.13.187:2380,etcd02=https://10.240.13.137:2380,etcd03=https://10.240.13.66:2380,etcd04=https://10.240.13.67:2380 #集群节点地址
initial-cluster-state: existing
client-transport-security:
  trusted-ca-file: /usr/local/etcd/ssl/ca.pem
  cert-file: /usr/local/etcd/ssl/server.pem
  key-file: /usr/local/etcd/ssl/server-key.pem
  client-cert-auth: true
  auto-tls: false
peer-transport-security:
  cert-file: /usr/local/etcd/ssl/server.pem
  key-file: /usr/local/etcd/ssl/server-key.pem
  trusted-ca-file: /usr/local/etcd/ssl/ca.pem
  client-cert-auth: true
  auto-tls: false
  • 启动etcd04
systemctl start etcd
systemctl status etcd
systemctl enable etcd
  • 其他三节点加入etcd04节点
initial-cluster: etcd01=https://10.240.13.187:2380,etcd02=https://10.240.13.137:2380,etcd03=https://10.240.13.66:2380,etcd04=https://10.240.13.67:2380 #集群节点地址
  • 其他三节点重启etcd
systemctl restart etcd
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值