CN104253860B - 一种基于共享存储消息队列的虚拟机高可用实现方法 - Google Patents

一种基于共享存储消息队列的虚拟机高可用实现方法 Download PDF

Info

Publication number
CN104253860B
CN104253860B CN201410462083.6A CN201410462083A CN104253860B CN 104253860 B CN104253860 B CN 104253860B CN 201410462083 A CN201410462083 A CN 201410462083A CN 104253860 B CN104253860 B CN 104253860B
Authority
CN
China
Prior art keywords
virtual machine
client
program
sector
heartbeat message
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410462083.6A
Other languages
English (en)
Other versions
CN104253860A (zh
Inventor
阮泽林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WUHAN OS-EASY CLOUD COMPUTING Co Ltd
Original Assignee
WUHAN OS-EASY CLOUD COMPUTING Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by WUHAN OS-EASY CLOUD COMPUTING Co Ltd filed Critical WUHAN OS-EASY CLOUD COMPUTING Co Ltd
Priority to CN201410462083.6A priority Critical patent/CN104253860B/zh
Publication of CN104253860A publication Critical patent/CN104253860A/zh
Application granted granted Critical
Publication of CN104253860B publication Critical patent/CN104253860B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

一种基于共享存储消息队列的虚拟机高可用实现方法,涉及云计算领域,包括步骤:服务端程序在共享存储上初始化一块连续的空间作为逻辑卷;从逻辑卷中分配连续的多个扇区作为客户端程序的扇区池;客户端程序获取扇区池的配置信息和已启用高可用的虚拟机号;客户端程序发送心跳消息,并更新本客户端程序维护的虚拟机控制块的时间戳;服务端程序接收心跳消息,利用心跳消息中携带的时间戳更新服务端程序维护的虚拟机控制块的时间戳。本发明避免不必要的虚拟机停机时间,心跳检测机制消耗系统资源少,性能高,延长共享存储磁盘的使用寿命。

Description

一种基于共享存储消息队列的虚拟机高可用实现方法
技术领域
本发明涉及云计算领域,具体涉及一种基于共享存储消息队列的虚拟机高可用实现方法。
背景技术
在云计算数据中心,虚拟机通常运行在物理服务器上,当物理服务器断电或发生其他故障时,运行在其上的虚拟机也会关闭,导致虚拟机中运行的用户业务被意外中断。如果要保证用户业务被意外中断后能够自动恢复,则需要实时监控虚拟机的状态,在物理服务器发生故障时,将其上的虚拟机转移到其他服务器上重新启动,这称为虚拟机高可用。虚拟机高可用需要使用共享存储来存放虚拟机的磁盘文件,使得所有的服务器都能访问到共享存储上的磁盘文件,以便在检测到服务器断电后,其他正常运行的服务器能够从共享存储上读取虚拟机的磁盘文件并启动虚拟机。
为了实时检测虚拟机的状态,需要引入心跳检测机制,当检测不到虚拟机的心跳时,说明该虚拟机已经关闭,从而选择一台正在运行的服务器重新启动该虚拟机。目前虚拟机心跳检测机制有两种:
1、基于管理网络的心跳检测。所有服务器通过管理网络交换虚拟机状态消息,当服务器断电时,该服务器不再发送虚拟机状态消息,其他正常运行的服务器会检测到故障服务器上的虚拟机状态消息超时,触发虚拟机故障转移,从而重新启动该虚拟机。但是,当服务器只是管理网络断开而并非服务器故障时,该服务器发送的虚拟机状态消息无法被其他服务器收到,此时也会触发虚拟机故障转移,然而,如果仅仅只是管理网络断开,虚拟机可以正常运行,虚拟机里的用户业务也可以被正常访问,此时触发虚拟机故障转移会导致用户业务中断,导致不必要的虚拟机停机时间。
2、基于共享存储锁的心跳检测。为了解决管理网络断开导致不必要的虚拟机故障转移,将虚拟机的锁信息保存在共享存储上,所有的服务器都通过共享存储读取虚拟机的锁信息。当服务器的管理网络连接时,通过管理网络交换虚拟机的状态信息;当服务器的管理网络断开时,通过共享存储更新虚拟机的锁信息,此时不会触发虚拟机故障转移;当服务器断电或者管理网络和存储网络都断开时,共享存储上的虚拟机的锁信息不再被更新,从而触发虚拟机故障转移。目前基于共享存储锁的心跳检测的常用实现方法是:为每个虚拟机磁盘文件分配一个扇区(通常大小为512字节),用来保存该虚拟机磁盘文件的共享存储锁,服务器在启动虚拟机之前先尝试获取虚拟机磁盘文件的共享存储锁,如果虚拟机磁盘文件没有被其他服务器上锁,则上锁并启动该虚拟机;如果虚拟机磁盘文件已被其他服务器上锁,且其锁没有超时,则无法启动该虚拟机;如果虚拟机磁盘文件已被其他服务器上锁,但其锁已超时,则抢占锁并启动该虚拟机。持有虚拟机共享存储锁的物理服务器周期性更新锁状态,当服务器断电或存储网络断开时,其持有的虚拟机共享存储锁将不再被更新,等到锁超时后,其他正常运行的物理服务器可以抢占这些虚拟机的共享存储锁,并启动虚拟机,从而实现虚拟机故障转移。但是这种方法同样存在一些缺点,假设数据中心有10台服务器,每台服务器上运行30个虚拟机,总共300个虚拟机全部开启虚拟机高可用,则:虚拟机共享存储锁占用空间比较大,总共需要512×300=153600字节存储空间;虚拟机心跳检测占用的网络带宽大,每次读取或更新共享存储锁都会传输512×300=153600字节;为了实时获取共享存储锁状态,服务器在更新虚拟机共享存储锁的时候会禁用缓存,直接写磁盘,这样会大大缩短磁盘寿命,如果磁盘的最大写次数为360000次,虚拟机心跳检测周期为10秒,则每个虚拟机共享存储锁在使用360000×10÷3600=1000小时后出现坏道。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种基于共享存储消息队列的虚拟机高可用实现方法,其避免不必要的虚拟机停机时间,心跳检测机制消耗系统资源少,性能高,延长共享存储磁盘的使用寿命。
为达到以上目的,本发明采取的技术方案是:一种基于共享存储消息队列的虚拟机高可用实现方法,用于数据中心,数据中心包括一个控制节点、一个共享存储和至少两个计算节点,控制节点运行服务端程序,每个计算节点上运行客户端程序,客户端程序为运行在本计算节点上的每个已启用高可用的虚拟机创建一个虚拟机控制块并维护,服务端程序为运行在所有计算节点上的每个已启用高可用的虚拟机创建一个虚拟机控制块并维护,实现方法包括以下步骤:
S1.服务端程序在共享存储上初始化一块连续的空间作为逻辑卷;
S2.每个客户端程序分别连接到服务端程序,服务端程序从逻辑卷中分配连续的多个扇区作为该客户端程序的扇区池,并在扇区池的最后一个扇区写入该客户端程序的唯一标识,所述最后一个扇区前面的连续扇区作为该客户端程序的共享存储消息队列;
S3.客户端程序从服务端程序获取该客户端程序的扇区池配置信息和已启用高可用的虚拟机号;
S4.客户端程序向服务端程序周期性发送心跳消息,并更新本客户端程序维护的虚拟机控制块的时间戳,客户端程序检查其维护的每个虚拟机控制块是否超时;
S5.服务端程序接收客户端程序发送的心跳消息,利用心跳消息中携带的时间戳更新服务端程序维护的虚拟机控制块的时间戳,服务端程序检查其维护的每个虚拟机控制块是否超时。
在上述技术方案的基础上,客户端程序的扇区池配置信息包括扇区池所在的逻辑卷、开始扇区号、结束扇区号、每个扇区的大小。
在上述技术方案的基础上,数据中心还包括管理网络交换机,控制节点、计算节点和管理网络交换机形成管理网络,控制节点、计算节点和共享存储形成存储网络,客户端程序和服务端程序优先通过管理网络传输心跳消息,当管理网络断开时通过存储网络传输心跳消息。
在上述技术方案的基础上,心跳消息包括时间戳、扇区池号、客户端程序标识和运行在本计算节点上的已启用高可用的虚拟机号列表。
在上述技术方案的基础上,虚拟机号列表的格式为“[虚拟机号,虚拟机号,虚拟机号]”。
在上述技术方案的基础上,每个虚拟机控制块记录虚拟机的高可用信息,包括虚拟机号、超时时长、故障转移优先级、时间戳、该虚拟机所在计算节点的客户端程序标识。
在上述技术方案的基础上,步骤S4中,客户端程序通过管理网络向服务端程序发送心跳消息,如果发送成功,直接更新本客户端程序维护的虚拟机控制块的时间戳;如果发送失败,将心跳消息写入本客户端程序的扇区池的共享存储消息队列中,再更新本客户端程序维护的虚拟机控制块的时间戳;客户端程序检查其维护的每个虚拟机控制块是否超时,如果超时,删除超时的虚拟机控制块,并关闭该虚拟机,客户端程序继续向服务端程序发送心跳消息;如果未超时,客户端程序继续向服务端程序发送心跳消息。
在上述技术方案的基础上,心跳消息的写入方式为循环使用共享存储消息队列中的扇区,每次使用的扇区为上一次使用后的下一个扇区,当写入最后一个扇区时,下次写入第一个扇区。
在上述技术方案的基础上,步骤S5中,服务端程序通过管理网络接收客户端程序发送的心跳消息,如果在指定时间内接收成功,利用心跳消息中携带的时间戳更新服务端程序维护的虚拟机控制块的时间戳;如果超过指定时间未接收到心跳消息,则读取该客户端程序的扇区池的共享存储消息队列中的所有心跳消息,并从中读取最新的心跳消息,再利用心跳消息中携带的时间戳更新服务端程序维护的虚拟机控制块的时间戳;服务端程序检查其维护的每个虚拟机控制块是否超时,如果超时,选择另一台计算节点并通知其重新启动已超时的虚拟机,服务端程序继续接收心跳消息;如果未超时,服务端程序继续接收心跳消息。
本发明的有益效果在于:
1、本发明实现方法主要用于云计算数据中心,多台服务器优先通过管理网络交换心跳消息,当管理网络断开时,通过共享存储消息队列交换心跳消息,监控虚拟机的当前状态,并在虚拟机控制块超时的时候,关闭虚拟机并通知其他可用的计算节点重新启动该虚拟机,使得在虚拟机或运行虚拟机的服务器出现故障时触发故障转移,虚拟机中的业务在短暂的中断后能够自动恢复,不需要用户手动干预,且避免因管理网络断开立即触发故障转移导致不必要的虚拟机停机时间。
2、本发明实现方法的一台计算节点上所有正在运行的已启用高可用的虚拟机状态集中于一条心跳消息中,并存储于一个扇区中,而不是分散在多个扇区中,一次磁盘写操作可以更新多个虚拟机的状态,因此心跳消息的写入速度快。并且多条心跳消息是连续存放在扇区池的共享存储消息队列中的,一次磁盘读操作就可以读取多条心跳消息,因此心跳消息的读取速度快。
3、本发明实现方法的心跳检测机制消耗系统资源少。假设共享存储扇区大小为512字节,每台服务器上运行30个已启用高可用的虚拟机,虚拟机号为5位数,心跳消息中虚拟机号列表格式为“[虚拟机号,虚拟机号,虚拟机号]”,则心跳消息中最长的字段虚拟机号列表长度为30×(5+2)=210字节,整个心跳消息长度不会超过一个扇区,扇区池使用2个扇区(一个用于存放客户端程序的唯一标识,另一个作为共享存储消息队列用于存放虚拟机心跳消息),则每个扇区池占用1024字节,10台服务器总共需要扇区池10240字节,远远小于基于共享存储锁的心跳检测机制所占用的153600字节共享存储空间。同时虚拟机心跳检测消息占用的网络带宽为10240字节,也远远小于基于共享存储锁的心跳检测机制的153600字节。
4、本发明实现方法通过使用循环的共享存储消息队列存放心跳消息,可以减少一个扇区在单位时间内的写次数,从而延长扇区的使用寿命。假设每个扇区池使用5个扇区(一个用于存放客户端程序的唯一标识,4个作为共享存储消息队列用于循环存放虚拟机心跳消息),如果磁盘的最大写次数为360000次,虚拟机心跳检测周期为10秒,则每个扇区在使用360000×10×4÷3600=4000小时后出现坏道,远远大于基于共享存储锁的心跳检测机制的1000小时。
5、通过调整共享存储消息队列的大小,可以在系统资源开销和磁盘使用寿命之间调整平衡。共享存储消息队列占用的扇区越多,则系统资源开销越大,磁盘使用寿命越长。
附图说明
图1为本发明虚拟机高可用实现方法的流程图;
图2为客户端程序发送心跳消息的详细流程图;
图3为服务端程序接收心跳消息的详细流程图;
图4为本发明实施例中虚拟机高可用实现方法对应的数据中心示意图;
图5为本发明实施例中逻辑卷的结构示意图。
具体实施方式
以下结合附图对本发明作进一步详细说明。
如图4所示,数据中心包括一个控制节点、一个管理网络交换机、一个共享存储和至少两个计算节点,控制节点运行服务端程序,每个计算节点上运行客户端程序。控制节点、计算节点和管理网络交换机连接形成管理网络,控制节点、计算节点和共享存储连接形成存储网络,客户端程序和服务端程序优先通过管理网络传输心跳消息,当管理网络断开时通过存储网络传输心跳消息。客户端程序为运行在本计算节点上的每个已启用高可用的虚拟机创建一个虚拟机控制块并维护,服务端程序为运行在所有计算节点上的每个已启用高可用的虚拟机创建一个虚拟机控制块并维护,其中服务端程序维护的虚拟机控制块超时时长比客户端程序维护的虚拟机控制块超时时长要长,每个虚拟机控制块记录虚拟机的高可用信息,包括虚拟机号、超时时长、故障转移优先级、时间戳、本虚拟机所在计算节点的客户端程序标识。
如图1所示,基于共享存储消息队列的虚拟机高可用实现方法,用于数据中心,包括如下步骤:
S1.服务端程序在共享存储上初始化一块连续的空间作为逻辑卷,用于虚拟机的心跳检测,其大小为共享存储扇区大小的整数倍。
S2.每个客户端程序分别连接到服务端程序,服务端程序查询数据库中是否有该客户端程序的扇区池配置信息,客户端程序的扇区池配置信息包括扇区池所在的逻辑卷、开始扇区号、结束扇区号、每个扇区的大小。如果没有,则从逻辑卷中分配连续的多个扇区作为该客户端程序的扇区池,将该扇区池配置信息记录到数据库,给该客户端程序使用,并在扇区池的最后一个扇区写入该客户端程序的唯一标识,用于防止其他客户端程序使用该扇区池,而所述最后一个扇区前面的连续扇区作为该客户端程序的共享存储消息队列,用于该客户端程序和服务器程序交换心跳消息。
S3.客户端程序通过管理网络从服务端程序获取该客户端程序的扇区池的配置信息和已启用高可用的虚拟机号。
S4.客户端程序向服务端程序发送心跳消息,并更新本客户端程序维护的虚拟机控制块的时间戳,无论心跳消息发送成功或失败,客户端程序检查其维护的每个虚拟机控制块是否超时。如图2所示,详细步骤如下:
S41.客户端程序通过管理网络向服务端程序周期性发送心跳消息;
S42.判断心跳消息是否发送成功,若是,代表心跳消息发送成功,进入S43;若否,进入S44;
S43.更新本客户端程序维护的虚拟机控制块的时间戳,进入S46;
S44.将心跳消息写入该客户端程序的扇区池的共享存储消息队列中;
S45.判断心跳消息是否写入成功,若是,代表心跳消息发送成功,进入S43;若否,代表心跳消息发送失败,进入S46;
S46.检查本客户端程序维护的每个虚拟机控制块是否超时,若是,进入S47;若否,进入S41;
S47.删除超时的虚拟机控制块,并关闭该虚拟机,进入S41。
其中,心跳消息包括时间戳、扇区池号、客户端程序标识和运行在本计算节点上的已启用高可用的虚拟机号列表,虚拟机号列表的格式为“[虚拟机号,虚拟机号,虚拟机号]”。更新本客户端程序维护的虚拟机控制块的时间戳的方式为,查找发送成功的心跳消息中每个虚拟机号所对应的虚拟机控制块,用心跳消息的时间戳替换所述虚拟机控制块的时间戳。为了延长共享存储磁盘的使用寿命,心跳消息的写入方式为循环使用共享存储消息队列中的扇区,每次使用的扇区为上一次使用后的下一个扇区,当写入最后一个扇区时,下次写入第一个扇区。
S5.服务端程序接收客户端程序发送的心跳消息,利用心跳消息中携带的时间戳更新服务端程序维护的虚拟机控制块的时间戳,服务端程序检查其维护的每个虚拟机控制块是否超时。如图3所示,详细步骤如下:
S51.服务端程序通过管理网络接收客户端程序发送的心跳消息;
S52.判断心跳消息在指定时间内是否接收成功,若是,代表从管理网络读取心跳消息成功,进入S53;若否,进入S54;
S53.利用心跳消息中携带的时间戳更新服务端程序维护的虚拟机控制块的时间戳,进入S56;
S54.读取该客户端程序的扇区池的共享存储消息队列中的所有心跳消息,并从中读取最新的心跳消息;
S55.判断心跳消息是否读取成功,若是,代表从存储网络读取心跳消息成功,进入S53;若否,代表从管理网络和存储网络读取到心跳消息失败,有可能是服务端程序所在控制节点的管理网络和存储网络都断开了,此时无法判断虚拟机状态,进入S51;
S56.检查服务端程序维护的每个虚拟机控制块是否超时,若是,进入S57,若否,进入S51;
S57.选择另一台合适的计算节点并通知其重新启动已超时的虚拟机,进入S51。
其中,更新服务端程序维护的虚拟机控制块的时间戳的方式为,查找接收成功的心跳消息中每个虚拟机号所对应的虚拟机控制块,用心跳消息的时间戳替换所述虚拟机控制块的时间戳。为了提高读取心跳消息的速度,读取心跳消息的方式为,首先一次读请求将整个共享存储消息队列里的消息都读取到内存,然后在内存中找出最新的心跳消息。
下面通过具体实施例对本发明做进一步说明。
如图4和图5所示,假设数据中心有三台服务器:控制节点、计算节点A和计算节点B,三台服务器使用同一个共享存储上的同一个逻辑单元LUN1。控制节点运行服务端程序,计算节点A运行客户端程序A,计算节点B运行客户端程序B,虚拟机0001、0002、0003运行在计算节点A上并且它们的磁盘文件存放在LUN1上,虚拟机0004、0005运行在计算节点B上并且它们的磁盘文件存放在LUN1上,虚拟机0001、0002、0003、0004、0005都启用了高可用。本发明虚拟机高可用实现方法的详细步骤如下:
S1.服务端程序在LUN1上划分出一块连续的空间作为逻辑卷,用于虚拟机的心跳检测,大小为共享存储扇区大小的整数倍N,假设共享存储扇区大小为S字节,则逻辑卷大小为S×N字节。
S2.客户端程序A连接到服务端程序,服务端程序查询数据库中是否有客户端程序A的扇区池配置信息(扇区池所在的逻辑卷、起始扇区号、结束扇区号、每个扇区的大小等),如果没有,则将逻辑卷中的第1到第M个扇区分配给客户端程序A作为扇区池使用,其中M≥2,将该扇区池配置信息记录到数据库,并在第M个扇区写入客户端程序A的唯一标识,第1个至第M-1个扇区作为客户端程序A的共享存储消息队列,同理,客户端程序B连接到服务端程序,如果数据库中没有客户端程序B的扇区池配置信息,则服务端程序将逻辑卷中的第M+1个至第M+M个扇区分配给客户端程序B作为扇区池使用,将该扇区池配置信息记录到数据库,并在第M+M个扇区写入客户端程序B的唯一标识,第M+1到第M+M-1个扇区作为客户端程序B的共享存储消息队列。
S3.客户端程序A和客户端程序B分别通过管理网络从服务端程序获取扇区池的配置信息和已启用高可用的虚拟机号。
S4.客户端程序A通过管理网络向服务端程序周期性发送心跳消息,心跳消息内容包括:时间戳、客户端程序A的扇区池号、客户端程序A标识和运行在计算节点A上的已启用高可用的虚拟机号列表,虚拟机号列表的格式为“[0001,0002,0003]”。如果客户端程序A发送心跳消息成功,则直接用该心跳消息的时间戳更新客户端程序A维护的虚拟机控制块的时间戳(只更新虚拟机号在心跳消息中的虚拟机控制块,虚拟机号不在此心跳消息中的虚拟机的控制块不更新);如果心跳消息发送失败,则将该心跳消息写入分配给客户端程序A的扇区池的共享存储消息队列中,如果写入成功,则用该心跳消息的时间戳更新客户端程序A维护的虚拟机控制块的时间戳(只更新虚拟机号在心跳消息中的虚拟机控制块,虚拟机号不在心跳消息中的虚拟机控制块不更新)。每次发送消息后,不管心跳消息发送成功还是失败,客户端程序A都会检查其维护的虚拟机控制块是否超时,如果当前时间戳减去虚拟机控制块的时间戳大于超时时长,则表明该虚拟机的心跳已经有较长时间没有发送成功,可能是计算节点A的管理网络和存储网络都断开了,因此关闭计算节点A上的虚拟机,并删除所述虚拟机控制块。同理,客户端程序B向服务端程序发送心跳消息,心跳消息内容包括:时间戳、客户端程序B的扇区池号、客户端程序B标识和运行在计算节点B上的已启用高可用的虚拟机号列表,虚拟机号列表为“[0004,0005]”。
S5.服务端程序通过管理网络接收客户端程序A发送的心跳消息,如果在指定时间内接收成功,则用该心跳消息的时间戳更新服务端程序维护的虚拟机控制块的时间戳(只更新虚拟机号在心跳消息中的虚拟机控制块,虚拟机号不在心跳消息中的虚拟机控制块不更新);如果在指定时间内未收到心跳消息,则读取分配给客户端程序A的整个扇区池的共享存储消息队列,并找出存储在共享存储消息队列中的最新一条心跳消息,如果读取成功,则利用该心跳消息携带的时间戳,更新服务端程序维护的虚拟机控制块的时间戳(只更新虚拟机号在心跳消息中的虚拟机控制块,虚拟机号不在心跳消息中的虚拟机控制块不更新)。每次从管理网络或者共享存储消息队列读取心跳消息成功,服务端程序都会检查其维护的虚拟机控制块是否超时,如果当前时间戳减去虚拟机控制块的时间戳大于超时时长,则表明已经有较长时间没有收到该虚拟机的心跳消息,可能是该虚拟机所在计算节点A的管理网络和存储网络都断开了或者该虚拟机所在计算节点A断电,因此选择另一台合适的计算节点并通知其重新启动该虚拟机。同理,服务端程序通过管理网络接收客户端程序B发送的心跳消息。
其中,当计算节点A的管理网络断开时,客户端程序A发送心跳消息失败,因此将心跳消息写到客户端程序A的扇区池的共享存储消息队列中,并更新虚拟机0001、0002、0003的虚拟机控制块的时间戳,服务端程序因通过管理网络接收心跳消息超时,因此从客户端程序A的扇区池的共享存储消息队列中读取心跳消息,并更新虚拟机0001、0002、0003的虚拟机控制块的时间戳,客户端程序A和服务端程序中虚拟机0001、0002、0003的虚拟机控制块的时间戳通过共享存储消息队列保持更新。
当计算节点A的管理网络和存储网络都断开时,客户端程序A向管理网络发送心跳失败,且心跳消息写入客户端程序A的扇区池的共享存储消息队列失败,停止更新虚拟机0001、0002、0003的虚拟机控制块的时间戳,在检测到虚拟机0001、0002、0003的虚拟机控制块超时的时候,关闭虚拟机0001、0002、0003,服务端程序因管理网络收心跳超时,从客户端程序A的扇区池的共享存储消息队列中读取心跳消息,但读取到的心跳消息时间戳始终没变(客户端程序A最后一次成功写入的时间戳),在检测到虚拟机0001、0002、0003的虚拟机控制块超时的时候,通知客户端程序B在计算节点B上重新启动虚拟机0001、0002、0003。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

Claims (9)

1.一种基于共享存储消息队列的虚拟机高可用实现方法,用于数据中心,数据中心包括一个控制节点、一个共享存储和至少两个计算节点,控制节点运行服务端程序,每个计算节点上运行客户端程序,客户端程序为运行在本计算节点上的每个已启用高可用的虚拟机创建一个虚拟机控制块并维护,服务端程序为运行在所有计算节点上的每个已启用高可用的虚拟机创建一个虚拟机控制块并维护,其特征在于,实现方法包括以下步骤:
S1.服务端程序在共享存储上初始化一块连续的空间作为逻辑卷;
S2.每个客户端程序分别连接到服务端程序,服务端程序从逻辑卷中分配连续的多个扇区作为该客户端程序的扇区池,并在扇区池的最后一个扇区写入该客户端程序的唯一标识,所述最后一个扇区前面的连续扇区作为该客户端程序的共享存储消息队列,用于该客户端程序和服务器程序交换心跳消息;
S3.客户端程序从服务端程序获取该客户端程序的扇区池配置信息和已启用高可用的虚拟机号;
S4.客户端程序向服务端程序周期性发送心跳消息,并更新本客户端程序维护的虚拟机控制块的时间戳,客户端程序检查其维护的每个虚拟机控制块是否超时;
S5.服务端程序接收客户端程序发送的心跳消息,利用心跳消息中携带的时间戳更新服务端程序维护的虚拟机控制块的时间戳,服务端程序检查其维护的每个虚拟机控制块是否超时。
2.如权利要求1所述的基于共享存储消息队列的虚拟机高可用实现方法,其特征在于:客户端程序的扇区池配置信息包括扇区池所在的逻辑卷、开始扇区号、结束扇区号、每个扇区的大小。
3.如权利要求1所述的基于共享存储消息队列的虚拟机高可用实现方法,其特征在于:数据中心还包括管理网络交换机,控制节点、计算节点和管理网络交换机形成管理网络,控制节点、计算节点和共享存储形成存储网络,客户端程序和服务端程序优先通过管理网络传输心跳消息,当管理网络断开时通过存储网络传输心跳消息。
4.如权利要求1所述的基于共享存储消息队列的虚拟机高可用实现方法,其特征在于:心跳消息包括时间戳、扇区池号、客户端程序标识和运行在本计算节点上的已启用高可用的虚拟机号列表。
5.如权利要求4所述的基于共享存储消息队列的虚拟机高可用实现方法,其特征在于:虚拟机号列表的格式为“[虚拟机号,虚拟机号,虚拟机号]”。
6.如权利要求1所述的基于共享存储消息队列的虚拟机高可用实现方法,其特征在于:每个虚拟机控制块记录虚拟机的高可用信息,包括虚拟机号、超时时长、故障转移优先级、时间戳、该虚拟机所在计算节点的客户端程序标识。
7.如权利要求1所述的基于共享存储消息队列的虚拟机高可用实现方法,其特征在于:步骤S4中,客户端程序通过管理网络向服务端程序发送心跳消息,如果发送成功,直接更新本客户端程序维护的虚拟机控制块的时间戳;如果发送失败,将心跳消息写入本客户端程序的扇区池的共享存储消息队列中,再更新本客户端程序维护的虚拟机控制块的时间戳;客户端程序检查其维护的每个虚拟机控制块是否超时,如果超时,删除超时的虚拟机控制块,并关闭该虚拟机,客户端程序继续向服务端程序发送心跳消息;如果未超时,客户端程序继续向服务端程序发送心跳消息。
8.如权利要求7所述的基于共享存储消息队列的虚拟机高可用实现方法,其特征在于:心跳消息的写入方式为循环使用共享存储消息队列中的扇区,每次使用的扇区为上一次使用后的下一个扇区,当写入最后一个扇区时,下次写入第一个扇区。
9.如权利要求1所述的基于共享存储消息队列的虚拟机高可用实现方法,其特征在于:步骤S5中,服务端程序通过管理网络接收客户端程序发送的心跳消息,如果在指定时间内接收成功,利用心跳消息中携带的时间戳更新服务端程序维护的虚拟机控制块的时间戳;如果超过指定时间未接收到心跳消息,则读取该客户端程序的扇区池的共享存储消息队列中的所有心跳消息,并从中读取最新的心跳消息,再利用心跳消息中携带的时间戳更新服务端程序维护的虚拟机控制块的时间戳;服务端程序检查其维护的每个虚拟机控制块是否超时,如果超时,选择另一台计算节点并通知其重新启动已超时的虚拟机,服务端程序继续接收心跳消息;如果未超时,服务端程序继续接收心跳消息。
CN201410462083.6A 2014-09-11 2014-09-11 一种基于共享存储消息队列的虚拟机高可用实现方法 Active CN104253860B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410462083.6A CN104253860B (zh) 2014-09-11 2014-09-11 一种基于共享存储消息队列的虚拟机高可用实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410462083.6A CN104253860B (zh) 2014-09-11 2014-09-11 一种基于共享存储消息队列的虚拟机高可用实现方法

Publications (2)

Publication Number Publication Date
CN104253860A CN104253860A (zh) 2014-12-31
CN104253860B true CN104253860B (zh) 2017-08-08

Family

ID=52188383

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410462083.6A Active CN104253860B (zh) 2014-09-11 2014-09-11 一种基于共享存储消息队列的虚拟机高可用实现方法

Country Status (1)

Country Link
CN (1) CN104253860B (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106909436B (zh) 2015-12-23 2020-07-21 财团法人工业技术研究院 产生虚拟机消息队列应用程序的相关关系的方法与系统
CN106020997B (zh) * 2016-05-13 2019-07-16 北京红山世纪科技有限公司 一种用于虚拟机间数据传输的方法和系统
CN107544839B (zh) * 2016-06-27 2021-05-25 腾讯科技(深圳)有限公司 虚拟机迁移系统、方法及装置
CN107920101B (zh) * 2016-10-10 2020-11-17 阿里巴巴集团控股有限公司 一种文件访问方法、装置、系统及电子设备
CN106656631B (zh) * 2017-01-19 2019-10-25 武汉噢易云计算股份有限公司 在共享存储上实现逻辑卷动态分配的方法
CN106850354A (zh) * 2017-02-22 2017-06-13 郑州云海信息技术有限公司 一种单点故障的处理方法及装置
CN107391224A (zh) * 2017-06-09 2017-11-24 华为技术有限公司 一种虚拟卷的创建方法、挂载方法及装置
CN107480002B (zh) * 2017-07-26 2020-06-30 阿里巴巴集团控股有限公司 消息处理方法及装置、电子设备
CN107729207B (zh) * 2017-09-15 2021-01-01 海信视像科技股份有限公司 一种应用程序主线程的监控方法及装置
CN111198746B (zh) * 2018-11-20 2023-05-30 中标软件有限公司 在虚拟化集群中基于共享存储的主机间的通信方法及系统
CN109634716B (zh) * 2018-12-04 2021-02-09 武汉烽火信息集成技术有限公司 防脑裂的OpenStack虚拟机高可用管理端装置及管理方法
CN109614201B (zh) * 2018-12-04 2021-02-09 武汉烽火信息集成技术有限公司 防脑裂的OpenStack虚拟机高可用系统
CN109684032B (zh) * 2018-12-04 2021-04-27 武汉烽火信息集成技术有限公司 防脑裂的OpenStack虚拟机高可用计算节点装置及管理方法
CN110825487B (zh) * 2019-09-19 2022-07-15 烽火通信科技股份有限公司 一种虚拟机防脑裂的管理方法及主服务器
CN112153116B (zh) * 2020-08-27 2023-03-24 上海赫千电子科技有限公司 一种基于车载以太网的中央计算平台多虚拟机的数据共享方法
CN115202803A (zh) * 2021-04-13 2022-10-18 超聚变数字技术有限公司 一种故障处理方法及装置
US11671353B2 (en) * 2021-07-30 2023-06-06 International Business Machines Corporation Distributed health monitoring and rerouting in a computer network
CN113765748A (zh) * 2021-09-02 2021-12-07 云宏信息科技股份有限公司 计算节点故障处理方法和计算机可读存储介质
WO2023185355A1 (zh) * 2022-03-28 2023-10-05 同方威视技术股份有限公司 实现集群虚拟机高可用的方法和装置、设备和介质
CN116382850B (zh) * 2023-04-10 2023-11-07 北京志凌海纳科技有限公司 一种利用多存储心跳检测的虚拟机高可用管理装置及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102053857A (zh) * 2009-11-09 2011-05-11 财团法人资讯工业策进会 虚拟机器的管理装置及其相关切换方法
CN103605562A (zh) * 2013-12-10 2014-02-26 浪潮电子信息产业股份有限公司 一种kvm虚拟机在物理主机之间迁移的方法
CN103853592A (zh) * 2012-11-30 2014-06-11 英业达科技有限公司 虚拟机器的管理系统及其方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7484208B1 (en) * 2002-12-12 2009-01-27 Michael Nelson Virtual machine migration

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102053857A (zh) * 2009-11-09 2011-05-11 财团法人资讯工业策进会 虚拟机器的管理装置及其相关切换方法
CN103853592A (zh) * 2012-11-30 2014-06-11 英业达科技有限公司 虚拟机器的管理系统及其方法
CN103605562A (zh) * 2013-12-10 2014-02-26 浪潮电子信息产业股份有限公司 一种kvm虚拟机在物理主机之间迁移的方法

Also Published As

Publication number Publication date
CN104253860A (zh) 2014-12-31

Similar Documents

Publication Publication Date Title
CN104253860B (zh) 一种基于共享存储消息队列的虚拟机高可用实现方法
CN110071821B (zh) 确定事务日志的状态的方法,节点和存储介质
CN111124301B (zh) 一种对象存储设备的数据一致性存储方法及系统
CN105739924B (zh) 基于缓存集群的缓存方法和系统
CN102981931B (zh) 虚拟机备份方法及装置
CN104994168B (zh) 分布式存储方法及分布式存储系统
JP5699852B2 (ja) 情報処理装置、ストレージ制御方法およびプログラム
CN109391647B (zh) 存储资源回收方法、装置及系统
CN103929500A (zh) 一种分布式存储系统的数据分片方法
CN103986779B (zh) 一种应用数据传输方法、装置及终端设备
CN108023746B (zh) 一种视频数据处理方法、装置及系统
CN103455577A (zh) 云主机镜像文件的多备份就近存储和读取方法及系统
JP2010129024A (ja) データ分散制御プログラム、ストレージ管理プログラム、制御ノード、およびディスクノード
CN101137984A (zh) 用于分布加载数据库的系统、方法和软件
CN108600284B (zh) 一种基于Ceph的虚拟机高可用实现方法及系统
EP2723017A1 (en) Method, apparatus and system for implementing distributed auto-incrementing counting
CN103024065A (zh) 用于云存储系统的系统配置管理方法
CN104793981B (zh) 一种虚拟机集群的在线快照管理方法及装置
CN108243031A (zh) 一种双机热备的实现方法及装置
CN108509296B (zh) 一种处理设备故障的方法和系统
CN103810038A (zh) 一种ha集群中虚拟机存储文件迁移方法及其装置
US20090292882A1 (en) Storage area network server with parallel processing cache and access method thereof
CN104636086B (zh) 一种ha存储设备、管理ha状态的方法
CN106210038B (zh) 数据操作请求的处理方法及系统
CN110830281B (zh) 一种基于网状网络结构的热备方法及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 430000 Hubei city of Wuhan Province, East Lake New Technology Development Zone, Optics Valley Road No. 465 building 17 room 1701 creative

Applicant after: WUHAN OS-EASY CLOUD COMPUTING Co.,Ltd.

Address before: 430000 Hubei city of Wuhan Province, East Lake New Technology Development Zone, Optics Valley Road No. 465 building 17 room 1701 creative

Applicant before: WUHAN OS-EASY CLOUD COMPUTING Co.,Ltd.

COR Change of bibliographic data
GR01 Patent grant
GR01 Patent grant
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Shared storage message queue-based implementation method for high availability of virtual machines

Effective date of registration: 20200110

Granted publication date: 20170808

Pledgee: Guanggu Branch of Wuhan Rural Commercial Bank Co.,Ltd.

Pledgor: WUHAN OS-EASY CLOUD COMPUTING Co.,Ltd.

Registration number: Y2020420000005

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20201217

Granted publication date: 20170808

Pledgee: Guanggu Branch of Wuhan Rural Commercial Bank Co.,Ltd.

Pledgor: WUHAN OS-EASY CLOUD COMPUTING Co.,Ltd.

Registration number: Y2020420000005

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A high availability implementation method of virtual machine based on shared storage message queue

Effective date of registration: 20210108

Granted publication date: 20170808

Pledgee: Guanggu Branch of Wuhan Rural Commercial Bank Co.,Ltd.

Pledgor: WUHAN OS-EASY CLOUD COMPUTING Co.,Ltd.

Registration number: Y2021420000002

PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20211201

Granted publication date: 20170808

Pledgee: Guanggu Branch of Wuhan Rural Commercial Bank Co.,Ltd.

Pledgor: WUHAN OS-EASY CLOUD COMPUTING Co.,Ltd.

Registration number: Y2021420000002

PC01 Cancellation of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: An implementation method of virtual machine high availability based on shared storage message queue

Effective date of registration: 20211223

Granted publication date: 20170808

Pledgee: Guanggu Branch of Wuhan Rural Commercial Bank Co.,Ltd.

Pledgor: WUHAN OS-EASY CLOUD COMPUTING Co.,Ltd.

Registration number: Y2021420000151

PC01 Cancellation of the registration of the contract for pledge of patent right
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20230109

Granted publication date: 20170808

Pledgee: Guanggu Branch of Wuhan Rural Commercial Bank Co.,Ltd.

Pledgor: WUHAN OS-EASY CLOUD COMPUTING Co.,Ltd.

Registration number: Y2021420000151

PE01 Entry into force of the registration of the contract for pledge of patent right
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A High Availability Implementation Method of Virtual Machine Based on Shared Storage Message Queuing

Effective date of registration: 20230215

Granted publication date: 20170808

Pledgee: Guanggu Branch of Wuhan Rural Commercial Bank Co.,Ltd.

Pledgor: WUHAN OS-EASY CLOUD COMPUTING Co.,Ltd.

Registration number: Y2023420000051

PC01 Cancellation of the registration of the contract for pledge of patent right

Granted publication date: 20170808

Pledgee: Guanggu Branch of Wuhan Rural Commercial Bank Co.,Ltd.

Pledgor: WUHAN OS-EASY CLOUD COMPUTING Co.,Ltd.

Registration number: Y2023420000051

PC01 Cancellation of the registration of the contract for pledge of patent right