etcd高可用集群部署

文章目录

  • 一、环境准备
  • 二、安装部署
    • [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,方便看数据。

相关推荐
马尔代夫哈哈哈5 小时前
Spring IoC&DI
数据库·sql
液态不合群7 小时前
[特殊字符] MySQL 覆盖索引详解
数据库·mysql
计算机毕设VX:Fegn08957 小时前
计算机毕业设计|基于springboot + vue蛋糕店管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
瀚高PG实验室8 小时前
PostgreSQL到HighgoDB数据迁移
数据库·postgresql·瀚高数据库
打码人的日常分享8 小时前
智能制造数字化工厂解决方案
数据库·安全·web安全·云计算·制造
三水不滴8 小时前
Redis 过期删除与内存淘汰机制
数据库·经验分享·redis·笔记·后端·缓存
-孤存-9 小时前
MyBatis数据库配置与SQL操作全解析
数据库·mybatis
2301_8223663510 小时前
使用Scikit-learn构建你的第一个机器学习模型
jvm·数据库·python
万邦科技Lafite11 小时前
一键获取京东商品评论信息,item_reviewAPI接口指南
java·服务器·数据库·开放api·淘宝开放平台·京东开放平台
自可乐11 小时前
Milvus向量数据库/RAG基础设施学习教程
数据库·人工智能·python·milvus