龙空技术网

校园实验室中小企业云计算架构方案多主机虚拟化

一起玩编程 37

前言:

目前朋友们对“清华镜像centos”大概比较讲究,小伙伴们都想要知道一些“清华镜像centos”的相关文章。那么小编也在网上汇集了一些关于“清华镜像centos””的相关文章,希望大家能喜欢,兄弟们快快来学习一下吧!

多主机虚拟化

虚拟化需求

某校园大数据实验室有少量几台高性能服务器,供20多名学生使用,每个学生占用机器的时间不同,需要安装的环境不同,经常发生环境冲突及无机器可用的情况。实验室导师迫切需要将几台服务器统筹管理,从中划分出部分资源供学生独立使用互不干扰,使用完之后及时释放。

根据以上描述,需要使用到多主机虚拟化技术,得出以下虚拟化需求:

有若干台物理宿主机,在宿主机上创建客户机(虚拟机);统一入口管理客户机;客户机相互独立互不干扰,可动态的创建与销毁;客户机操作系统为常见linux或windows,方便学生上手及安装应用程序。常见的虚拟化架构

由于我们个人一般使用windows操作系统,但很多系统运行时需要部署到linux,因此大多数人在windows上使用过VMware workstation、VirtualBox虚拟机。按实现结构分类目前流行的虚拟化架构包括

寄居虚拟化

寄居虚拟化如图所示,最底层是物理硬件,物理硬件之上是主机的操作系统,操作系统之上是VMM(virtual machine monitor,虚拟机管理器),再往上就是虚拟机了。

在这种技术里面,虚拟机对各种物理设备(cpu、内存、硬盘等)的调用,都是通过VMM层和宿主机的操作系统一起协调才完成的。VMvare workstation和Oracle VirtualBox都是基于这种方式实现的。

优点:简单容易实现。可以充分利用现有操作系统的设备驱动程序,VMM无须为各类I/O设备重新实现驱动程序,可以专注于物理资源的虚拟化

缺点:系统损耗大,效率比较低。由于物理资源由宿主机操作系统控制,VMM得要调用宿主机操作系统的服务来获取资源进行虚拟化,而那些系统服务在设计开发之初并没有考虑虚拟化的支持,因此,VMM虚拟化的效率和功能会受到一定影响

裸机虚拟化

裸机虚拟化指的是,直接将VMM安装在硬件设备与物理硬件之间,如图所示。VMM在这种模式下又叫做Hypervisor,虚拟机有指令要执行时,Hypervisor会接管该指令,模拟相应的操作。

其虚拟机管理器即可作为一个“操作系统”,同为虚拟机管理器。实现这类虚拟化的厂商国外比较出名的有VMware Vsphere,国产自主化的有云宏CNware等。

优点:效率高。由于VMM同时具备物理资源的管理功能和虚拟化功能,因此,物理资源虚拟化的效率会更高一些

缺点:实现复杂。设备驱动开发的工作量是很大的。因此,对于Hypervisor模型来说这是个很大的挑战

混合虚拟化

混合模型是上述两种模式的汇合体。VMM依然位于最低层,拥有所有的物理资源。与Hypervisor模式不同的是,VMM 会主动让出大部分I/O设备的控制权,将它们交由一个运行在特权虚拟机中的特权操作系统控制。相应地,VMM 虚拟化的职责也被分担.处理器和内存的虚拟化依然由VMM来完成,而I/O的虚拟化则由VMM和特权操作系统共同合作来完成。

采用这种模型的典型是Xen。与Xen经常被同时提起的还有一种技术KVM(Kernel-based Virtual Machine 基于内核的虚拟机),其已经被写入Linux内核。这两种都是开源的虚拟化解决方案,而KVM社区活跃度更强。

KVM在“形式”上,属于寄居虚拟化,KVM是一种虚拟机监控器,又为“虚拟机管理器”(VMM),负责管理虚拟机(又称客户机)的创建、启动、关闭和销毁(即管理生命周期),安装在主机(即物理机)上,通过主机操作系统访问物理机的资源。

寄居虚拟化是将VMM安装在已有的主机操作系统上,而另一种虚拟化结构——裸机虚拟化,是直接把VMM安装在服务器 的硬件设备中,相当于一个操作系统。KVM是安装在Linux(操作系统)的内核中,无法绝对划归于哪一类。

思考:

工业上常用的docker容器属性哪一种虚拟化架构?

由于docker需要安装在操作系统中,然后再运行各个docker容器(小型linux操作系统),笔者认为其属于寄居虚拟化。

虚拟技术选型根据前述虚拟化架构优缺点,结合实验室的多主机虚拟化需求。先排除寄居虚拟化(VirtualBox、VMware workstation),其无法实现多宿主机上的客户机管理。优先考虑VMware Vsphere方案,但该方案需要高价付费授权(免费试用期60天)且安装部署复杂。其次考虑开源的混合模型,因Xen部署更复杂(如果你需要更新Xen的版本,你需要重新编译整个内核)且Xen活跃度在下降,最终选择了写入了Linux内核、更轻量的KVM。

为什么不考虑Kubernetes (k8s)?

K8s可很方便的进行多主机集群,客户机(容器)管理,看起来很适合。

用户使用虚拟机时,会安装各种各样的应用程序、上传数据,以致于虚拟机的状态不断更新。k8s的docker容器更适合无状态的虚拟机。容器不便操作,常规的容器命令行操作要通过宿主机命令行,不符合当前的使用需求。集群管理

要实现一个可运行、可运维的KVM虚拟化解决方案,需要解决两个问题,

第一个是虚拟化技术实现问题,

第二个是集群虚拟机管理问题。

前面所介绍的内容只是解决了虚拟化技术问题,还有集群虚拟机管理问题没有解决,因此我们需要有一套KVM管理工具实现对KVM虚拟化的管理和运维。到目前为止,KVM拥有从virsh命令行工具到OpenStack云管理平台工具等一整套的开源KVM管理工具,这些工具的能力层次各有不同。

初级,“KVM+virsh”虚拟化解决方案主要是通过在/etc/libvirtd/qemu里面的“.xml”配置文件去描述每一台虚拟机的配置,然后用virsh命令行管理虚拟机,最后用VNC/SPICE按照配置好的端口链接过去,模拟终端操作。基于单机管理模式。中级,“KVM+virt-manager”虚拟化解决方案主要是通过桌面图形化工具virt-manager直接创建、编译和管理虚拟机。使用桌面版本的 VNC/SPICE连接到KVM主机,输入“virt-manager”命令之后,自动弹出虚拟系统管理器窗口来进行创建、编译和管理虚拟机工作。这种方式仍然属于基于单机管理模式。高级,“KVM+Web管理工具”虚拟化解决方案主要是通过Proxmox VE、WebVirtMgr、Kimchi以及oVirt等各种轻量级的Web GUI工具进行中小规模级别的虚拟机集群管理。Web GUI工具简单易用易理解,尤其是傻瓜化的Proxmox VE,更是受小白们欢迎。“KVM+Web管理工具”这种方式可以实现中小规模化的虚拟机集群管理。超级段位,“KVM+云管理平台工具”虚拟化解决方案主要通过OpenStack、ZStack等云管理平台来管理一个或多个数据中心的所有计算资源池、存储资源池、网络资源池等硬件资源,可以实现大规模/超大规模的KVM主机管理。

第1、2套无法管理集群,第4套OpenStack 又基本需要一个 DevOps 团队才玩得转。所以作为个人或者中小团队,买了几台硬件过来,想把它变成一套小型的阿里云,腾讯云的系统,可以在 web 上创建/配置虚拟机,装系统,管理硬件资源,进行迁移备份等,基本就是第3套解决方案。

Proxmox VE

Proxmox VE(Virtual Environment)的使用很简单,很傻瓜化,深受小白们的欢迎。管理操作可以通过内嵌的Web GUI完成,不需要专门安装管理工具或基于大型数据库的管理服务器节点。多主集群架构能够让你通过任意节点管理整个集群。基于JavaScript框架(ExtJS)开发的集中Web管理界面不仅能够让你通过GUI 界面控制一切功能,而且可以浏览每个节点的历史活动和syslog日志,例如虚拟机备份恢复日志、虚拟机在线迁移日志、HA活动日志等。

WebVirtMgr

WebVirtMgr是一个基于libvirt开发的KVM管理平台,提供对宿主机和虚机的统一管理,它有别于KVM自带的图形管理工具(virtual machine manager),让KVM的管理变得更为可视化,比较合适用于小型的KVM应用场景,比如对于虚拟机在10-200之间的集群来说,采用WebvirtMgr是一种不错的选择。

Kimchi

Kimchi是一款基于HTML5的KVM管理工具,它被设计成尽可能容易使用KVM并创建虚拟机的Web工具,它通过libvirt管理KVM虚拟机。

oVirt

