PVE反向代理后VNC无法访问的问题

昨天在nginx上给pve做了一下反向代理,在测试完登录成功后便没多在意以为没问题了。今天在登录pve后访问虚拟机console后发现无法连接,后从官方文档找到reverse proxy 文档,发现配置内容中少了两项:

 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade"; 

nginx文档中描述,此配置是用于做websocket连接的代理选项。

PVE下安装ESXI测试环境

启用嵌套虚拟化

验证节点CPU是否支持硬件辅助虚拟化

# cat/proc/cpuinfo |grep -E '(vmx|svm)'

有结果输出则CPU支持硬件辅助虚拟化,Intel的VTX(vmx)、AMD的AMD-V(SVM)

启用嵌套虚拟化

如果重载模块后 cat /sys/module/kvm_intel/parameters/nested 输出仍然为N,需要重启节点。

  • Intel编辑修改/etc/modprobe.d/kvm-intel.conf,重载模块
# vim /etc/modprobe.d/kvm-intel.conf 
options kvm ignore_msrs=y options kvm-intel nested=Y ept=Y
# modprobe -r kvm-intel kvm; modprobe kvm kvm-intel
  • AMD同intel一样,只是模块名称不同。
# vim /etc/modprobe.d/kvm-amd.conf 
options kvm ignore_msrs=y options kvm-amd nested=Y ept=Y 
# modprobe -r kvm-amd kvm; modprobe kvm kvm-amd

虚拟机设置

在启用嵌套虚拟化后,虚拟机的CPU类型需要设置为host

# qm set <vmid> --cpu cputype=host

或在web界面中直接修改

安装esxi

创建虚拟机的要求

  1. OS Type :Other
  2. CPU Type:host
  3. Network Type: VMWare vmxnet3
  4. NUMA:禁用 (启用NUMA无法启动到安装界面,failed to resolve circular relocation)
  5. SCSI Controller Type: Default (LSI 53C895A)

esxi创建虚拟机默认情况会无法启动,需要打开虚拟化嵌套

vim /etc/vmware/config  
vmx.allowNested = "TRUE"

pve集群中使用zfs replication做HA

这两天因为QNAP NAS意外断电,造成共享的NFS文件系统出现问题,而PVE原有的共享存储都是位于该NAS共享的NFS上。先是发现集群中vm的性能出奇的差,从vnc console登录进系统的时候都要卡许久,后发现大部分nginx转发的后端都出现502、503等无法访问的问题。在QNAP中检查修复文件系统后,服务才恢复正常。 所以想着还是找多两块硬盘,在两节点上各加一块,做ZFS Pool,在集群中使用zfs replicaion 做HA。

创建ZFS pool

要使用replication功能,必须使用ZFS文件系统。在每个节点中创建相同名称的zfs池。需要注意的是,在WEB UI中无法在不同节点中创建相同名称的ZFS存储,所以需要登录到每个节点中创建zfs pool,这里使用的是单硬盘。

# fdisk /dev/sda    ##如果是未分区的硬盘可以忽略
>> 进到 fdisk中按o清空分区表,按w保存退出
#  zpool create -f pve-cluster-zfs /dev/sda

在节点中创建完zfs pool后,就可以在web ui中添加存储。 在web管理页面中,点击Datacenter–Storage–Add–ZFS,填写ID <ZFS_REP>(后面创件虚拟机使用存储),ZFS pool选择先前创建的 pve-cluster-zfs。

创建测试虚拟机

创建新的虚拟机,HARD DISK Storage存储选中Datacenter中创建的ZFS_REP,大小设置为1G即可。

选中刚创建完的虚拟机,点击Replication–Add,将Schedule设置为”*/1″,每分钟创建同步一次。 一分钟后,应看到该任务被执行,如

2021-07-01 23:05:00 102-0: start replication job 2021-07-01 23:05:00 102-0: guest => VM 102, running => 0 2021-07-01 23:05:00 102-0: volumes => ZFS_REP:vm-102-disk-0 2021-07-01 23:05:01 102-0: create snapshot ‘replicate_102-0_1625151900‘ on ZFS_REP:vm-102-disk-0 2021-07-01 23:05:01 102-0: using secure transmission, rate limit: none 2021-07-01 23:05:01 102-0: full sync ‘ZFS_REP:vm-102-disk-0’ (replicate_102-0_1625151900) 2021-07-01 23:05:02 102-0: full send of pve-cluster-zfs/vm-102-disk-0@replicate_102-0_1625151900 estimated size is 29.1K 2021-07-01 23:05:02 102-0: total estimated size is 29.1K 2021-07-01 23:05:02 102-0: TIME SENT SNAPSHOT pve-cluster-zfs/vm-102-disk-0@replicate_102-0_1625151900 2021-07-01 23:05:03 102-0: successfully imported ‘ZFS_REP:vm-102-disk-0’ 2021-07-01 23:05:03 102-0: end replication job

schedule:这里设置的schedule */1只是为了快速测速看到结果用,实际使用视情况而定,如考虑虚拟机的镜像大小,网络带宽等。

创建HA

Datacenter–HA–Groups–Create,创建TESTREP组,选中HA节点并设置优先级。 Datacenter–HA–Add,选中VM102,group选择TESTREP。

# ha-manage groupadd TESTREP -nodes "node1:1,node2:2"
# ha-manager add vm:102 --state started --group TESTREP --max_relocate 2

只在部分节点上存储池需要做节点访问限制,restriction限制访问节点,storage.cfg配置如下

# vim /etc/pve/stroage.cfg
zfspool: px-zfs-z1
        pool px-zfs-z1
        content images,rootdir
        mountpoint /px-zfs-z1
        nodes pve
        sparse 1

nodes: 指定节点

如果没有做节点访问限制,虚拟机在HA迁移时候会报错:

Failed to sync data - could not activate storage 'Migration of VM between nodes failed - could not activate storage 'px-zfs-z1', zfs error: