文章目录
- 一、环境准备
- 二、安装部署
-
- [2.1 下载安装包](#2.1 下载安装包)
- [2.2 将etcd和etcdctl复制到/usr/local/bin中](#2.2 将etcd和etcdctl复制到/usr/local/bin中)
- [2.3 创建目录并赋予权限](#2.3 创建目录并赋予权限)
- [2.4 修改节点配置](#2.4 修改节点配置)
-
- [2.4.1 配置etcd.conf文件](#2.4.1 配置etcd.conf文件)
- [2.4.2 配置/etc/systemd/system/etcd.service文件](#2.4.2 配置/etc/systemd/system/etcd.service文件)
- [2.5 启动ectd服务](#2.5 启动ectd服务)
- [2.6 查看集群成员信息](#2.6 查看集群成员信息)
- [2.7 查看集群状态](#2.7 查看集群状态)
在生产环境中,为了整个集群的高可用,etcd 正常都会集群部署,避免单点故障。 etcd 集群的启动有以下三种机制:
静态启动
预先已知etcd集群中有哪些节点,在启动时通过--initial-cluster参数直接指定好etcd的各个节点地址
etcd 动态发现
静态配置前提是在搭建集群之前已经提前知道各节点的信息,而实际应用中可能存在预 先并不知道各节点ip的情况,这时可通过已经搭建的etcd来辅助搭建新的etcd集群。通过 已有的etcd集群作为数据交互点,然后在扩展新的集群时,实现通过已有集群进行服务发 现的机制。比如官方提供的:discovery.etcd.io
DNS 发现
通过DNS查询方式获取其他节点地址信息
一、环境准备
操作系统:red hat 7.9
cpu架构:amd64
etcd版本:v3.3.18
主机名 | IP | cpu数量 | 内存 |
---|---|---|---|
etcd-1 | 192.168.80.40 | 2 | 4 |
etcd-2 | 192.168.80.39 | 2 | 4 |
etcd-3 | 192.168.80.55 | 2 | 4 |
二、安装部署
2.1 下载安装包
三台节点都执行
powershell
wget https://github.com/etcd-io/etcd/releases/download/v3.3.18/etcd-v3.3.18-linux-amd64.tar.gz
这里如果报错拒绝连接:
解决办法: 配置DNS服务
vim /etc/resolv.conf
nameserver 114.114.114.114
nameserver 8.8.8.8
nameserver 8.8.4.4
解压
powershell
tar -xvf etcd-v3.3.18-linux-amd64.tar.gz
#进入主目录查看文件
主要有两个文件etcd和etcdctl,etcd用于启动服务,etcdctl属于客户端命令行工具
powershell
#进入解压包目录查看etcd版本
cd etcd-v3.3.18-linux-amd64/
./etcdctl --version
可以看到api默认版本是V2,如果要切换到V3版本需要修改环境变量,将/etc/profile文件里的ETCDCTL_API设为3:
powershell
vim /etc/profile
#使配置文件生效
source /etc/profile
不同版本的命令使用不一样,我这里就不修改了。
2.2 将etcd和etcdctl复制到/usr/local/bin中
将etcd和etcdctl复制到/usr/local/bin中,方便在任何目录下直接用调用
powershell
cp etcd etcdctl /usr/local/bin/
2.3 创建目录并赋予权限
powershell
#创建systemd的工作目录
mkdir -m 777 /var/lib/etcd
#创建etcd的数据存储目录
mkdir -m 777 /var/lib/etcd/data
2.4 修改节点配置
2.4.1 配置etcd.conf文件
/etc目录下新建etcd目录,再新建etcd.conf文件
powershell
cd /etc
mkdir etcd
cd etcd
touch etcd.conf
配置/etc/etcd/etcd.conf文件:
etcd-1:
powershell
vim /etc/etcd/etcd.conf
ETCD_NAME="etcd-1"
ETCD_DATA_DIR="/var/lib/etcd/data"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://49.111.111.111:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://172.17.0.15:2379,http://localhost:2379"
ETCD_INITIAL_CLUSTER="etcd-1=http://49.111.111.111:2380,etcd-2=http://47.111.111.111:2380,etcd-3=http://101.111.111.111:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-token"
ETCD_INITIAL_CLUSTER_STATE="new"
etcd-2:
powershell
vim /etc/etcd/etcd.conf
ETCD_NAME="etcd-2"
ETCD_DATA_DIR="/var/lib/etcd/data"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://47.111.111.111:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://172.16.178.96:2379,http://localhost:2379"
ETCD_INITIAL_CLUSTER="etcd-1=http://49.111.111.111:2380,etcd-2=http://47.111.111.111:2380,etcd-3=http://101.111.111.111:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-token"
ETCD_INITIAL_CLUSTER_STATE="new"
etcd-3:
powershell
vim /etc/etcd/etcd.conf
ETCD_NAME="etcd-3"
ETCD_DATA_DIR="/var/lib/etcd/data"
ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://101.111.111.111:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.1.14:2379,http://localhost:2379"
ETCD_INITIAL_CLUSTER="etcd-1=http://49.111.111.111:2380,etcd-2=http://47.111.111.111:2380,etcd-3=http://101.111.111.111:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-token"
ETCD_INITIAL_CLUSTER_STATE="new"
2.4.2 配置/etc/systemd/system/etcd.service文件
etcd配置为后台服务配置文件:在/etc/systemd/system目录下新建etcd.service文件,三台节点配置相同。
etcd-1、etcd-2、etcd-3:
powershell
vim /etc/systemd/system/etcd.service
[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
User=root
Type=notify
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/local/bin/etcd
Restart=on-failure
RestartSec=10s
LimitNOFILE=40000
[Install]
WantedBy=multi-user.target
2.5 启动ectd服务
powershell
#使etcd.service文件修改生效
systemctl daemon-reload
systemctl enable etcd
#启动etcd服务
systemctl start etcd
#查看服务状态
systemctl status etcd
2.6 查看集群成员信息
powershell
etcdctl member list --write-out=table
2.7 查看集群状态
powershell
etcdctl --endpoints=http://127.0.0.1:2379,http://47.111.1111.111:2379,http://101.111.111.111:2379 endpoint status --write-out=table
可以看到ecs1机器是leader,其他两台为follower,群集成功运行
另外执行etcdctl命令如果加上--write-out=table表示以表格的形式输出结果,有title,方便看数据。