Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移

纯粹是为了折腾 :)

1 环境介绍

OS:Virtual Environment 6.2-4

pve231 主机

pve118 172.16.1.118 虚拟机1
pve119 172.16.1.119 虚拟机2
pve143 172.16.1.143 虚拟机3

#三台虚拟机的配置如下:内存,硬盘,cpu,网络配置同pve118,PVE的安装过程就不说明了,网上一堆,默认安装也ok
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第1张图片

2 首先要使Proxmox VE 主机支持套娃

#PVE虚拟出来的主机CPU默认不支持vmx,也就是不支持嵌套虚拟化,所以在这里我们需要手动打开这个功能,这里查看的时候功能是关的

root@pve231:~# cat /sys/module/kvm_intel/parameters/nested
N

#关闭pve所有的虚拟机,并执行以下命令:
(如果执行报错,就要检查下虚拟机是否全部都关闭)

modprobe -r kvm_intel 
modprobe kvm_intel nested=1

#查看netsed是否开启

root@pve231:~# cat /sys/module/kvm_intel/parameters/nested
Y

#设置自动加载nested命令

echo "options kvm_intel nested=1" >> /etc/modprobe.d/modprobe.conf

#至此,pve的套娃功能就开启完成;

3 设置虚拟机支持套娃功能,方法有两种

3.1 方法一:命令行模式开启,但是重启后就失效了,最好写进配置里

#以我的centos116为例,查看配置,不支持虚拟化:

root@pve231:~# qm showcmd 116
/usr/bin/kvm -id 116 -name centos116 -chardev 'socket,id=qmp,path=/var/run/qemu-server/116.qmp,server,nowait' -mon 'chardev=qmp,mode=control' -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' -mon 'chardev=qmp-event,mode=control' -pidfile /var/run/qemu-server/116.pid -daemonize -smbios 'type=1,uuid=a820085d-d873-46b2-9d4a-88aa7ed1e1b6' -smp '1,sockets=1,cores=1,maxcpus=1'-nodefaults -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' -vnc unix:/var/run/qemu-server/116.vnc,password -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep -m 1024 -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' -device 'vmgenid,guid=a218640f-b2f4-4641-8d21-1c09037cca4b' -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' -device 'VGA,id=vga,bus=pci.0,addr=0x2' -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' -iscsi 'initiator-name=iqn.1993-08.org.debian:01:c4896a5ad946' -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' -drive 'file=/dev/SATA3_Disk/vm-116-disk-0,if=none,id=drive-scsi0,format=raw,cache=none,aio=native,detect-zeroes=on' -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,rotation_rate=1,bootindex=100' -drive 'file=/dev/SATA3_Disk/vm-116-disk-1,if=none,id=drive-scsi1,format=raw,cache=none,aio=native,detect-zeroes=on' -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=1,drive=drive-scsi1,id=scsi1' -netdev 'type=tap,id=net0,ifname=tap116i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on' -device 'virtio-net-pci,mac=A6:59:D2:72:9E:D7,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300' -machine 'type=pc+pve0'

#在这里要找到cpu的设置项

-cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep -m 1024
#找到这一段cpu配置,加上+vmx
-cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep,+vmx -m 1024
#然后关闭116虚拟机,整段复制执行,重新开启虚拟机
root@pve231:~# qm stop 116
root@pve231:~# /usr/bin/kvm -id 116 -name centos116 -chardev 'socket,id=qmp,path=/var/run/qemu-server/116.qmp,server,nowait' -mon 'chardev=qmp,mode=control' -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' -mon 'chardev=qmp-event,mode=control' -pidfile /var/run/qemu-server/116.pid -daemonize -smbios 'type=1,uuid=a820085d-d873-46b2-9d4a-88aa7ed1e1b6' -smp '1,sockets=1,cores=1,maxcpus=1'-nodefaults -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' -vnc unix:/var/run/qemu-server/116.vnc,password -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep,+vmx -m 1024 -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' -device 'vmgenid,guid=a218640f-b2f4-4641-8d21-1c09037cca4b' -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' -device 'VGA,id=vga,bus=pci.0,addr=0x2' -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' -iscsi 'initiator-name=iqn.1993-08.org.debian:01:c4896a5ad946' -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' -drive 'file=/dev/SATA3_Disk/vm-116-disk-0,if=none,id=drive-scsi0,format=raw,cache=none,aio=native,detect-zeroes=on' -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=0,drive=drive-scsi0,id=scsi0,rotation_rate=1,bootindex=100' -drive 'file=/dev/SATA3_Disk/vm-116-disk-1,if=none,id=drive-scsi1,format=raw,cache=none,aio=native,detect-zeroes=on' -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=1,drive=drive-scsi1,id=scsi1' -netdev 'type=tap,id=net0,ifname=tap116i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on' -device 'virtio-net-pci,mac=A6:59:D2:72:9E:D7,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300' -machine 'type=pc+pve0'

#确认116虚拟机是否running

root@pve231:~# qm list |grep 116
       116 centos116            running    1024              50.00 869792

#登陆116虚拟机查看是否开启vmx

root@centos116:~# egrep "vmx|svm" /proc/cpuinfo
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cpuid_fault pti ssbd ibrs ibpb stibp tpr_shadowvnmi flexpriority ept vpid fsgsbase tsc_adjust smep erms xsaveopt arat umip arch_capabilities
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cpuid_fault pti ssbd ibrs ibpb stibp tpr_shadowvnmi flexpriority ept vpid fsgsbase tsc_adjust smep erms xsaveopt arat umip arch_capabilities

