1.6 欧拉集群安装etcd分布式键值对存储系统

文章目录

  • [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 查看主机名

  1. 查看Euler01节点主机名,执行命令:hostname
  2. 查看Euler02节点主机名,执行命令:hostname
  3. 查看Euler03节点主机名,执行命令:hostname

1.3 查看IP地址

  1. 查看Euler01节点IP地址,执行命令:ip addr

  2. 查看Euler02节点IP地址,执行命令:ip addr

  3. 查看Euler03节点IP地址,执行命令:ip addr

1.4 查看映射文件

  1. 查看Euler01节点映射文件,执行命令:cat /etc/hosts

  2. 查看Euler02节点映射文件,执行命令:cat /etc/hosts

  3. 查看Euler03节点映射文件,执行命令:cat /etc/hosts

1.5 查看防火墙状态

  1. 查看Euler01节点防火墙状态,执行命令:systemctl status firewalld

  2. 查看Euler02节点防火墙状态,执行命令:systemctl status firewalld

  3. 查看Euler03节点防火墙状态,执行命令:systemctl status firewalld

1.6 检测集群互通性

  1. 测试主节点Euler01到三个节点的连通性

    • 执行命令:ping euler01
    • 执行命令:ping euler02
    • 执行命令:ping euler03
  2. 测试从节点Euler02到三个节点的连通性

    • 执行命令:ping euler01

    • 执行命令:ping euler02

    • 执行命令:ping euler03

  3. 测试从节点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上开放防火墙端口

  • 命令序列

    shell 复制代码
    systemctl 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上开放防火墙端口

  • 命令序列

    shell 复制代码
    systemctl 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上开放防火墙端口

  • 命令序列

    shell 复制代码
    systemctl 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.51192.168.1.52192.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等复杂系统奠定了坚实基础。