Proxmox VE 创建集群


空的集群不提了。家里有三台电脑,都装了PVE,都有虚拟机,直接创建集群将三个节点都加入,从Web console操作是不行的。命令行操作步骤如下:

1. 修改主机名

确保每台pve主机的主机名不一样。

假定原来主机名叫 pve,新的主机名叫 pve1,我都加了 local 的后缀。

hostnamectl set-hostname pve1.home.local

然后修改 /etc/hosts/etc/postfix/main.cf,确保里边的主机名是新的。

但是这样操作是不够的,还得去手动处理主机配置文件。(打开web console,看到的节点变成了两个,pve和pve1)

mv /etc/pve/nodes/pve/qemu-server/* /etc/pve/nodes/pve1/qemu-server/

建议顺手更新,然后重启系统。

2. 删除已有的集群信息(可选)

如果之前尝试过建集群,需要删掉这个集群,否则后边会进不了cluster的页面。

文档: https://pve.proxmox.com/wiki/Cluster_Manager#_remove_a_cluster_node

systemctl stop pve-cluster corosync
pmxcfs -l
rm /etc/corosync/*
rm /etc/pve/corosync.conf
killall pmxcfs
systemctl start pve-cluster

3. 修改主机ID

我其实不确定是不是必须,反正我是改了

脚本参考:https://forum.proxmox.com/threads/changing-vmid-of-a-vm.63161

#!/usr/bin/env bash

VM_TYPE=$1
OLD_VMID=$2
NEW_VMID=$3

#echo Put the VM type to change '(lxc, qemu)'
#read -r VM_TYPE
case "$VM_TYPE" in
"lxc") VM_TYPE="lxc" ;;
"qemu" | "qemu-server")
VM_TYPE="qemu-server" ;;
*)
  echo bad input. Exiting
exit
  ;;
esac

#echo
#echo Put the VMID to change
#read -r OLD_VMID
case $OLD_VMID in
'' | *[!0-9]*)
  echo bad input. Exiting
exit
  ;;
*)
  echo Old VMID - "$OLD_VMID"
  ;;
esac

#echo
#echo Put the new VMID
#read -r NEW_VMID
case $NEW_VMID in
'' | *[!0-9]*)
  echo bad input. Exiting
exit
  ;;
*)
  echo New VMID - "$NEW_VMID"
  ;;
esac
echo

VG_NAME="$(lvs --noheadings -o lv_name,vg_name | grep "$OLD_VMID" | awk -F ' ' '{print $2}' | uniq)"

case "$VG_NAME" in
"")
  echo Machine not in Volume Group. Exiting
  exit
  ;;
*)
  echo Volume Group - "$VG_NAME"
  ;;
esac

for volume in $(lvs -a | grep "$VG_NAME" | awk '{print $1}' | grep "$OLD_VMID"); do
  newVolume="${volume//"${OLD_VMID}"/"${NEW_VMID}"}"
  lvrename "$VG_NAME" "$volume" "$newVolume"
done

for volume in $(zfs list -t all | awk '{print $1}' | grep "vm-${OLD_VMID}-disk"); do
  newVolume="${volume//"${OLD_VMID}"/"${NEW_VMID}"}"
  zfs rename "$volume" "$newVolume"
done

sed -i "s/$OLD_VMID/$NEW_VMID/g" /etc/pve/"$VM_TYPE"/"$OLD_VMID".conf
mv /etc/pve/"$VM_TYPE"/"$OLD_VMID".conf /etc/pve/"$VM_TYPE"/"$NEW_VMID".conf

原脚本是交互输入参数的,我改成命令行参数了,这样可以搭配 for 去批量改id。

我的pve vm都是lvm的,所以这样没问题。如果是独立磁盘文件的,需要rename,然后qm rescan

4. 移动主机文件到一个统一的节点

假设我用 pve1 当主节点(我不知道pve有没有主节点的概念,就当临时用来操作的),pve1自己不动,其他节点需要把主机文件scp过去

假定pve1 ip是 192.168.111.1,现在处理 pve2

scp -pr /etc/pve/nodes/pve2 root@192.168.111.1:/etc/pve/nodes/
mv /etc/pve/nodes/pve2 /root/

5. 创建并加入集群

从pve1 创建集群,从其他已经处理好的节点加集群。

完。


Leave a Reply

Your email address will not be published. Required fields are marked *