kvm安装centos7_ProxmoxVE 之 5.3集群安装及使用ceph

(微信号:yuweibing7803 ,公众号: Openstack私有云)

PVE5.3版本对于磁盘的管理,包括对分布式存储ceph的支持据说都更加友好了。前期对5.2版本测试的时候,有些未尽事宜,比如直接通过pve自身的管理程序pveceph部署ceph存储,而不是使用外部ceph,现在手头刚好也有相应的实验资源,花一些时间对5.3版本重新做一次集群实验,使用pve自带的ceph部署工具进行部署。

具体安装步骤就不详细写了,参考“ProxmoxVE 之集群安装(V5.2)” 的安装步骤。

采用硬件配置:在物理机pve环境上面,创建3个虚拟机,3vcpu/12G内存/4块硬盘/2块网卡 ,其中硬盘方面1块硬盘为系统盘32G,2块32G的ceph盘,1块32G的lvm盘,网卡方面1块网卡同时给集群和虚拟机使用(192.168.1.0/24网段),1块网卡作为ceph存储网络(192.168.170.0/24网段)使用。

重要!!!更改软件源,默认是订阅版,如果不做修改,在使用pveceph init进行ceph初始化安装的时候会将整个环境破坏,切记!更改为非订阅版,如下:

将/etc/apt/sources.list.d/pve-enterprise.list 文件内的唯一一条记录注释掉:#deb https://enterprise.proxmox.com/debian/pve stretch pve-enterprisewget -q -O- 'http://download.proxmox.com/debian/pve/dists/stretch/proxmox-ve-release-5.x.gpg' | apt-key add -echo "deb http://download.proxmox.com/debian/pve stretch pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.listapt update && apt dist-upgrade

安装ntp。ceph集群对时间同步的要求很高,需要安装ntp服务:

apt-get install ntp -y

安装完成之后会自动启动并同步debian的时间服务器,注意,是联网的情况下,如果不连接外网,需要设定内网的ntp服务,这里不赘述。

消除“No valid subscription”提示的方法参考下面的网址:

https://johnscs.com/remove-proxmox51-subscription-notice/

即,ssh登录服务器后执行下面的指令:

sed -i.bak "s/data.status !== 'Active'/false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js && systemctl restart pveproxy.service

创建完集群后,如下图:

57f7bc2df9d7156135b9dc36536a2467.png

接下来配置ceph存储:

参考官网这个网址:

https://www.proxmox.com/en/training/video-tutorials/item/install-ceph-server-on-proxmox-ve

这是一个详细的视频教程,基本的设计思路和我这个环境差不多,都是3个节点,只有网络是真正的3个网络,我是因为条件限制,将集群管理和虚拟机业务网络合二为一了,其他的都差不多。

1、首先在每一个节点安装ceph软件包:

pveceph install --version luminous

注意,官网视频里面用的jewel版本,我们安装的pve版本是5.3对应的ceph版本已经是luminous版本了。

2、初始化ceph存储网络:

pveceph init --network 192.168.170.0/24

3、创建mon

pveceph createmon

在pve2和pve3上面登录web界面创建mon:

2d54bad3c661c004522ddc26240978e0.png
232f2ebbe47205278e7660580aeae2cc.png
e8c67788d198c73dcd4ad191824f8fa1.png

4、创建OSD:

680f9cb7bc65e7a99f14cb94269fc2e9.png
779b4851bfbea3cf77edf1dc327166e8.png

sdb和sdc两块磁盘加入到osd ,同样的,对pve2和pve3做同样的操作,完成后如下:

db7a0fdee9990bb081a4eca0cb280c38.png

5、创建pools ,pool的名称是ceph-vm,根据自己需要取,size=3表示正常的副本数,min size=2表示最少的数据副本数,pg_num=128表示逻辑存储单元数未128,具体设置的策略请参考ceph相关文档:

5e176b6263a212f1fb47c73845d0e6a6.png

另外再创建一个测试的存储池test。创建完成后,可以通过web界面看到ceph的整体状态如下:

b7abd4634cb8c290528f8a0a8cacaf01.png

可以使用test测试存储池做一个写测试:

