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
#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的套娃功能就开启完成;
#以我的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
#在创建虚拟机的过程中,cpu的类别选择host即可。
#创建好后,虚拟机查看是否开启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
#pve的web功能已经很完善了,集群创建在web界面就能够完成如下面的图所示:
#三台虚拟机选一台创建集群:pve148
#数据中心-集群-创建集群
#设置集群名称及选择集群通迅网络连接ip,实际应该为172.16.1.143,点击创建显示done即可;
#这里的集群名称为pvvve
#在pve143,找到加入集群的密钥:
#数据中心-集群-加入信息,点击复制
#在pve118及pve119,将密钥粘贴进去即可读出集群信息
#数据中心-集群-加入集群,输入pve143的root密码,点击join 'pvvve’即可加入集群
#验证
#pve的ceph集群搭有两种方式,一是web,二是直接在pve cli命令界面操作(建议使用这种方式,因为pve的源下载速度慢成渣了,太容易中断了!)
#pve143-ceph-安装ceph
#ceph安装过程就不表了
#安装完成后在界面上创建对应的监视器及管理员,如下图
#创建OSD,这里的OSD硬盘就是刚刚环境介绍的每台服务器上挂载的两块盘
#至此方法一部署完成
#在每个节点安装ceph,
root@pve118~# pveceph install --version luminous
#如图所示,其他两台也如此操作
#安装完成后,配置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
#在数据中心-存储-添加RBD,填写ID,设置存储对象,这样集群节点就都会挂载上这个磁盘
#最终效果如图:
#此群组用于设置参与ha的节点,并设置节点设备故障后能够迁移的优先级、
#数据中心-HA-群组-创建
#创建完成
#这里会显示HA集群的状态
#数据中心-HA-资源-添加参与ha的容器或者虚拟机(这里的虚拟机一定要是存储在cephrbd盘里面的才行)
#强制关闭pve118,观察vm100的迁移情况
#vm100已经顺利的迁移至pve119并已顺利启动