oVirt是Red Hat虚拟化管理平台RHEV的开源版本,利用oVirt管理KVM虚拟机和网络,企业可以快速地搭建一个私有云环境,oVirt基于Web方式进行管理,管理界面非常友好,oVirt比较适合较中小集群规模,比如虚拟机上千的集群,使用oVirt是一种不错的选择。

为快速上线,笔者选择了Proxmox VE方案。

Proxmox VE 虚拟机集群管理

为验证方案可行性,现在一台服务器上用几台VMware虚拟服务器进行测试。

proxmox服务器安装下载

下载proxmox 最新的ISO镜像文件,

下载地址选择bt种子下载Proxmox VE 7.3 ISO Installer (BitTorrent),点击download按钮,种子下载后使用迅雷创建任务,添加BT任务

安装系统创建VMware虚拟机创建其他 Linux 5.x 内核 64 位空白虚拟机编辑虚拟机设置,内存4g;处理器2核心勾选虚拟化引擎(虚拟化Intel VT-x或AMD-V,重要,否则Proxmox无法创建虚拟机);CD/DVD使用ISO镜像文件(选择下载的Proxmox VE镜像);网络适配器选择自定义 特定虚拟网络 VMnet1 (仅主机模式),该模式方便ip专用,避免ip冲突;安装Proxmox VE系统前面步骤较为简单,选择install proxmoxve、点击下一步、设置密码邮箱等。网络设置需要注意,此处只用了一张网卡。三个服务器配置为

主机名:pve1.认证域~pve3.认证域IP:192.168.29.11~192.168.29.13网关:192.168.29.1DNS默认

Hostname设置为pve1.local-pve3.local。网关192.168.29.1 ip为VMnet1虚拟网卡的ip

确认之后点击install, proxmox ve系统开始安装,安装完成后自动重启集群创建及配置创建并加入集群

VMware中proxmox ve虚拟机启动后,输入用户名root及安装时设置的密码进入命令行

不指定网卡创建集群

在任一proxmox ve服务器(这里以192.168.29.11为例)命令行输入pvecm create clust1即可创建集群clust1

pvecm create clust1

查看集群状态

pvecm status

加入集群

分别登录其他节点,执行命令:pvecm add 192.168.29.11 。如果集群中已有多台服务器,这里ip可以改成集群中任一服务器ip

pvecm add 192.168.29.11

指定网卡

proxmox ve服务器有多张网卡,可指定网卡对应的ip来创建集群

创建集群

若proxmox ve服务器有两张网卡,网卡1 ip 192.168.29.11、网卡2 ip 172.10.10.11,可指定网卡2创建集群

pvecm create clust1 --link0 172.10.10.11

加入集群

分别登录其他节点,执行命令:pvecm add 172.10.10.11 --link0 172.10.10.12,即加上各个节点网卡2的地址。

pvecm add 172.10.10.11 --link0 172.10.10.12

在浏览器输入,用户名root,输入安装时设置的密码即可登录集群管理界面。最终效果如下图

退出集群在需要退出集群的node例如pve3上停止pve-cluster 服务

systemctl stop pve-cluster.servicesystemctl stop corosync.service

node pve3上集群系统文件设置未本地模式

pmxcfs -l

删除 pve3 corosync 和节点配置文件

