首页> 中国专利> 一种基于角色的高可用虚拟机池化管理系统

一种基于角色的高可用虚拟机池化管理系统

摘要

一种基于角色的高可用虚拟机池化管理系统,所述虚拟机池化管理方法中包括主节点即master节点、从节点即slave节点和备份节点即backup节点;master节点是虚拟机资源池的唯一逻辑入口,负责管理资源池中的所有节点;slave节点主要负责本节点的虚拟机生命周期的管理;backup节点用于备份master节点的状态信息,保证与master节点的状态信息一致,并在master节点失效时接管其工作;所述虚拟机池化管理过程中各个节点会随着不同条件在三种角色,即master节点、从节点slave和备份节点backup中转换;通过序列法保障系统中只有一个master节点和备份节点,以及通过双向异步通信机制来保障master节点和备份节点的数据一致性。本发明提高了虚拟化系统的可靠性以及管理的灵活性。

著录项

  • 公开/公告号CN103457775A

    专利类型发明专利

  • 公开/公告日2013-12-18

    原文格式PDF

  • 申请/专利权人 中国科学院软件研究所;

    申请/专利号CN201310398784.3

  • 申请日2013-09-05

  • 分类号H04L12/24(20060101);H04L12/26(20060101);H04L12/713(20130101);G06F9/455(20060101);

  • 代理机构11251 北京科迪生专利代理有限责任公司;

  • 代理人成金玉;顾炜

  • 地址 100190 北京市海淀区中关村南四街4号

  • 入库时间 2024-02-19 22:23:04

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-09-14

    授权

    授权

  • 2014-01-15

    实质审查的生效 IPC(主分类):H04L12/24 申请日:20130905

    实质审查的生效

  • 2013-12-18

    公开

    公开

说明书

技术领域

本发明涉及一种基于角色的高可用虚拟机池化管理系统,该系统扩展了传统的故障切换 集群高可用保障技术,用于解决虚拟机池化管理的单点失效导致的故障恢复时间长和管理复 杂的问题,属于软件技术领域。

背景技术

虚拟机能够为操作系统和应用程序提供一个虚拟的计算机系统,它所构造的运行环境能 够运行一个完整的操作系统,对上层的应用程序完全透明。虚拟机池化管理是指以统一管理 视角提供虚拟机生命周期管理和资源按需提供的虚拟化技术。近几年来,虚拟机池化管理已 成为构建主流云计算平台的关键技术之一。

虚拟机池化管理普遍采取master/slave的管理模式,通过统一的逻辑入口来管理整个资 源池中节点(本发明中的节点指的是物理服务器)及运行其上的虚拟机。代表的产品有 Microsoft Hyper-V,Citrix XenServer和VMware vSphere等。通过虚拟机池化管理带来以下 几个优点:(1)虚拟机对节点的资源使用率是动态变化的,虚拟机资源池中的节点作为硬件资 源提供给虚拟机使用。当某个时刻某个节点上的虚拟机消耗资源相对过高时,可以通过虚拟 机在线迁移技术将它迁移到其它资源相对充裕的节点上,整个迁移过程对用户透明,保障资 源的合理分配;(2)虚拟机池化管理通常采用“共享存储”的模式。所谓“共享存储”,是指 虚拟机资源池中所有虚拟机磁盘文件会统一存储在磁盘阵列或其它存储设备上,各节点仅能 通过网络连接存储设备实现虚拟机的实例化(内存态)。在这种管理模式下,当节点宕机导 致运行其上的虚拟机不可用时,容易通过虚拟机实例在其它节点重启的模式实现虚拟机的高 可用。

