当前位置: 首页 > >

Proxmox集群之pve-cluster

发布时间:

常见的虚拟化软件或者云计算软件,例如vmware vSphere、Openstack、Clousstack、ovirt,都支持多节点分布式的部署方式,其中节点类型大致包括计算节点,存储节点,控*诘愕鹊鹊鹊取1热鐅mware vSphere,除了esxi计算节点以外,会有一个中心控*诘鉽Center,并且在vCenter上保存了整个虚拟化*台的配置信息。再比如Openstack、Clousstack、ovirt,除了计算节点以外,还会有控*诘悖薪诘阈畔⒍技斜4嬖趍ysql数据库中,控*诘阃ü菘馐迪侄哉*台的管理。


?


Proxmox虽然也支持多节点的分布式部署方式,但Proxmox并没有中心节点的概念,而是采用了基于Corosync的对称集群部署方式(参见《Proxmox集群之Corosync》)。在Proxmox集群中,每一个节点都集成了完全一样的计算、存储、控制功能,每个节点都可以独立完成集群的管理功能。Proxmox集群的信息会在每个节点上保存一份,集群中的节点通过pve-cluster实现集群管理信息的同步,从而保持集群的一致性和完整性。


?


一、pve-cluster对称集群架构的优势


?


1、完全避免了单点故障。对于Proxmox来说,集群中任何节点都是对等的,功能和作用完全一样,只要还有集群中超过一半节点能提供服务,整个集群就可以正常运行!简单说,如果你有5台服务器,宕机2台时集群仍然OK,如果有7台,那么允许宕3台而保证集群正常运行。依次类推,按照4.x版集群最大规模32台服务器,最多允许15台服务器宕机。这样就有效避免了单点故障风险。


?


2、高效利用服务器。Proxmox集群中所有服务器都可用于运行虚拟机,而无需再部署专门的控*诘悖饩吞岣吡朔衿鞯睦寐省1暇梗没Р渴鹦槟饣滓哪康木褪窃诵行槟饣皇侨ヅ芤欢训墓芾斫诘恪L乇鸲杂谥行∮没Ю此担纠淳椭淮蛩悴渴鹑逄ǚ衿鳎贸隽教ǚ衿髯鏊刂*诘闳缺福踔潦侨ǚ衿髯龈隹刂*诘慵海晃吮苊獾サ愎收......打算留几台服务器做计算呢?


?


3、减轻运维工作难度。Proxmox集群里所有节点的功能和作用都是完全一致的,用户无需区别对待,简化了运维工作。用户只要保证Proxmox集群多播通信正常,pve-cluster就能自动确保所有服务器的状态信息协调一致,无须用户额外配置和维护,整个Proxmox集群的高可用性自然就在那里,用户也无需像Openstack管理员那样专门去维护一个mysql数据库之类的东西。


?


二、pve-cluster原理概要


?


pve-cluster主要任务就是管理Proxmox的集群信息数据库。Proxmox采用了轻量级的sqlite3数据库保存集群信息,数据库文件在/var/lib/pve-cluster/config.db。


?


根据Proxmox wiki的信息(参见http://pve.proxmox.com/wiki/Proxmox_Cluster_file_system_(pmxcfs)),pve-cluster还提供了文件系统接口,将该数据库的信息以fuse文件系统的方式挂载在/etc/pve目录下。用户使用常见的linux文件管理命令来读写该文件系统,就可以实现对集群信息的访问和管理。


?


为了提高访问速度,pve-cluster服务创建文件系统完全基于内存。在Proxmox服务器上运行df -h即可看到,这个文件系统基于/dev/fuse设备,挂载在/etc/pve目录下。文件系统并不大,只有30M容量,但却足以保存Proxmox集群信息,并轻松实现数千虚拟机的管理。


?


/etc/pve目录下主要集群信息文件如下


集群信息????????corosync.conf


存储信息????????storage.cfg


用户信息????????user.cfg


调度备份????????vzdump.cron


KVM虚拟机????./nodes/nodename/qemu-server


LXC容器 ????????./nodes/nodename/lxc


?


在集群上任何一台服务器上,对/etc/pve目录下的文件进行任何操作,pve-cluster都会自动通知集群内其他服务器同步操作,确保集群服务器的状态一致。例如用户创建目录,创建文件,修改文件内容,所有操作,pve-cluster都会自动同步到其他服务器上。


?


一般情况下,用户无须直接操作/etc/pve目录,可以通过webgui管理界面发出各种指令,Proxmox的核心服务pvedaemon会代替用户对/etc/pve目录操作,完成各种任务,而pve-cluster将会完成服务器间/etc/pve目录的同步工作,确保集群状态时刻保持一致。


?


退一万步,万一真的很糗,集群内超过一半服务器宕机,又该怎么办呢?可以执行pvecm expected n(n是集群内仍然在线的服务器数量),降低Quorum要求,确保剩余服务器可以组成一个小的集群,pve-cluster将确保这个小集群内服务器状态一致,管理员就可以继续对剩余服务器进行紧急操作咯。



友情链接: