gongdear

gongdear的技术博客

欢迎大家参观我的博客
  menu
113 文章
89355 浏览
10 当前访客
ღゝ◡╹)ノ❤️

Proxmox VE 9.1 集群弹性扩容指南:无缝新增节点

Proxmox VE 集群弹性扩容指南:无缝新增 node114 与 node115 节点

适用场景
已有 Proxmox VE 9.1 高可用集群(node111–113),现需横向扩展两台新节点(node114、node115),并使其完整接入 Ceph 分布式存储企业级 iSCSI 多路径共享存储


一、前提回顾:现有架构概览

  • 集群名称forestry-pve
  • 网络段192.168.7.0/24
  • 存储后端
    • Ceph(本地 SSD/NVMe,OSD on/dev/sdb
    • ThinkSystem DE4000H iSCSI 存储(双控制器,ALUA 多路径)
  • 关键策略
    • find_multipaths strict(安全聚合)
    • 所有 LUN 通过 WWID 显式注册
    • 共享 LVM 构建于多路径设备之上

🧠 核心原则 :Proxmox VE 集群仅同步虚拟化元数据,系统级配置(如 multipath、iscsi、hostname)必须手动部署到每个节点


二、基础系统初始化(node114 / node115)

1. 安装与网络配置

使用与主集群完全一致的镜像proxmox-ve_9.1-1.iso
安装时分配静态 IP:

节点IP 地址
node114192.168.7.114
node115192.168.7.115

🔧 建议关闭 IPv6、禁用 cloud-init(若非必要),保持环境纯净。

2. 设置主机名与 hosts 解析

# node114
hostnamectl set-hostname node114

# node115
hostnamectl set-hostname node115

将以下内容写入 所有五台节点/etc/hosts(包括新节点):

127.0.0.1 localhost.localdomain localhost
192.168.7.111 node111 pve.node111.forestry
192.168.7.112 node112 pve.node112.forestry
192.168.7.113 node113 pve.node113.forestry
192.168.7.114 node114 pve.node114.forestry
192.168.7.115 node115 pve.node115.forestry

可用 scp /etc/hosts root@node114:/etc/hosts 从现有节点批量分发。

3. 重启 PVE 核心服务

systemctl restart pve-cluster pvedaemon pveproxy corosync

确保 hostname 变更被集群识别。


三、加入现有 Proxmox VE 集群

node114 和 node115 上执行:

pvecm add 192.168.7.111

⏱️ 首次加入可能需要 10–30 秒同步。
✅ 验证命令:

pvecm status        # 查看集群状态
pvecm nodes         # 应列出全部 5 个节点

此时,新节点已具备:

  • 集群管理权限
  • 虚拟机/容器迁移能力
  • HA 资源接管资格

四、同步 iSCSI 多路径存储栈(关键步骤)

⚠️ 重要 :multipath 配置 不会 通过 PVE 集群同步!必须手动部署。

1. 安装依赖包

apt update
apt install -y multipath-tools

若计划在多路径设备上运行 VM(尤其是启动盘),建议额外安装:

apt install -y multipath-tools-boot
update-initramfs -u   # 更新 initramfs 以支持早期多路径

2. 配置 iSCSI 连接(双路径)

TARGET="iqn.2002-09.com.lenovo:thinksystem.6d039ea000292f68000000005ffccb04"

# 发现 Target
iscsiadm -m discovery -t st -p 192.168.7.101
iscsiadm -m discovery -t st -p 192.168.7.102

# 登录双路径
iscsiadm -m node -T "$TARGET" -p 192.168.7.101 --login
iscsiadm -m node -T "$TARGET" -p 192.168.7.102 --login

# 启用自动重连
for ip in 192.168.7.101 192.168.7.102; do
  iscsiadm -m node -T "$TARGET" -p "$ip" -o update -n node.startup -v automatic
done

3. 扫描设备并验证 WWID

rescan-scsi-bus.sh -a
lsblk  # 观察新设备(如 sdc, sdd...)

获取每块设备的 WWID:

/lib/udev/scsi_id -g -u -d /dev/sdc
/lib/udev/scsi_id -g -u -d /dev/sdd
# ...

应得到与现有节点完全相同的两个 WWID ,例如:

  • 36d039ea000215c32000000fb61798151 → LUN A(8.3TB)
  • 36d039ea000292f68000000f5617982e2 → LUN B(54TB)

4. 注册 WWID 并部署 multipath.conf

从任意现有节点复制配置:

scp root@node111:/etc/multipath.conf /etc/multipath.conf

显式注册 WWID(find_multipaths strict 模式必需):

multipath -a 36d039ea000215c32000000fb61798151
multipath -a 36d039ea000292f68000000f5617982e2

💡 可从 node111:/etc/multipath/wwids 提取列表并批量导入。

重载配置并验证:

multipath -r
multipath -ll

✅ 成功输出应包含:

iscsi_lun_a (36d039ea000215c32...) dm-6 LENOVO,DE_Series
|- sdc 8:32 active
`- sde 8:64 enabled

iscsi_lun_b (36d039ea000292f68...) dm-7 LENOVO,DE_Series
|- sdd 8:48 active
`- sdf 8:80 enabled

5. 刷新 LVM 缓存(如使用共享 VG)

若已有基于 iscsi_lun_b 的共享卷组(如 shared-vg):

pvscan --cache

此时 Web UI 中的 LVM 存储应自动可见。


五、(可选)扩展 Ceph 集群角色

若新节点配备本地磁盘并希望参与 Ceph 存储:

1. 安装 Ceph 软件栈

Web UI 操作最简:

  • 进入Datacenter > node114 > Ceph
  • 点击 “Install Ceph” → 选择 “No subscription”

或 CLI:

pveceph install --version reef  # 版本需与现有集群一致

2. 同步 Ceph 配置

从任一 Ceph 节点复制密钥与配置:

scp root@node111:/etc/ceph/ceph.* /etc/ceph/
chmod 600 /etc/ceph/ceph.client.admin.keyring

验证连接:

ceph -s  # 应返回 HEALTH_OK

3. 创建 OSD(如有本地磁盘)

假设使用 /dev/sdb

wipefs -a /dev/sdb
sgdisk --zap-all /dev/sdb

然后通过 Web UI:

  • Datacenter > node114 > Ceph > OSD > Create
  • 选择/dev/sdb,启用加密(可选)

📌 注意:Ceph Monitor(mon)通常无需每节点部署,3 节点 quorum 已足够。新节点默认仅作为 OSD 或 client。


六、最终验证清单

检查项命令 / 方法
集群成员完整性pvecm nodes(5 行输出)
主机名解析ping node115 && host node111
iSCSI 会话iscsiadm -m session(2 条路径)
多路径聚合multipath -ll(mpatha/mpathb 正常)
共享存储可见Web UI → Storage →iscsi-storage / shared-vg
Ceph 状态(如适用)ceph osd tree(新 OSD 出现)
HA 能力在 VM 上启用 HA,手动停机测试迁移

七、升华一下

将扩容流程封装为 幂等脚本 ,实现“一键加节点”:

#!/bin/bash
# add-pve-node.sh <new_ip> <new_hostname>
IP=$1; HOST=$2
scp /etc/hosts root@$IP:/etc/hosts
ssh root@$IP "hostnamectl set-hostname $HOST"
ssh root@$IP "systemctl restart pve-cluster"
ssh root@$IP "pvecm add 192.168.7.111"
scp /etc/multipath.conf root@$IP:/etc/multipath.conf
ssh root@$IP "multipath -a $(cat /etc/multipath/wwids | tr -d '\n' | sed 's/ //g')"
ssh root@$IP "multipath -r"

配合 Ansible 或 Terraform,可构建真正的 基础设施即代码(IaC) 流程。

宝剑锋从磨砺出,梅花香自苦寒来.