虚拟机池化管理带了管理简单优点的同时,也引入了风险集中,单点失效问题。在 master/slave管理模式下,master节点保存了虚拟机资源池所有节点的全局状态信息,因此 master节点宕机可能导致整个虚拟机资源池不可用或虚拟机资源池重装等严重后果。单点失 效问题涉及到系统的高可用,高可用保障方法可以分为以下四大类(Chan H,Chieu T.An  approach to high availability for cloud servers with snapshot mechanism[C]//Proceedings of the  Industrial Track of the13th ACM/IFIP/USENIX International Middleware Conference.ACM, 2012:6.):镜像技术(Mirroring)、复制技术(Replication)、故障切换集群(Failover clustering)和 快照技术(snapshot)。

镜像技术是指设置主节点和镜像节点,镜像节点每隔一段时间从主节点主动取数据备份 到自身。复制技术是基于订阅者的模式,主节点在自身状态信息发生变化时主动发送给所有 订阅的备份节点,通知其更新状态信息。故障切换集群通过多个节点组成一个集群,集群中 任何一个节点发生故障都可以由其他节点接管。快照技术是通过节点每隔一段时间备份一个 还原点,当节点发生故障后可以通过这个备份的还原点来恢复系统。

镜像技术和复制技术被HDFS文件系统(Borthakur D,Gray J,Sarma J S,et al.Apache  Hadoop goes realtime at Facebook[C]//Proceedings of the2011international conference on  Management of data.ACM,2011:1071-1080.)用于解决NameNode节点的单点失效问题。通过 设置一个备份节点,当用户对文件系统进行写操作导致文件系统的目录结构发生改变时,主 NameNode通过复制技术将这一操作请求写入一个NFS共享节点上,然后备份的节点通过镜 像技术不断的读取NFS共享节点上的操作请求执行,保障与主NameNode节点上保存的信 息一致,在主节点失效时能接管其工作,但是这种方式备份节点是静态指定,缺乏灵活性, 并且NFS节点也是个单点问题。

故障切换集群被广泛应用与XenServer和vSphere虚拟机池化管理系统中,通过slave节 点来探知master节点是否失效,当某个slave节点探知到master节点失效时,通过一定的选 举算法,比如Bully算法(Garcia-Molina H.Elections in a distributed computing system[J]. Computers,IEEE Transactions on,1982,100(1):48-59)选举出一个新的节点充当master节点恢 复之前保存的数据,继续管理资源池中的成员节点和虚拟机。由于新的master节点是通过所 有的slave节点在故障发生后根据选举算法协同选举出来的,所以恢复时间相对较长。

此外的快照技术(snapshot),如果在设置的还原点之前需要备份数据改变并且发生故障, 系统将难以恢复到故障发生之前的状态。

综上所述,上述几种方法中存在的缺乏灵活性和故障恢复时间长的缺点。

发明内容

本发明技术解决问题:克服现有技术的不足,提供一种基于角色的虚拟机池高可用系统, 提高了系统的灵活性和减少故障的恢复时间。

本发明技术解决方案:一种基于角色的高可用虚拟机池化管理系统,通过序列法保障系 统中只有一个master节点和备份节点,以及通过双向异步通信机制来保障master节点和备 份节点的数据一致性。

通过增加一个backup节点的角色,这个节点由master节点主动选举出来,然后master 节点失效由backup节点主动接管其工作,这样达到backup节点自动选取和master节点主动 替换的效果。如图1所示,该系统包括三个模块:

1)节点管理模块:负责本节点的虚拟机的生命周期管理,包括虚拟机的创建,关闭, 启动,迁移,周期性地监听本节点和运行其上的每个虚拟机的资源使用情况,并写入本地的 文件方便远程客户端解析;周期性地向master节点和backup节点发送状态信息,状态信息 包括运行了哪些虚拟机,虚拟机关联的磁盘文件等;

2)资源池管理模块:负责管理虚拟机资源池中的每个节点,如监听资源池中每个节点 是否有效。根据用户的请求转发给目标节点进行相应的操作。提供虚拟机资源池的建立和弹 性资源供给,即节点的添加和退出;

3)高可用管理模块:在master节点上,高可用模块负载监听backup节点的是否有效, 当无效时,选举出新的备份节点继续监听。在backup节点上,高可用模块负载监听master 节点是否有效,当无效时主动接管其工作,并广播给虚拟机资源池中的所有节点这一变化。 master节点和backup节点同时负责接收来自slave节点的心跳信息,根据心跳信息来更新自 身保存的状态信息。

在基于角色的双机热备高可用系统中,主要涉及到两种方法和一种机制,分别是基于角 色的双机热备方法、序列法和双向异步通信机制。通过基于角色的双机热备方法消除master 节点单点失效问题带来的服务间断。通过序列法保障资源池中只有一个master节点提供与用 户交互的入口。通过双向异步通信机制保障master节点和backup节点两者的状态信息的一 致性。