3.2 方法二:web界面配置开启,放心重启配置不会丢失

#在创建虚拟机的过程中,cpu的类别选择host即可。
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第2张图片
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第3张图片
#创建好后,虚拟机查看是否开启vmx

root@pve118:~# egrep "vmx|svm" /proc/cpuinfo
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cpuid_fault pti ssbd ibrs ibpb stibp tpr_shadowvnmi flexpriority ept vpid fsgsbase tsc_adjust smep erms xsaveopt arat umip arch_capabilities
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm cpuid_fault pti ssbd ibrs ibpb stibp tpr_shadowvnmi flexpriority ept vpid fsgsbase tsc_adjust smep erms xsaveopt arat umip arch_capabilities

4 集群创建及节点加入

4.1 集群创建

#pve的web功能已经很完善了,集群创建在web界面就能够完成如下面的图所示:
#三台虚拟机选一台创建集群:pve148
#数据中心-集群-创建集群
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第4张图片
#设置集群名称及选择集群通迅网络连接ip,实际应该为172.16.1.143,点击创建显示done即可;
#这里的集群名称为pvvve
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第5张图片

4.2 节点加入集群

#在pve143,找到加入集群的密钥:
#数据中心-集群-加入信息,点击复制
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第6张图片
#在pve118及pve119,将密钥粘贴进去即可读出集群信息
#数据中心-集群-加入集群,输入pve143的root密码,点击join 'pvvve’即可加入集群
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第7张图片
#验证
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第8张图片

5 CEPH搭建及挂载

#pve的ceph集群搭有两种方式,一是web,二是直接在pve cli命令界面操作(建议使用这种方式,因为pve的源下载速度慢成渣了,太容易中断了!)

5.1 方法一:web界面创建

#pve143-ceph-安装ceph
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第9张图片
#ceph安装过程就不表了
#安装完成后在界面上创建对应的监视器及管理员,如下图
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第10张图片
#创建OSD,这里的OSD硬盘就是刚刚环境介绍的每台服务器上挂载的两块盘
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第11张图片
#至此方法一部署完成

5.2 方法二:pve cli界面创建(推荐使用这种方式)

#在每个节点安装ceph,

root@pve118~# pveceph install --version luminous

#如图所示,其他两台也如此操作
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第12张图片
#安装完成后,配置ceph集群存储网络

root@pve148:~# pveceph init --network 172.16.1.0/24

#创建ceph集群Mon监控 - 每台执行

root@pve118:~# pveceph createmon
root@pve119:~# pveceph createmon
root@pve143:~# pveceph createmon

#创建ceph mgr - 每台执行

root@pve118:~# pveceph createmgr
root@pve119:~# pveceph createmgr
root@pve143:~# pveceph createmgr

#创建Ceph集群的 OSDs - 每台执行

root@pve118:~# pveceph createosd /dev/sdb
root@pve118:~# pveceph createosd /dev/sdc
root@pve119:~# pveceph createosd /dev/sdb
root@pve119:~# pveceph createosd /dev/sdc
root@pve143:~# pveceph createosd /dev/sdb
root@pve143:~# pveceph createosd /dev/sdc

#创建集群存储资源池ceph osd pool create 资源池名称 128 128 (这里只要一台执行)

root@pve143:~# ceph osd pool create pvepool1 128 128
pool 'pvepool1' created

这里的128不是随便写的,是需要大家计算的,超出会报错
Pool 对应 PG PGP数量的计算公式: 官方计算地址
Total PGs = ((Total_number_of_OSD * Target PGs per OSD) / max_replication_count) / pool_count
Target PGs per OSD 通常被设置为 100
最终的结果取2的幂次方最靠近的数,这里为128

#激活pvepool1为rbd存储池,用于存储pve的磁盘映像跟容器

root@pve143:~# ceph osd pool application enable pvepool1 rbd
enabled application 'rbd' on pool 'pvepool1'

#最后查看集群状态

root@pve143:~# ceph -s
  cluster:
    id:     79475a09-72be-418a-921f-243241b0c5e3
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum pve143,pve118,pve119 (age 4h)
    mgr: pve143(active, since 3h), standbys: pve119, pve118
    osd: 6 osds: 6 up (since 4h), 6 in (since 4h)

  data:
    pools:   1 pools, 128 pgs
    objects: 0 objects, 0 B
    usage:   6.0 GiB used, 240 GiB / 246 GiB avail
    pgs:     128 active+clean

5.3 挂载ceph rbd 磁盘

#在数据中心-存储-添加RBD,填写ID,设置存储对象,这样集群节点就都会挂载上这个磁盘
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第13张图片
#最终效果如图:
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第14张图片

6 启用pve HA功能

6.1 创建HA群组

#此群组用于设置参与ha的节点,并设置节点设备故障后能够迁移的优先级、
#数据中心-HA-群组-创建
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第15张图片
#创建完成
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第16张图片
#这里会显示HA集群的状态
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第17张图片

6.2 创建参与HA的对象

#数据中心-HA-资源-添加参与ha的容器或者虚拟机(这里的虚拟机一定要是存储在cephrbd盘里面的才行
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第18张图片

6.3 验证HA故障迁移

#强制关闭pve118,观察vm100的迁移情况
#vm100已经顺利的迁移至pve119并已顺利启动
Proxmox VE 套娃做pve集群实验ceph搭建及ha迁移_第19张图片

至此折腾完了~

你可能感兴趣的:(Proxmox,VE,proxmox)