rm /etc/pve/corosync.confrm -rf /etc/corosync/*rm -rf /etc/pve/nodes/*
重新启动pve3的集群文件系统服务
killall pmxcfssystemctl start pve-cluster.service

安全删除节点:登陆其它正常节点pve1或pve2,查看所有的节点:

pvecm nodes
删除目标节点

pvecm delnode pve3
创建虚拟机

接下来我们将在Proxmox VE服务器上安装虚拟机

虚拟机安装

先实现最简单的虚拟机安装方式,直接通过Proxmox VE服务器的本地存储的ISO镜像安装虚拟机。

下载Linux的安装镜像文件,此处以Centos7为例,下载地址 清华大学开源软件镜像站 | 上传iso镜像到proxmox ve某个节点的local存储浏览器输入 账号root,输入安装时设置的密码登录选择节点下的local树形节点——点击ISO镜像菜单——点击上传按钮——点击选择文件,选择刚下载好的centos镜像上传完iso镜像后点击右上角“创建虚拟机”

常规——输入虚拟机名称,其他保持默认

操作系统——存储默认local、类别Linux、ISO镜像选择刚上传的Centos7 iso镜像、版本选择5.x - 2.6 Kernel

系统——保持默认

磁盘——保持默认

CPU——保持默认

内存——保持默认

网络——保持默认

确认——勾选创建后启动,点击完成按钮

安装虚拟机操作系统点击centos7虚拟机——选择控制台——进入控制台后按向上光标选择“Install CentOS 7” 启动安装引导程序启动安装引导后等待一段时间,选择安装语言中文-简体中文安装信息摘要设置

必须:选择安装位置

可选:软件选择,此次安装为加快速度采用最小安装

点击安装位置进入安装目标位置选择界面,保持默认直接点击完成即可

回到安装摘要信息,点击开始安装按钮即可开始安装

开始安装后,点击ROOT密码设置,为ROOT用户设置密码

设置密码,点击完成按钮,若密码过于简单则多点击几次完成按钮

等待虚拟机安装完成重启虚拟机,等待一段时间,虚拟机重启后在控制台输入账号root、密码进入虚拟机命令行即可开始操作虚拟机虚拟机网络配置

虚拟机自动桥接了proxmox ve服务器的网卡,默认自动获取ip,改成静态ip

编辑网卡配置,在虚拟命令行输入

vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改BOOTPROTO-获取ip方式dhcp改成static,ONBOOT-自启动no改成yes,增加静态ip、网关(同proxmox ve服务器的网关一样——VMnet1的ip)、DNS的配置,最终配置如下

TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_FAILURE_FATAL=noIPV6_ADDR_GEN_MODE=stable-privacyNAME=eth0UUID=e486fd6c-e8c4-424d-9584-8d8bbec01c2fDEVICE=eth0ONBOOT=yesIPADDR=192.168.29.111NETMASK=255.255.255.0GATEWAY=192.168.29.1DNS1=8.8.8.8

:wq保存

重启虚拟机网卡

systemctl restart network

集群外机器即可通过虚拟机ip访问虚拟机。也可通过xshell等工具直接ssh连接虚拟机。

扩展安装(可选)多服务器共享目录NFS(可选)

NFS 网络文件系统,英文Network File System,多个Proxmox VE服务器组建集群后,ISO镜像、备份文件等需在各个服务器间共享,前述虚拟机安装的local iso只能在当前服务器上使用,集群中其他服务器不可使用,因此可以创建NFS服务,NFS可安装到单独的服务器也可安装在集群中的某个节点上,此处以安装到pve3节点举例。

配置安装源修改/etc/apt/sources.list.d/pve-enterprise.list文件,注释其中的配置

#deb  bullseye pve-enterprise
修改/etc/apt/sources.list文件,注释原来的配置,增加中科大的安装源
# 中科大源deb  bullseye main contrib non-freedeb  bullseye-updates main contrib non-free#deb  bullseye main contrib#deb  bullseye-updates main contrib# security updates#deb  bullseye-security main contrib

应用源的更新

apt-get update

安装nfs服务

apt-get install nfs-common nfs-kernel-server -y
创建共享目录
mkdir -p /data/share/pvechmod 777 /data/sharechmod 777 /data/share/pve

修改/etc/exports文件,增加共享的目录内容

/data/share *(rw,sync,insecure,no_root_squash)

启动nfs服务

systemctl restart nfs-server.service
检查nfs是否成功

showmount -e

输出以下结果

Export list for pve3:/data/share *

集群中添加NFS选中数据中心——存储——添加按钮——NFS添加NFS,输入ID、服务器192.168.29.13、选择Export,点击添加按钮完成NFS创建创建后效果如下可在NFS中上传ISO镜像,创建虚拟机时除了从local选择ISO镜像,也可从NFS选择镜像

选中share——ISO镜像——上传按钮——选择文件——点击上传

上传完ISO到NFS后,创建虚拟机时可以从NFS选择ISO镜像

Ceph分布式文件系统安装(可选)

Ceph以其先进的去中心化设计,成为了分布式块存储领域的佼佼者,它可以将多台服务器中的硬盘聚合成一个集群,对外可提供文件存储、块存储、对象存储等多种形式,Ceph的另一个特点是数据采用多副本方式存储,避免由于单点故障造成的业务中断和数据丢失。

一个 ceph 集群的组成部分:若干的 Ceph OSD(对象存储守护程序) 至少需要一个 Ceph Monitors 监视器(1,3,5,7…) 两个或以上的 Ceph 管理器 managers,运行 Ceph 文件系统客户端是 还需要高可用的 Ceph Metadata Server(文件系统元数据服务器)。

RADOS cluster:由多台 host 存储服务器组成的 ceph 集群OSD(Object Storage Daemon):每台存储服务器的磁盘组成的存储空间Mon(Monitor):ceph 的监视器,维护 OSD 和 PG 的集群状态,一个 ceph 集群至少要有一个 mon,可以是一三五七等等这样的奇数个。Mgr(Manager):负责跟踪运行时指标和 Ceph 集群的当前状态,包括存储利用率,当前性 能指标和系统负载等。

这里我们通过Proxmox VE的管理WEB界面集群管理进行Ceph创建,要在每个节点上安装ceph。

增加Ceph源

修改所有proxmox VE服务器 /etc/apt/sources.list,增加ceph源

#ceph更新源deb  buster pve-no-subscriptiondeb  bullseye main

注意:ceph-quincy为ceph的版本,由proxmox ve中ceph安装的版本确定,proxmox ve 7.3 版本对应的是ceph-quincy

最终,所有proxmox ve服务器的源配置如下:

/etc/apt/sources.list

# 中科大源deb  bullseye main contrib non-free# deb-src  bullseye main contrib non-freedeb  bullseye-updates main contrib non-free# deb-src  bullseye-updates main contrib non-free#ceph更新源deb  buster pve-no-subscriptiondeb  bullseye main#deb  bullseye main contrib#deb  bullseye-updates main contrib# security updates#deb  bullseye-security main contrib

/etc/apt/sources.list.d/pve-enterprise.list

#deb  bullseye pve-enterprise
proxmox ve web界面选中节点——ceph——安装ceph

点击开始quincy安装按钮

输入y继续

等待ceph-quincy安装完成点击下一步进入ceph网络配置

一般proxmox ve服务器要求多张网卡,集群内部网络通信量大,公网访问和集群内部互联访问采用不同网卡,此处只有一张网卡,因此设成相同ip。

点击下一步——完成Ceph的创建

Ceph监视器

提示 'OSD count 0 < osd_pool_default_size 3',接下来创建OSD

配置Ceph的OSD

在pve1中,选择“Ceph→OSD→创建:OSD”

提示没有未使用的磁盘,因为我们的proxmox ve服务器只有一块盘,需要给proxmox ve所有服务器再加一块磁盘,如果服务器有多块磁盘则可忽略。

停止proxmox ve服务器——编辑设置——在硬件中选择磁盘——点击添加

前面按照默认设置,指定磁盘容量时,设置为合适大小

重启各proxmox ve服务器之后,再回到集群管理界面,再次创建OSD,有可选择磁盘

选择磁盘,点击创建即可完成 OSD创建,结果如下:

创建其他节点的OSD与pve1类似,这里不做详述。最终效果如下:

配置CephFS(可选)

选择“数据中心-pve1→Ceph→CephFS→元数据服务器→创建,创建元数据服务器

将pve1添加到元数据服务器。

点击创建CephFS

弹框中保持默认,点击创建

等待cephfs创建完成

然后,再用同样的方法将pve2、pve3添加到元数据服务器之中去。

可以在Ceph监控界面看到元数据服务器的监控信息,如图元数据服务器监控界面

配置Pools资源池创建ssd_storage存储

选择“数据中心→ pve1→Ceph→Pools→创建”,点击“创建”按钮,创建名称为“ssd_storage”的存储

根据官方的文档,pg_num这个数值比较关键,如果不合适的话,Ceph会告警,官方建议:

若少于5个OSD, 设置pg_num为128。5~10个OSD,设置pg_num为512。10~50个OSD,设置pg_num为4096。

我们这里3个OSD,采用默认值128

创建之后如图所示。

pve2、pve3的Pools资源池配置会同步pve1资源池配置所以无需在单独配置(7.0特性)。

之后我们可以在cephfs中上传镜像,一个节点上传,其他节点都可见

cephfs中的镜像可用于虚拟机安装ISO镜像

ceph - pools中的ssd_storage可作为虚拟机安装的目标磁盘

参考文献虚拟化技术基础 ()虚拟化的三种类型是什么?每一种类型都用于什么?()案例为王 | 解剖虚拟化技术(KVM&Xen)()KVM虚拟化解决方案系列之KVM架构篇()KVM 虚拟化环境搭建 - ProxmoxVE()KVM虚拟化解决方案系列之KVM管理工具-绪论篇()群集加入失败 此主机已包含虚拟客户机()proxmox退出集群( )

标签: #清华镜像centos #centos7清华镜像