以下是详细描述。

3.1基于角色的节点描述和转换关系,如图2所示。

为了方便后面的表述,本文用三元组P=<Number,Role,Squence>来描述每个节点,其 中不同的元素的具体含义如下:

1)Number,即节点的编号,如资源池中一共有三个节点,用N1,N2和N3来分别表示这 三个节点;

2)Role,即节点的角色,这里有master,backup和slave三种角色,每种角色执行不同功 能;

3)Squence,即节点的时间序号,每个节点都会有一个时间序号。

例如,<N3,backup,35>表示第3个节点的角色为backup,并且它的时间序号为35。

虚拟机资源池中的每个节点都赋予了一定的角色,每个角色具有不同的功能。分别如下:

1)master节点也称为主节点,它是虚拟机资源池的唯一逻辑入口,负责管理资源池中 的所有节点;

2)slave节点主要负责本节点的虚拟机生命周期的管理;

3)backup节点用于备份master节点的状态信息,保证与master节点的状态信息一致, 并在master节点失效时接管其工作。

资源池中各个节点所处的角色并不是固定的,而是随着不同条件在三种角色中转换,转 换关系如图2所示,其中none表示节点不赋予任何角色,不在虚拟机资源池中:

(1)用户建立虚拟机资源池时指定一个none节点作为master节点;

(2)当用户需要将一个none节点加入虚拟机资源池时,该节点从none转变为slave节 点,成为资源池中的成员节点;

(3)用户将某个节点从虚拟机资源池中移除后,该节点由slave节点转化为none节点, 不再属于这个虚拟机资源池;

(4)当虚拟机资源池中的backup节点未被选取或者之前选取的backup节点失效时,由 master节点选举出一个有效的slave节点,使其成为backup节点;

(5)当backup节点探测到虚拟机资源池中的master节点失效时,主动转换为master, 接管master节点的工作;

(6)当backup节点故障恢复后,重新回到资源池中,转变为slave节点。

(7)当master节点故障恢复后,重新回到虚拟机资源池中,并转变为slave节点;

3.2基于角色的双机热备方法

master/slave模式下要消除单点失效问题,关键是在master节点发生故障时,能够有一 个节点被选举出来主动接管其工作。本发明实现的基于角色的双机热备方法,该方法实现在 master节点和backup节点的高可用模块,具体的算法如图3所示,其中定义Si(1≤i≤n)为虚拟 机池中的第i个节点。

如果节点的角色为master时,具体执行步骤如下:

1)master节点监听backup节点是否有效或者未选举,如果backup节点有效则转步骤 1)继续监听这个节点,如果无效则转步骤2);

2)master节点遍历资源池中的所有节点,若发现一个有效的节点,将这个节点角色转 换为backup,并将保存的状态信息备份到这个节点上,转步骤1)监听这个backup节点。否 则这次选举失败转步骤2)继续进行选举。

如果节点的角色为backup时,具体执行步骤如下:

1)backup节点监听资源池中的master节点是否有效,如果有效则转步骤1)继续进行监 听,如果无效则转步骤2);

2)backup节点将自身角色转换为master节点,并开启对应master节点的服务,同时通 知资源池中其他节点master节点发生了变化。

3.3序列法

在基于角色的双机热备方法中,master节点和backup节点的失效判定是通过一定的时 间内能否接收到对方的响应消息来判定的。如果节点连接的网络短暂不可用,或者节点过于 繁忙导致不能及时响应请求,则会被判定为发生宕机现象。这样会导致资源池中出现多个 master节点和backup节点的情况,造成多个master和backup节点之间保存的数据不一致的 现象。

传统的解决方法是通过仲裁的方式,即设置一个参考的IP,当master节点连接的网络 发生故障时,master节点ping参考IP失败,则转换为slave节点,而backup节点ping参考 IP成功,则转换为master节点选取出新的backup节点。当backup节点连接的网络发生故障 时,master节点ping参考IP成功,则选取出新的backup节点,而backup节点ping参考IP 失败,则转换为slave节点。但是这种方法不能解决节点繁忙的情况,节点繁忙时ping命令 也不能及时执行。

为了解决这个问题,保障上述的方法有效,发明了序列法。具体的规定如下:

(1)slave节点的序列号为0;

(2)当每个节点被重新初始化时序列号都为0。

该方法实现于master节点的高可用模块,具体的算法如图4所示,其中定义Sequence(i) 表示第i个节点的序列号。以master节点表示为<Ni,master,k>为例,它选举出第j个有效节 点为backup节点,将这个节点的序列号设置为k+1,此时这个j结点表示为<Nj,backup,k+1>。 Master节点即<Ni,master,k>每隔一段时间会检查资源池中的每个节点,若发现某个节点的角 色不为slave,并且序列号小于等于自身,则通知这个节点关闭角色对应的服务,转换为slave 节点。可以看到节点<Ni,master,k>只会把角色不为slave,并且序列号小于等于k的节点转 换为slave节点,并不会影响到由它选举出来的<Nj,backup,k+1>备份节点。通过序列法能够 保障资源池中只有一个master节点和backup节点。

3.4双向异步通信机制,如图10所示

系统采用基于角色的双机热备的方法来保障master节点的高可用,最重要的是保证 backup节点和master节点保存的状态信息的一致性,这样backup节点才能无故障的接管 master节点的工作。

为了保证这两个节点的状态信息的一致性,发明了一种双向异步通信机制,来自客户端 的操作请求发送给master节点,由它转发给slave节点,slave节点完成操作后发送响应消息 给master,由master将响应消息发送给客户端。slave节点每隔一段时间将自身的状态信息 发送给master和backup节点,master和backup节点收到来自slave的状态信息,则更新保 存的状态信息。这样,即使在master节点宕机时,slave节点也能将本节点的状态信息及时 通知给新的master节点。同时master节点每隔一段时间广播一个消息给资源池中的所有节 点,使得每个节点都能知道master和backup节点的目标地址,避免某个节点宕机恢复的过 程中master节点和backup节点的地址发生变化时,不能将状态信息发送到正确的目标地址。

与现有技术相比,本发明具有如下技术优势:

(1)本发明中的master节点的故障判断和接管,backup节点的故障检测和主动选取都 是有系统自身完成,无需人工干预,能够有效地解决单点失效问题。同时由于backup节点 是由master节点在正常提供服务的过程中选举出来的,相比传统方法master节点出现故障 后由其他节点探知然后协调选举出一个节点接管,本发明中的方法故障恢复时间短。

(2)本发明中的序列法,能够保障资源池中只存在一个master节点和backup节点。相 比现有的技术,能够处理由于节点服务繁忙带来的“假死”现象。

(3)本发明才用了双向异步通信机制来保证master节点和backup节点的数据一致性, 能在通过slave节点发送的状态信息,来恢复整个资源池的全局状态信息。

(4)上述几种方法中存在的缺乏灵活性和故障恢复时间长的缺点。本发明基于故障切 换集群技术,实现了一种基于角色的双机热备的高可用系统。该系统通过备份节点的自动选 举和master节点故障的主动接管替换的方式提高了系统的灵活性和减少故障的恢复时间。通 过序列法保障系统中只有一个master节点和备份结点,以及通过双向异步通信机制来保障 master节点和备份节点的数据一致性。

(5)在基于角色的双机热备方法中,master节点和backup节点的失效判定是通过一定 的时间内能否接收到对方的响应消息来判定的。如果节点连接的网络短暂不可用,或者节点 过于繁忙导致不能及时响应请求,则会被判定为发生宕机现象。这样会导致资源池中出现多 个master节点和backup节点的情况,造成多个master和backup节点之间保存的数据不一致 的现象。

(6)传统的解决方法是通过仲裁的方式,即设置一个参考的IP,当master节点连接的 网络发生故障时,master节点ping参考IP失败,则转换为slave节点,而backup节点ping 参考IP成功,则转换为master节点选取出新的backup节点。当backup节点连接的网络发 生故障时,master节点ping参考IP成功,则选取出新的backup节点,而backup节点ping 参考IP失败,则转换为slave节点。但是这种方法不能解决节点繁忙的情况,节点繁忙时ping 命令也不能及时执行。为了解决这个问题,发明了序列法。

附图说明

图1为本发明系统的组成框图;

图2为本发明中角色转换图;

图3为本发明中本基于角色的节点选举替换算法;