root@pve1:~# rados -p test bench 10 write --no-cleanuphints = 1Maintaining 16 concurrent writes of 4194304 bytes to objects of size 4194304 for up to 10 seconds or 0 objectsObject prefix: benchmark_data_pve1_78670 sec Cur ops started finished avg MB/s cur MB/s last lat(s) avg lat(s) 0 0 0 0 0 0 - 0 1 16 23 7 28.0015 28 0.98669 0.886351 2 16 36 20 39.9226 52 1.98944 1.22191 3 16 43 27 35.9512 28 0.57703 1.17363 4 16 54 38 37.9597 44 1.64156 1.29788 5 16 60 44 35.1689 24 2.00744 1.37846 6 16 68 52 34.6399 32 2.2513 1.50074 7 16 72 56 31.9779 16 2.1816 1.56136 8 16 79 63 31.4803 28 2.38234 1.70338 9 16 87 71 31.5374 32 1.63451 1.8151 10 16 95 79 31.5831 32 2.82273 1.86001 11 8 95 87 31.6205 32 1.66285 1.84418Total time run: 11.064831Total writes made: 95Write size: 4194304Object size: 4194304Bandwidth (MB/sec): 34.343Stddev Bandwidth: 9.54225Max bandwidth (MB/sec): 52Min bandwidth (MB/sec): 16Average IOPS: 8Stddev IOPS: 2Max IOPS: 13Min IOPS: 4Average Latency(s): 1.85056Stddev Latency(s): 0.714602Max latency(s): 3.46178Min latency(s): 0.57703root@pve1:~#

由于我使用的是7200转的磁盘做的pve虚拟机,挂载7200转的磁盘做的虚拟磁盘,表现不佳。正式生产环境,如果是SSD盘,带宽可以达到400M,IOPS可以达到100多。

下面是读测试:

root@pve1:~# rados -p test bench 10 seqhints = 1 sec Cur ops started finished avg MB/s cur MB/s last lat(s) avg lat(s) 0 0 0 0 0 0 - 0 1 16 61 45 179.942 180 0.509001 0.276338 2 14 95 81 161.953 144 0.565471 0.309453Total time run: 2.127305Total reads made: 95Read size: 4194304Object size: 4194304Bandwidth (MB/sec): 178.63Average IOPS: 44Stddev IOPS: 6Max IOPS: 45Min IOPS: 36Average Latency(s): 0.350031Max latency(s): 0.844504Min latency(s): 0.0595479root@pve1:~#

读测试的带宽以及IOPS要比写高很多。同样,由于是测试环境,性能表现欠佳。如果是SSD盘,可以达到2.5G带宽,600 IOPS ,那也是相当不错的。

6、创建RBD存储池:

fc261b5c684475219557f05318c8bfe4.png

接下来,使用这个RBD存储池创建一个centos7虚拟机:

62782158167fcd66a560047e602133ff.png

创建完成start,提示kvm虚拟化设置不支持,原因是我们使用的kvm虚拟机进行测试,kvm虚拟机里面再嵌套创建kvm虚拟机:

24d4a8a4342234a201cf8bbd8a515a1b.png

解决办法,先把该pve节点所有的虚拟机都关闭,在ProxmoxVE物理机上(注意,不是上面3个pve1/pve2/pve3)执行下面的命令:

root@pve:~# modprobe -r kvm_intel注意,如果提示...busy ,说明还有虚拟机在使用,需要先把该pve节点所有的虚拟机都关闭。root@pve:~# modprobe kvm_intel nested=1root@pve:~# cat /sys/module/kvm_intel/parameters/nestedYroot@pve:~# echo "options kvm_intel nested=1" >> /etc/modprobe.d/modprobe.confroot@pve:~# qm showcmd 111/usr/bin/kvm -id 111 -name pve-1 -chardev 'socket,id=qmp,path=/var/run/qemu-server/111.qmp,server,nowait' -mon 'chardev=qmp,mode=control' -pidfile /var/run/qemu-server/111.pid -daemonize -smbios 'type=1,uuid=d9eb0729-f0ee-4176-836d-308b70d13754' -smp '3,sockets=1,cores=3,maxcpus=3' -nodefaults -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' -vga std -vnc unix:/var/run/qemu-server/111.vnc,x509,password -cpu kvm64,+lahf_lm,+sep,+kvm_pv_unhalt,+kvm_pv_eoi,enforce -m 12000 -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 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' -iscsi 'initiator-name=iqn.1993-08.org.debian:01:b48afece2d1' -drive 'file=/var/lib/vz/template/iso/proxmox-ve_5.2-1.iso,if=none,id=drive-ide2,media=cdrom,aio=threads' -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=200' -device 'virtio-scsi-pci,id=scsihw0,bus=pci.0,addr=0x5' -drive 'file=/dev/pvevg2/vm-111-disk-7,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,bootindex=100' -drive 'file=/dev/pvevg2/vm-111-disk-2,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' -drive 'file=/dev/pvevg2/vm-111-disk-3,if=none,id=drive-scsi2,format=raw,cache=none,aio=native,detect-zeroes=on' -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=2,drive=drive-scsi2,id=scsi2' -drive 'file=/dev/pvevg2/vm-111-disk-6,if=none,id=drive-scsi3,format=raw,cache=none,aio=native,detect-zeroes=on' -device 'scsi-hd,bus=scsihw0.0,channel=0,scsi-id=0,lun=3,drive=drive-scsi3,id=scsi3' -netdev 'type=tap,id=net0,ifname=tap111i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on' -device 'virtio-net-pci,mac=76:60:17:9D:6A:FF,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300' -netdev 'type=tap,id=net1,ifname=tap111i1,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown,vhost=on' -device 'virtio-net-pci,mac=6A:93:EB:0E:A8:84,netdev=net1,bus=pci.0,addr=0x13,id=net1,bootindex=301'找到“-cpu kvm64,+lahf_lm,+sep,+kvm_pv_unhalt,+kvm_pv_eoi,enforce”这部分,在enforce前面加“+vmx,”参数如下:-cpu kvm64,+lahf_lm,+sep,+kvm_pv_unhalt,+kvm_pv_eoi,+vmx,enforce然后执行:qm stop 111 停止虚拟机后,再执行上面修改后的命令。虚拟机启动后,ssh进入,执行 grep vmx /proc/cpuinfo 查看是不是有输出,如下:root@pve-1:~# grep vmx /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 ht syscall nx lm constant_tsc nopl xtopology cpuid pni vmx cx16 x2apic hypervisor lahf_lm cpuid_fault pti tpr_shadow vnmi flexpriority ept vpidflags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology cpuid pni vmx cx16 x2apic hypervisor lahf_lm cpuid_fault pti tpr_shadow vnmi flexpriority ept vpidflags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx lm constant_tsc nopl xtopology cpuid pni vmx cx16 x2apic hypervisor lahf_lm cpuid_fault pti tpr_shadow vnmi flexpriority ept vpid表示已经支持虚拟嵌套。

再重新启动上面创建的虚拟机,成功!

0b4ee871f8180f144458bff6f2833045.png

测试成功!

总结:

ProxmoxVE确实使用太方便了,对于稍显复杂的ceph分布式存储,已经做到了方便实施的极限,只需要简单几条初始化的指令,后面全部通过web管理界面进行配置和部署,方便至极,更棒的是,web管理界面还可以实时看到ceph存储的各种状态,相当于完全把ceph存储的管理融合进了PVE的统一管理。

但是使用ceph的前提是,必须对ceph分布式存储本身的一些概念弄清楚,比如ceph 的存储规则,pg的概念,bucket的概念,ceph自身的功能组件mon、osd、pool的概念等等,建议如果对这些概念不熟悉,先通读一遍ceph社区官网的文档,然后动手搭建ceph存储试验。熟悉ceph之后,回过头来再使用pve自带的ceph管理功能就显得非常简单了。

通过上面的实验,也可以看到ProxmoxVE可以做到在自己的平台上快速搭建环境嵌套虚拟化,可以方便广大的PVE爱好者快速的熟悉PVE 的使用。通过我个人的经历,openstack的试验过程和复杂度,比PVE要高出好多倍,openstack如果要做一个完整的试验下来,熟练的情况下,如果要5天,那么,PVE的试验,同样是基础虚拟化功能的条件下,可能只要1天甚至半天就能完成。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值