文章目录
- [1. 欧拉集群](#1. 欧拉集群)
-
- [1.1 集群拓扑](#1.1 集群拓扑)
- [1.2 查看主机名](#1.2 查看主机名)
- [1.3 查看IP地址](#1.3 查看IP地址)
- [1.4 查看映射文件](#1.4 查看映射文件)
- [1.5 查看防火墙状态](#1.5 查看防火墙状态)
- [1.6 检测集群互通性](#1.6 检测集群互通性)
- [2. 任务描述](#2. 任务描述)
- [3. 任务实施](#3. 任务实施)
-
- [3.1 安装etcd软件](#3.1 安装etcd软件)
-
- [3.1.1 在主节点Euler01上安装](#3.1.1 在主节点Euler01上安装)
- [3.1.2 在从节点Euler02上安装](#3.1.2 在从节点Euler02上安装)
- [3.1.3 在从节点Euler03上安装](#3.1.3 在从节点Euler03上安装)
- [3.2 修改ETCD配置](#3.2 修改ETCD配置)
-
- [3.2.1 在主节点Euler01上修改ETCD配置](#3.2.1 在主节点Euler01上修改ETCD配置)
- [3.2.2 在从节点Euler02上修改ETCD配置](#3.2.2 在从节点Euler02上修改ETCD配置)
- [3.2.3 在从节点Euler03上修改ETCD配置](#3.2.3 在从节点Euler03上修改ETCD配置)
- [3.3 创建数据目录并设置权限](#3.3 创建数据目录并设置权限)
-
- [3.3.1 在主节点Euler01上创建数据目录并设置权限](#3.3.1 在主节点Euler01上创建数据目录并设置权限)
- [3.3.2 在从节点Euler02上创建数据目录并设置权限](#3.3.2 在从节点Euler02上创建数据目录并设置权限)
- [3.3.3 在从节点Euler03上创建数据目录并设置权限](#3.3.3 在从节点Euler03上创建数据目录并设置权限)
- [3.4 开放防火墙端口](#3.4 开放防火墙端口)
-
- [3.4.1 在主节点Euler01上开放防火墙端口](#3.4.1 在主节点Euler01上开放防火墙端口)
- [3.4.2 在从节点Euler02上开放防火墙端口](#3.4.2 在从节点Euler02上开放防火墙端口)
- [3.4.3 在从节点Euler03上开放防火墙端口](#3.4.3 在从节点Euler03上开放防火墙端口)
- [3.5 启动集群etcd服务](#3.5 启动集群etcd服务)
-
- [3.5.1 在主节点Euler01上启动etcd服务](#3.5.1 在主节点Euler01上启动etcd服务)
- [3.5.2 在从节点Euler02上启动etcd服务](#3.5.2 在从节点Euler02上启动etcd服务)
- [3.5.3 在从节点Euler03上启动etcd服务](#3.5.3 在从节点Euler03上启动etcd服务)
- [3.6 验证集群etcd服务](#3.6 验证集群etcd服务)
-
- [3.6.1 检查每个节点端口监听状况](#3.6.1 检查每个节点端口监听状况)
- [3.6.2 检查每个节点健康状态](#3.6.2 检查每个节点健康状态)
- [3.6.3 查看etcd集群成员列表](#3.6.3 查看etcd集群成员列表)
- [3.6.4 跨节点数据写入与读取测试](#3.6.4 跨节点数据写入与读取测试)
- [4. 实战总结](#4. 实战总结)
1. 欧拉集群
1.1 集群拓扑
- Euler01 - 主控节点,Euler02和Euler03 - 从节点
1.2 查看主机名
- 查看Euler01节点主机名,执行命令:
hostname
- 查看Euler02节点主机名,执行命令:
hostname
- 查看Euler03节点主机名,执行命令:
hostname
1.3 查看IP地址
-
查看Euler01节点IP地址,执行命令:
ip addr
-
查看Euler02节点IP地址,执行命令:
ip addr
-
查看Euler03节点IP地址,执行命令:
ip addr
1.4 查看映射文件
-
查看Euler01节点映射文件,执行命令:
cat /etc/hosts
-
查看Euler02节点映射文件,执行命令:
cat /etc/hosts
-
查看Euler03节点映射文件,执行命令:
cat /etc/hosts
1.5 查看防火墙状态
-
查看Euler01节点防火墙状态,执行命令:
systemctl status firewalld
-
查看Euler02节点防火墙状态,执行命令:
systemctl status firewalld
-
查看Euler03节点防火墙状态,执行命令:
systemctl status firewalld
1.6 检测集群互通性
-
测试主节点Euler01到三个节点的连通性
- 执行命令:
ping euler01
- 执行命令:
ping euler02
- 执行命令:
ping euler03
- 执行命令:
-
测试从节点Euler02到三个节点的连通性
-
执行命令:
ping euler01
-
执行命令:
ping euler02
-
执行命令:
ping euler03
-
-
测试从节点Euler03到三个节点的连通性
-
执行命令:
ping euler01
-
执行命令:
ping euler02
-
执行命令:
ping euler03
-
2. 任务描述
- etcd分布式键值对存储系统用于存储大规模分布式系统的配置信息,以及进行组件的注册和服务发现等,也是OpenStack的一个重要应用。本次任务在集群三个节点上安装与设置etcd分布式键值对存储系统。
3. 任务实施
3.1 安装etcd软件
3.1.1 在主节点Euler01上安装
- 执行命令:
yum -y install etcd
3.1.2 在从节点Euler02上安装
- 执行命令:
yum -y install etcd
3.1.3 在从节点Euler03上安装
- 执行命令:
yum -y install etcd
3.2 修改ETCD配置
-
配置说明
项目 说明 ETCD_NAME
每个节点唯一名称 ETCD_DATA_DIR
数据存储路径,确保目录存在且权限正确 ETCD_LISTEN_*
监听本机 IP,供内部通信 ETCD_INITIAL_CLUSTER
所有节点的初始集群定义,必须一致 ETCD_ADVERTISE_CLIENT_URLS
对外提供服务的地址,客户端通过它访问
3.2.1 在主节点Euler01上修改ETCD配置
-
执行命令:
mv /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak
,备份etcd配置文件
-
执行命令:
vim /etc/etcd/etcd.conf
shell# [member] ETCD_NAME=euler01 ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_PEER_URLS="http://192.168.1.51:2380" ETCD_LISTEN_CLIENT_URLS="http://192.168.1.51:2379" # [cluster] ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.1.51:2380" ETCD_INITIAL_CLUSTER="euler01=http://192.168.1.51:2380,euler02=http://192.168.1.52:2380,euler03=http://192.168.1.53:2380" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01" ETCD_ADVERTISE_CLIENT_URLS="http://192.168.1.51:2379"
3.2.2 在从节点Euler02上修改ETCD配置
-
执行命令:
mv /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak
,备份etcd配置文件
-
执行命令:
vim /etc/etcd/etcd.conf
shell# [member] ETCD_NAME=euler02 ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_PEER_URLS="http://192.168.1.52:2380" ETCD_LISTEN_CLIENT_URLS="http://192.168.1.52:2379" # [cluster] ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.1.52:2380" ETCD_INITIAL_CLUSTER="euler01=http://192.168.1.51:2380,euler02=http://192.168.1.52:2380,euler03=http://192.168.1.53:2380" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01" ETCD_ADVERTISE_CLIENT_URLS="http://192.168.1.52:2379"
3.2.3 在从节点Euler03上修改ETCD配置
-
执行命令:
mv /etc/etcd/etcd.conf /etc/etcd/etcd.conf.bak
,备份etcd配置文件
-
执行命令:
vim /etc/etcd/etcd.conf
shell# [member] ETCD_NAME=euler03 ETCD_DATA_DIR="/var/lib/etcd/default.etcd" ETCD_LISTEN_PEER_URLS="http://192.168.1.53:2380" ETCD_LISTEN_CLIENT_URLS="http://192.168.1.53:2379" # [cluster] ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.1.53:2380" ETCD_INITIAL_CLUSTER="euler01=http://192.168.1.51:2380,euler02=http://192.168.1.52:2380,euler03=http://192.168.1.53:2380" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01" ETCD_ADVERTISE_CLIENT_URLS="http://192.168.1.53:2379"
3.3 创建数据目录并设置权限
3.3.1 在主节点Euler01上创建数据目录并设置权限
-
执行命令:
mkdir -p /var/lib/etcd
-
执行命令:
chown -R etcd:etcd /var/lib/etcd
3.3.2 在从节点Euler02上创建数据目录并设置权限
-
执行命令:
mkdir -p /var/lib/etcd
-
执行命令:
chown -R etcd:etcd /var/lib/etcd
3.3.3 在从节点Euler03上创建数据目录并设置权限
-
执行命令:
mkdir -p /var/lib/etcd
-
执行命令:
chown -R etcd:etcd /var/lib/etcd
3.4 开放防火墙端口
3.4.1 在主节点Euler01上开放防火墙端口
-
命令序列
shellsystemctl start firewalld firewall-cmd --permanent --add-port=2379/tcp # 客户端通信 firewall-cmd --permanent --add-port=2380/tcp # 节点间通信 firewall-cmd --reload systemctl stop firewalld
-
执行命令序列
3.4.2 在从节点Euler02上开放防火墙端口
-
命令序列
shellsystemctl start firewalld firewall-cmd --permanent --add-port=2379/tcp # 客户端通信 firewall-cmd --permanent --add-port=2380/tcp # 节点间通信 firewall-cmd --reload systemctl stop firewalld
-
执行命令序列
3.4.3 在从节点Euler03上开放防火墙端口
-
命令序列
shellsystemctl start firewalld firewall-cmd --permanent --add-port=2379/tcp # 客户端通信 firewall-cmd --permanent --add-port=2380/tcp # 节点间通信 firewall-cmd --reload systemctl stop firewalld
-
执行命令序列
3.5 启动集群etcd服务
3.5.1 在主节点Euler01上启动etcd服务
-
执行命令:
systemctl enable etcd
,设置开机启用etcd服务
-
执行命令:
systemctl start etcd
,启动etcd服务
-
执行命令:
systemctl status etcd
,查看etcd服务
3.5.2 在从节点Euler02上启动etcd服务
-
执行命令:
systemctl enable etcd
,设置开机启用etcd服务
-
执行命令:
systemctl start etcd
,启动etcd服务
-
执行命令:
systemctl status etcd
,查看etcd服务
3.5.3 在从节点Euler03上启动etcd服务
-
执行命令:
systemctl enable etcd
,设置开机启用etcd服务
-
执行命令:
systemctl start etcd
,启动etcd服务
-
执行命令:
systemctl status etcd
,查看etcd服务
3.6 验证集群etcd服务
3.6.1 检查每个节点端口监听状况
-
在主节点Euler01上执行命令:
netstat -tnlup | grep etcd
-
在从节点Euler02上执行命令:
netstat -tnlup | grep etcd
-
在从节点Euler03上执行命令:
netstat -tnlup | grep etcd
-
结果说明 :三节点均监听
2379
(客户端)和2380
(对等通信)端口,表明etcd
服务正常运行。各节点通过IP地址对外提供服务,网络配置正确,集群通信通道畅通,具备高可用与数据同步能力。
3.6.2 检查每个节点健康状态
- 在主节点上执行命令:
etcdctl --endpoints=http://192.168.1.51:2379 endpoint health
- 在主节点上执行命令:
etcdctl --endpoints=http://192.168.1.52:2379 endpoint health
- 在主节点上执行命令:
etcdctl --endpoints=http://192.168.1.53:2379 endpoint health
- 检测结果 :三条命令分别检查了 etcd 集群中三个节点(
192.168.1.51
、192.168.1.52
、192.168.1.53
)的健康状态。结果显示所有节点均返回"healthy
",成功提交提案,延迟在6ms~135ms
之间,说明集群通信正常、各成员运行稳定,整个 etcd 集群处于健康状态。 - 其实,使用主机名也是可以,比如执行命令:
etcdctl --endpoints=http://euler02:2379 endpoint health
3.6.3 查看etcd集群成员列表
- 执行命令:
etcdctl --endpoints=http://euler01:2379 member list
- 结果说明 :该命令显示 etcd 集群成员列表,共三个节点(euler01、euler02、euler03)均处于"
started
"状态,Peer URL 和 Client URL 正确,表明集群已成功组建,各节点正常通信并参与共识,集群运行稳定。
3.6.4 跨节点数据写入与读取测试
- 在主节点Euler01上执行命令:
etcdctl --endpoints=http://euler02:2379 put msg 'I love Euler~'
,在从节点Euler02上写入键值对
- 在从节点Euler02上执行命令:
etcdctl --endpoints=http://euler01:2379 get msg
,在主节点Euler01上按键取值
- 在从节点Euler03上执行命令:
etcdctl --endpoints=http://euler03:2379 get msg
,在从节点Euler03上按键取值
- 结果说明:跨节点写入与读取均成功,表明etcd集群各节点通信正常,数据一致性良好。通过euler02写入的数据可在 euler01、euler03上正确读取,验证了集群的高可用性与分布式共识机制运行稳定。
4. 实战总结
- 本次实战成功搭建了基于三节点的etcd分布式集群,完成了环境准备、软件安装、配置修改、防火墙设置及服务启动等关键步骤。通过验证端口监听、健康检查、成员列表和跨节点数据读写,确认集群运行稳定、通信畅通、数据一致。整个过程体现了etcd在高可用性和分布式一致性方面的强大能力,为后续部署OpenStack等复杂系统奠定了坚实基础。