图4为本发明中序列法算法;

图5为本发明中序列法处理master节点网络故障示例图;

图6为本发明中序列法处理master节点“假死”示例图;

图7为本发明中序列法处理backup节点网络故障示例图;

图8为本发明中序列法处理backup节点“假死”示例图;

图9为本发明中的基于角色的双机热备的处理过程图;

图10为本发明中双向异步通信机制的处理过程图。

具体实施方式

本发明基于角色的虚拟机池高可用保障技术及系统,通过master和backup节点的故障 检测,故障恢复,能够有效地解决单点失效问题。以下结合具体实施例和附图对本发明进行 详细说明。

在系统的高可用模块中,通过基于角色的双机热备的处理方法,来保障资源池中master 节点宕机时,有一个有效的backup节点接管它的工作,保障系统能够正常提供服务,以下 是根据具体的场景实例进行阐述。

1.基于角色的双机热备的处理过程,如图3所示。

在3.1节定义三元组的基础上,改变第三元来,用来表示节点是否有效(invalid表示无 效,valid表示有效),假设资源池中有5个节点,分别表示为<N1,master,valid>,<N2,backup, valid>,<N3,slave,invalid>,<N4,slave,invalid>和<N5,slave,valid>,如图9(a)所示。

(1)当N2节点出现故障时,即表示为<N2,backup,invalid>,N1节点探知其无效,开始 遍历资源池中的节点,选举出有效节点;

(2)如图9(b)所示,遍历到<N3,slave,invalid>时,发现其无效继续遍历。当遍历到 <N4,slave,invalid>时,发现其无效继续遍历。当遍历到<N5,slave,valid>时,发现其有效,则 将状态信息备份到这个节点上,并将其角色转换为backup,结束此次选举,此时N5节点表 示为<N5,backup,valid>;

(3)如图9(c)所示,当N1节点出现故障,即表示为<N1,master,invalid>,N5节点探知其 无效,则将自身转换为master的角色,即表示为<N5,master,valid>;

(4)N5节点始遍历资源池中的节点,选举出有效节点。当遍历到<N1,master,invalid>时, 发现其无效继续遍历。当遍历到<N2,backup,invalid>时,发现其无效继续遍历。当遍历到 <N3,slave,invalid>时,发现其无效继续遍历。当遍历到<N4,slave,invalid>时,发现其无效继 续遍历。N5节点在这次遍历过程没有发现有效的节点,将进行新的一轮的遍历;

(5)如图9(d)所示,若某个时刻N3节点故障恢复成为有效节点,即表示为<N3,slave, valid>。它将被N5节点探知到,转换为backup节点,即为<N3,backup,valid>,则N5节点完成 选举;

(6)如图(9e)所示,当某个时刻N1节点和N2节点故障恢复,它们都将转换为slave节点, 即分别表示为<N1,slave,valid>和<N2,slave,valid>。

在系统的高可用模块中,通过序列法,来克服网络故障带来的资源池中出现多个maste 节点冲突的情况,保障资源池中只有一个master节点来管理整个资源池的节点和虚拟机。以 下是根据具体的场景实例来详细阐述这个方法的处理过程。

2.序列法的处理过程,如图4所示。

当master节点出现网络故障时如图5所示:

(1)当<Ni,master,k>出现网络故障,由它选举出来的<Nj,backup,k+1>得不到它的响应 消息,同时<Ni,master,k>也不能选取出新的节点充当backup节点;

(2)<Nj,backup,k+1>而转变为<Nj,master,k+1>,然后选取出一个<Nk,backup,k+2>;

(3)若<Ni,master,k>的网络恢复,它会选取出<Nl,backup,k+1>;

(4)由于<Nj,master,k+1>是序列号最大的master节点,它会通知Ni和Nl节点关闭相应 服务,转换为slave节点;

当master节点出现“假死”现象时如图6所示,与上述不同在步骤3),当<Ni,master,k> “假死”现象消除时,单方向监听节点b是否有效。最终会在步骤4)中,用<Nj,master,k+1> 通知其转换为slave节点。

当backup节点出现网络故障时如图7所示:

(1)当<Nj,backup,k>出现网络故障时,不能得到<Ni,master,k-1>响应消息,同时 <Ni,master,k-1>也不能得到<Nj,backup,k>的响应消息;

