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,方便看数据。

相关推荐
qq_5298353523 分钟前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New3 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6753 小时前
数据库基础1
数据库
我爱松子鱼3 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo3 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser4 小时前
【SQL】多表查询案例
数据库·sql
Galeoto4 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)5 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231115 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
喝醉酒的小白5 小时前
PostgreSQL:更新字段慢
数据库·postgresql