(2)由于网络故障,<Nj,backup,k>转换为<Nj,master,k>并且不能选取出新的节点作为 backup节点。而<Ni,master,k-1>会重新选举一个新节点<Nk,backup,k>;

(3)当节点Nj网络恢复时,选举出一个新节点<Nl,backup,k+1>;

(4)由于<Ni,master,k>是序列号最大的master节点,它会通知Nj和Nk节点关闭相应服 务,转换为slave节点。

当backup节点出现“假死”现象时如图8所示:

(1)当<Nj,backup,k>出现“假死”现象,<Ni,master,k-1>不能得到它的响应消息, <Nj,backup,k>此刻也暂时停止监听<Ni,master,k-1>;

(2)由于<Ni,master,k-1>不能得到Nj节点的响应消息,则选举出<Nk,backup,k>;

(3)Nj节点的“假死”现象消除,它会单方向监听Ni节点;

(4)当Ni节点出现宕机时,Nj节点和Nk节点都能探知Ni发生故障;

(5)由于得不到Ni节点的响应,Nk节点转换为<Nk,master,k>,选举出一个新节点 <Nm,backup,k+1>。同时Nj节点转换为<Nj,master,k>,选举出一个新节点<Nn,backup,k+1>。当 Nj节点通知Nk节点转换为slave节点时,Nk转换为<Nk,slave,0>,Nm节点单方向监听Nk节 点。当Nk节点出现宕机,Nm节点会成为序列号最大的master节点,通知Nj和Nn节点转换 为slave节点。当Nk节点通知Nj节点转换为slave节点的情况与上述类似。

3.双向异步通信机制的处理过程,如图10所示。

定义VM(i,j)表示第i个节点上的第j个虚拟机。假设资源池中有5个节点和3个虚拟机, 这5个节点分别表示为<N1,master,valid>,<N2,backup,valid>,<N3,slave,valid>, <N4,slave,valid>和<N5,slave,valid>,3个虚拟机分别表示为VM(4,1),VM(4,2)和VM(5,1), 如图10(a)所示。

(1)客户端通知<N1,master,valid>节点,要求将N4节点上的第1个虚拟机迁移到N5节 点上;

(2)如图10(b)所示,N1节点将操作请求转发给N4节点,N4节点接收这个操作请求开 始将VM(4,1)虚拟机迁移到N5节点;

(3)如图10(c)所示,在迁移的过程中,N1节点发生宕机故障,即表示为<N1,master, invalid>,此时迁移过程还在进行,而N2节点成为master节点,即为<N2,master,valid>。同 时N2节点选举出N3节点充当backup节点,此时N3节点表示为<N3,backup,valid>;

(4)此时迁移过程完成,VM(4,1)成为VM(5,2),N4和N5节点将自身的状态信息通知 给N1和N2节点。由于N1节点宕机,它将不接受来自N4和N5的状态信息。Master节点N2接收到来自N4和N5的状态信息进行更新,则它保存的虚拟机的状态信息为VM(4,2),VM(5,1) 和VM(5,2)。而backup节点N3接收不到来自N4和N5的状态信息,则它保存的虚拟机的状 态信息还是为VM(4,1),VM(4,2)和VM(5,1);

(5)N2节点遍历资源池中的所有节点,并将master节点N2和backup节点N3的位置信 息通知给这些节点;

(6)N4节点和N5节点接收到来自master节点N2发送的位置信息,则开始将自身的状 态信息发送N2和N3节点;

(7)如图10(d)所示,N3节点接收到来自N4和N5节点的状态信息进行更新,则它保存 的虚拟机的状态信息为VM(4,2),VM(5,1)和VM(5,2),与N2节点的状态信息一致;

(8)如图10(d)所示,N1节点宕机恢复后将成为slave节点,即表示为<N1,slave,valid>, 此时它会将自身的状态信息发送给N1和N2节点。当N1将接收到来自master节点N2发送的 位置信息,开始将自身的状态信息发送给N2和N3节点。

本发明未详细阐述部分属于本领域公知技术。

以上所述,仅为本发明部分具体实施方式,但本发明的保护范围并不局限于此,任何熟 悉本领域的人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明 的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号