分享

银行双活数据中心建设项目实践

 yi321yi 2021-12-29
【摘要】本文以某银行全业务系统同城双活中心建设项目为背景,根据监管政策要求,建立短期以及中长期的生产业务系统灾备建设目标,详细介绍了业务系统、中间件、基础架构、容灾架构、备份系统和关键存储选型、架构方案设计等方面的实践,希望能为同业灾备或双活数据中心建设带来一些借鉴和启发。 

【作者】李先科,江西裕民银行高级系统工程师。10多年金融信息技术服务及管理工作,多年的网络、主机、存储、虚拟化、云计算、备份相关技术经验,对容器云原生技术比较感兴趣。

1 项目概述

快速发展的业务需求和更加严格的行业监管要求促使银行的信息系统稳定性和业务连续性对基础设施的要求越来越高。为了响应银保监会的监管要求,同时结合自身业务发展的需要,我行启动了“同城灾备建设”项目,保障基础设施环境有效支撑业务的稳定运行、持续发展和业务连续性的监管要求。

我行现有主数据中心机房空间、电力、空调等基础设施容量逐渐增大,但没有相应的灾备数据中心保证相应的业务连续性要求,已难于满足当前及未来业务发展的需要。为此,我行正在建设同城灾备中心建设。在灾备数据中心具备投产运行条件后,需尽快实施新数据中心的搭建及业务迁移,从而使数据中心的综合管理和生产运行能力上一个新台阶。

我行现有两个数据中心,其中在用的有A数据中心,B数据中心正在建设中。

  • A数据中心

A数据中心作为目前主生产中心作为全行信息中枢纽,承载行里所用信息系统的运行保障,在A数据中心进行数据中心运行、系统监控及运行管理。

  • B数据中心

启动新数据中心建设项目,B数据中心将作为同城灾备中心,同城灾备范围覆盖当前重要业务系统并满足相应的RPO与RTO要求。

未来A数据中心将作为全行生产中心运行全部信息系统,B数据中心承担部分业务或未来全部业务系统的双活运行。

2 建设目标

本次灾备系统建设的关键目标是按照中国人民银行《银行业信息系统灾难恢复管理规范》(JR/T0044-2008)6级要求,通过部署双活灾备模式,实现业务级别的灾备;应用系统自动切换,采用同步复制技术,实现数据零丢失,从而实现RTO/RPO的近零目标,保障业务访问的连续性。

3 建设内容

  • 云数据中心建设

云数据中心建设是建设云平台的核心与关键,虚拟数据中心负责按需提供满足要求的运算处理资源、存储资源、网络资源等IT基础架构服务。

  • “AB站点双活 异地数据备份”灾备体系建设

数据中心提供满足安全、高效管理和保障业务连续性的功能。通过“AB站点双活 异地数据备份”方案,实现不同灾难场景下的业务连续性要求。

未来A数据中心将作为全行生产中心运行全部信息系统,B数据中心同样承载大部份业务系统的生产运行,A数据中心与B数据中心实现主要业务系统双活,通过小规模改造逐步实现全业务系统双活目的。

本次方案的主要建设内容为“AB站点双活 异地数据备份”建设。

4 双活数据中心建设方案

4.1 建设模式分析

出于灾备(Disaster Recovery)的目的,一般都会建设2个(或多个)数据中心。主流的容灾模式包括主备模式和双活模式,主备模式又分为主备模式和互备模式,双活模式分为准双活和云双活模式。如下图所示:

图片

▲容灾模式图

4.1.1 主备模式建设分析

  • 主备中心方案

在主备中心模式中,一个是主数据中心用于承担用户的业务,一个是备份数据中心用于备份主数据中心的数据、配置、业务等。两数据中心间的备份方式一般有主备(Active-Standby)热备、冷备、双活(Active-Active)备份方式。

其中主备数据中心有两种模式:

  • 主备模式

两个数据中心1:1建设,一个数据中心作为业务的主处理中心,数据全部落到该数据中心,然后数据通过数据库和存储的同步和复制技术将数据备份到备中心,达到容灾的目的。但缺点是资源的利用率很低。

  • 互备模式

两个数据中心1:1建设,根据业务的需求及未来发展考虑,将不同的业务部署在不同是数据中心内,并且两中心承担各自业务的互备,数据通过数据库和存储的同步和复制技术将数据备份到备中心,达到容灾的目的,这种容灾模式资源利用率较主备模式有一定优势,但整体资源利用率仍处于较低水平。

4.1.2 双活模式建设分析

在双活中心模式中,两个数据中心均承载用户的业务,通过全局负载均衡、存储复制等技术实现应用及数据的负载。

其中双活数据中心有两种模式:

  • 准双活模式

双生产中心均需要完成数据更新的业务,主中心通过数据复制技术将数据复制到同城,通过全局负载均衡、业务模块或用户的方式将业务分配到不同的中心,平时主要的处理能力均分配给生产应用系统使用,出现灾难时,根据需要接管的方式,动态调度资源给备份系统使用。同城灾备中心的主机平时处于“备份”状态,但主要的资源均动态分配给生产系统使用。没有完全闲置的设备。数据库数据只在单边写入,同城采用数据同步的方式。

  • 双活模式

业务或用户按照服务需求(On-Demand)将业务分配到不同的中心,平时主要的处理能力均分配给不同的中心。跨双生产中心建立共享的资源访问方式,并建立跨生产中心高可用集群。通过数据复制技术将数据镜像到对方,出现灾难时,根据需要接管的方式,按照当前的业务状态动态调度服务和资源(Business Resiliency),所有的中心、主机和存储设备均处于生产状态和实现负载分担。

在本次项目中,结合我行实际情况、灾备等级建设目标和银监会要求,决定采用双活模式建设“AB站点数据中心”。

4.2 数据复制技术分析

为了实现双活模式的数据中心建设,数据复制技术的选择至关重要,只有选择合适的数据复制技术,才能实现双活数据中心的建设。

目前业界主流的数据复制技术如下图所示:

图片

灾备复制技术对比图

在灾备复制技术的选择上,各种数据复制技术都有其自身的优缺点,最适合双活数据中心建设的数据复制技术主要是存储系统数据复制技术。这其中又包括“基于存储设备的数据复制”和“存储虚拟化复制技术”基于存储设备的数据复制”适合新建项目。而存储虚拟化复制技术”同时会对存储虚拟化网络有一定要求,同时对存储系统的整体性能也有一定影响,主要技术优缺点对比如下:

复制技术比较项目

存储系统数据复制技术

主机数据复制技术

数据库

复制技术

备份技术

基于存储设备数据复制

存储虚拟化复制技术

操作系统

相关性

无关

无关

相关

无关

无关

存储相关性

相关

无关

无关

无关

无关

主机性能影响

较小

存储性能影响

复制实时性

数据一致性

复制数据类型

结构化数据、非结构化数据

结构化数据、非结构化数据

结构化数据、非结构化数据

结构化数据

结构化数据、非结构化数据

逻辑故障恢复

基于快照恢复,快照保存周期短

基于快照恢复,快照保存周期短

基于快照恢复,快照保存周期短

日志回滚恢复

定点恢复,保存周期长

链路带宽

较高

维护管理难度

日常维护小

日常维护小

日常维护量较大

日常维护大

日常维护小

灾备复制技术对比表

在本期项目建设中,根据现有A中心的存储设备使用情况、双活数据中心的数据实时复制和一致性要求,决定采用“基于存储设备的数据复制”。实现两个数据中心同设备存储间的数据复制,在实时性、可靠性和数据复制类型上可以兼顾并满足双活数据中心建设要求

4.3 总体架构设计

为了实现对“AB站点数据中心”的双活架构设计,两个数据中心内的各个层次都需要具备双活的技术能力。

如下图所示:A数据中心为主中心,B数据中心作为备中心。我们主要通过以下几个层面实现同城两中心的灾备系统:

图片
  • 应用层:

    1、无状态应用:通过基于应用负载均衡及DNS实现应用负载部署,用户的访问流量可以分别访问同城两个数据中心的应用。

    2、有状态应用:通过虚拟化复制软件实现主备站点间虚拟机组及站点层面的切换。每个数据中心通过应用配置实现应用集群,实现秒级的RPO与RTO。

  • 数据库层:

    1、数据库层本地做RAC实现本地高可用,同城两中心间数据库基于ADG进行复制;

    2、通过ADG/MHA实现生产中心与同城灾备中心间的主备复制,数据库主写在生产中心,同城灾备中心可作为数据库的查询及数据分析及测试开发等。

  • 网络层:

    采用水平分层垂直分区的理念,部署按业务功能的分区,且分区结构满足“核心-汇聚-接入”的二层架构,设置安全访问边界。

  • 服务器层:

    1、采用服务器虚拟化架构,同城灾备系统分布式应用采用虚拟机独立部署,单体应用基于虚拟机复制软件进行虚拟机复制;

    2、使用1:1比例在灾备中心搭建同样的虚拟化环境,部署相同的应用,每个站点通过集群方式实现应用高可用。

  • 存储层:

    1、存储层主要负责双活数据中心的数据同步。本次主要使用基于华为存储双活模式,同城与异地间数据基于存储设备进行数据同步复制;

    2、两中心的存储主要划分为:SAN存储,NAS存储。两中心之间的SAN存储采用基于华为双活存储数据复制方案。NAS在生产中心及同城灾备中心通过基于IP网络的华为双活存储数据复制方案实现两个站点间的NAS容灾。

在双活数据中心的建设过程中,存储层的建设最为重要,因为它主要负责两个数据中心的数据复制同步,是双活数据中心建设的基础,只有在存储层实现了数据同步,才能实现双活数据中心的建设任务。

4.4 存储架构设计

4.4.1双活存储设备选型

存储双活方案作为全行业务的核心基础架构,其架构的选择决定了整个系统是否可靠高可用、安全可信赖、弹性可扩展。此次项目建设,采用基于专业的虚拟化存储设备来构建高可用、高性能、可扩展的存储双活方案。

根据实际情况,本项目中华为存储部署在B数据中心,双活方案采用华为OceanStor 18000系列高端存储产品,实现存储双活架构,为数据中心提供读写服务,且整个存储系统架构全冗余。

存储层,在B数据中心选择了两台华为OceanStor 18000系列高端存储, 配置HyperMetro实现两台存储双活,为上层数据库及应用系统提供稳定、可靠的存储底座。同时,选择两台华为OceanStor 5310 V5分别部署于AB两个数据中心,也配置HyperMetro实现AB数据中心全业务系统的NAS双活(底层存储双活,对外提供NFS网络为主备)。

两台华为OceanStor 18000系列高端存储组成一个集群,为该数据中心主机业务同时提供读写服务。支持扩展至16控制器,高端支持32控制器。为了保证数据库及部分延时敏感型应用的IO需求,两台存储配置3.8T SSD,采用RAID6以实现高IOPS和可靠冗余的磁盘组管理。

4.4.2 SAN存储方案设计

两台华为OceanStor 18000系列高端存储在基于SAN存储类型应用的双活方案设计上,采用华为存储HyperMetro双活技术方案。

4.4.2.1 方案对网络的要求

采用IP/FC链路实现同城双数据中心间的数据实时同步,为降低数据双写对业务系统的影响,需要将同城链路的时延控制在1ms以内。

同城链路带宽需求,与需要在两数据中心间同步的数据量相关,要求链路带宽大于业务系统高峰期的数据写带宽。因我行是在同数据中心,故链路质量可以较容易保证。

4.4.2.2 应用系统对时延的要求

双活数据中心的建设不仅是存储一个层面的双活部署,需要端到端地进行考虑。尤为重要的是,当前双数据中心的网络时延是否能满足应用系统对网络时延的要求。

以下罗列了双活数据中心解决方案的两种典型应用场景对时延的建议:

  • Oracle应用时延建议

类型

性能好

性能可接受

性能差

db file sequential read

<10ms

<20ms

>20ms

db file parallel write

<10ms

<15ms

>15ms

log file parallel write

≤5ms

<15ms

>15ms

  • VMware应用时延

  • 站点之间最大支持VMware ESXi管理网络的网络时延是往返10ms RTT 。

  • VMotion标准版和企业版要求5ms RTT。

  • VMotion中10ms RTT的延时只有在具有VMware vSphere Enterprise Plus版本许可中才支持,这个版本许可包括Metro VMotion功能。

  • ESXi VMotion的网络需要最少622Mbps的网络带宽,并且有冗余链路。

  • FusionSphere应用时延

  • 站点与站点时延

  • 生产站点与容灾站点间距离要在100公里以内,站点间需要租赁L1专线,两个站点间环回时延≤1ms。

4.4.2.3 方案对仲裁链路的要求

为保证各种异常情况下,存储双活集群能够进行仲裁,业界存储双活方案都需要设计第三方仲裁站点,以保证多种异常情况下的业务连续性。

两个双活数据中心与第三方仲裁站点间的链路选择IP网络,可以增加方案的灵活性,有利于降低建设的整体成本。

华为存储HyperMetro双活技术方案提供了两种仲裁模式:

  • 静态优先级模式

  • 仲裁服务器模式

仲裁服务器模式比静态优级模式具备更高的可靠性,可保证在各种单点故障场景下,业务连续运行。因此,双活方案推荐采用仲裁服务器模式,建议有条件仲裁服务器部署在第三个机房。

下面列出了仲裁服务器模式下,各种故障场景下双活业务表现。

编号

示意图

仲裁结果

1

图片

故障类型:仲裁失效

仲裁结果:H1继续运行业务

2

图片

故障类型:一套阵列与仲裁之间链路故障

仲裁结果:H1继续运行业务

3

图片

故障类型:一套阵列失效

仲裁结果:H1失效,H2继续运行业务

4

图片

故障类型:阵列间链路中断

仲裁结果:H1继续运行业务

5

图片

故障类型:一套阵列与仲裁同时失效

仲裁结果:H1失效,H2停止业务

6

图片

故障类型:一套阵列与对端、仲裁的链路同时中断

仲裁结果:H1停止业务,H2继续运行业务

7

图片

故障类型:一套阵列失效,且对端与仲裁链路中断

仲裁结果:H1失效,H2停止业务

8

图片

故障类型:仲裁失效,且阵列间链路中断

仲裁结果:如果两个两个故障同时发生时,H1与H2均停止业务;如果两个故障发生存在分钟级时间差,则H2停止业务,H1继续运行业务,相关原理见仲裁模式互转功能

9

图片

故障类型:仲裁失效,且其与一套阵列链路中断

仲裁结果:H1继续运行业务

4.4.2.4 高可靠链路设计的要求

如果是跨中心双活部署,建议每个控制器节点都与对端阵列建立至少2条阵列间镜像链路,并对两条链路的交换机进行隔离,获得较好的链路可靠性。如果使用仲裁服务器模式,则建议每个控制器节点都有1条连接到仲裁服务器的链路。

图片

为保证双活性能,华为存储HyperMetro双活技术方案对站点间双活链路的网络要求如下:

  • 误码率≤10-12e。

  • 时延RTT≤2ms。

  • 无抖动,无丢包。

  • 链路带宽>业务峰值带宽,最低要求2Gbps。

4.4.3 NAS存储方案设计

两台华为OceanStor 18000系列高端存储在基于NAS存储类型应用的双活方案设计上,采用基于IP网络 华为存储HyperMetro双活技术方案。

4.4.3.1 方案对网络和设备的要求

1.A数据中心与B数据中心NAS业务IP二层网络打通

2.A数据中心与B数据中心使用相同品牌型号的NAS存储(两套NAS存储替换原有 NAS存储)

图片

在生产中心与灾备中心使用相同型号的NAS存储,通过两中心之间的二层网络连通。两中心NAS配置一个或多个VIP地址用于服务器主机挂载使用,生产中心与灾备中心服务器挂载主中心NAS存储业务IP。

当生产中心或灾备中心NAS存储损坏时或NAS网络断开时,不影响NAS正常对外提供服务(主NAS存储故障会有一个切换时间即MAC地址老化时间)。

NOTE:根据实际测试,如果部分Linux版本未更新内核补丁,会出现NAS业务IP主备切换时的hang机情况,可通过更新OS内核补丁解决。因此NAS业务上线前,可先对网内各版本NFS客户端操作系统进行验证测试。

4.4.3.2 双活存储镜像技术

1.NAS双活基于租户粒度的切换,使得用户可以根据业务分布灵活配置不同的租户即可完成业务在跨中心的负载均衡。

2.华为HyperMetro通过实时镜像功能,保证位于两个站点的VStore之间数据的时刻一致。主机写操作通过实时镜像技术同时写入两个数据中心的HyperMetro成员文件系统。具体的写请求处理如下图所示。

图片

3.主机下发写请求到主文件系统。

4.主文件系统将写I/O请求写到双活I/O管理模块。

5.双活I/O管理模块记录LOG。

6.双活I/O管理模块同时将该写I/O写入本端Cache和远端Cache。

7.主端和远端Cache向双活I/O管理模块返回写I/O结果。

8.双活I/O管理模块返回写I/O结果到主文件系统。

9.主文件系统将写请求的结果返回给主机。

10.双活I/O管理模块判断双写是否成功。

11.如果两端都写成功,双活I/O管理模块清除LOG。

12.如果有任意一端写失败,LOG转换成DCL,记录本端文件系统和远端文件系统的差异数据。

4.4.3.3 双活IO访问路径

NAS协议依赖IP地址寻址,配置有双活关系的两个VStore,具有相同的IP地址,但只有一个IP地址是激活的,另一个IP地址是未激活的。如下图,当用户执行主从切换后,阵列B的IP地址被激活,阵列A的IP地址未激活,主机应用的操作被转发到阵列B。

图片

4.4.3.4数据一致性保证

HyperMetro 通过实时镜像功能,保证两个站点存储阵列之间数据的实时同步。主机写操作通过实时镜像技术同时写入两个数据中心的双活成员FS,保持数据实时一致。具体的写I/O流程如下图所示。

图片

如图所示,系统正常情况下,应用写IO数据下发,都要同时写到两台阵列的FS Cache再返回主机,确保两台阵列数据实时一致。

4.4.4 双活存储设备优势

4.4.4.1 极简组网

采用华为HyperMetro双活存储架构相比IBM SVC或者EMC VPLEX无需额外部署网关设备,最大支持32个存储控制器,即两套16控存储系统组建双活关系。双活的两套存储系统间通信从性能上考虑推荐使用FC链路,存储系统和仲裁服务器之间的链路采用IP链路。

4.4.4.2 跨站点集群

两套独立的存储阵列组建成跨站点集群,并以跨站点集群为核心,提供双活存储架构,向应用服务器提供无差异的并行访问,处理应用服务器的I/O请求。

在跨站点集群基础上,SAN双活以双活Pair或双活一致性组为单位提供服务和进行状态管理;NAS双活以双活租户为单位进行状态管理。用户可以按租户分布自己的业务,将一个业务系统涉及的SAN和NAS均置于某个租户管理界面内,便于管理。

两套存储阵列上的双活成员LUN组成一个虚拟双活LUN,通过实时镜像技术保持两个数据中心的双活成员LUN的数据实时一致。

4.4.4.3 跨站点数据实时镜像

HyperMetro 通过实时镜像功能,保证两个站点存储阵列之间数据的实时同步。主机写操作通过实时镜像技术同时写入两个数据中心的双活成员LUN,保持数据实时一致。具体的写I/O流程如图所示。

图片
假如数据中心A阵列收到写I/O,镜像处理流程如下:

1.主机下发写I/O到双活管理模块。

2.系统记录LOG。

3.执行双写:双活管理模块同时将该写I/O写入本端Cache和远端Cache。

4.本端Cache和远端Cache向双活管理模块返回写I/O结果。

5.双写结果处理:等待两端Cache的写处理结果都返回,才向主机返回写I/O结果。

6.判断双写是否成功。

7.如果都写成功:清除LOG。

8.如果有一端失败:LOG转换成DCL,记录本端LUN和远端LUN的差异数据。

HyperMetro的数据同步支持断点续传功能,当某些故障场景(如单套存储系统故障)导致HyperMetro异常断开时,HyperMetro通过记录DCL的方式,记录主机新产生的写I/O,DCL采用具有掉电保护能力的Cache空间记录以获得良好的性能。当故障恢复时,HyperMetro将自动恢复镜像关系,并且将所记录的增量数据自动同步到远端,无需全量同步所有数据,整个过程对主机“透明”,不会影响主机业务。

4.4.4.4 FastWrite

为了保证两个数据中心存储的数据实时一致,写操作都需要等待两端存储写成功之后再返回主机“写成功”。HyperMetro设计了一系列I/O性能优化方案,HyperMetro阵列间IO使用SCSI协议进行发送,通过FastWrite功能对阵列间数据传输进行了协议级优化,将写数据的链路传输交互次数减少一半。前后优化如图所示。

图片

4.4.4.5 双活就近优先访问

SAN双活与NAS双活不同,SAN双活由多路径下发写请求至阵列,可以基于路径进行更好的选择。当双活数据业务场景,两站点的距离远近,是影响I/O访问性能的关键因素。HyperMetro特性通过与华为OceanStor UltraPath多路径配合,根据双活站点部署距离,提供了负载均衡模式(I/O以分片的方式在两个阵列上下发)和优选阵列模式(手动在UltraPath上指定优选访问阵列)两种I/O访问策略供选择。

负载均衡模式主要应用于双活业务部署在同一数据中心的场景。在该场景下,主机业务访问两套双活存储设备的性能几乎相同,为最大化利用两套存储设备的资源,将主机I/O按分片方式下发到两套阵列上。

优选阵列模式主要应用于双活业务部署在距离较远的双数据中心场景。优选阵列模式可以减少跨站点交互次数,从而提升I/O性能。

针对数据写场景,业务主机直接写本数据中心对应的双活存储阵列,避免主机跨数据中心转发数据,充分利用HyperMetro AA双活能力,AA集群的每个控制器都能够接收写I/O,由本地控制器处理本地主机的写I/O请求,减少跨数据中心的转发次数,提升方案整体性能。

5 双活数据中心切换方案

5.1 灾备切换流程

图片

5.2 灾备切换步骤

生产中心机房发生灾难,引发信息技术设备(网络、服务器、存储等)故障或数据库与应用系统故障,短时间内无法修复,直接导致生产中心承载业务处理的应用系统无法提供正常服务。当出现灾难场景时可分为数据中心切换、应用系统切换、数据库系统切换、存储系统切换,根据不同的场景需要根据实际情况使用不同策略及方法进行切换,以下为几种典型场景进行切换。

1、数据中心切换

当生产中心发生灾难,例如机房停电等故障,并且暂时无法恢复时需要将整个数据中心切换至灾备中心,所有访问均从灾备中心访问,待生产中心恢复正常后,再将所有系统切换回生产中心。

2、应用系统切换

应用系统切换分为无状态应用切换和有状态应用切换,切换均要通过手工执行操作,不同业务系统需根据实际情况选择适合方法进行切换。

3、数据库系统切换

数据库系统切换应根据不同的数据库类型(包括Oracle、MySQL和SQLServer等)分别进行切换,切换完成后需要对数据库状态和数据完整性进行验证。

4、存储系统切换

本项目中存储系统采用的双活架构部署,任何一端的存储故障都不会对业务系统产生影响,可以保证业务的连续性。需要注意的是,待故障存储故障恢复后,需要先做数据同步,然后再恢复双活数据复制状态。

6 项目总结

本次项目中,结合我行实际情况,得出双活数据中心项目建设实践中使用华为存储HyperMetro双活技术方案的亮点如下:

秒级切换:SAN和NAS一体化双活典型场景下,一般能在数秒至数十秒内完成双活切换,有效保护业务的连续性。

自动恢复:如果站点A发生故障导致VStore Pair工作站点切换到站点B,在A故障恢复后,可以自动发起重同步,而无需人工接入。在重同步完成后,双活变为正常状态,该状态下站点B再发生故障,双活可以继续切换到站点A,业务不中断。

组网简单:整合双活数据复制链路、配置同步链路和心跳链路到一个物理网络,简化了两个数据中心的组网,两套存储系统间的复制链路可以使用IP或FC链路。考虑到前端业务链路一定是IP网络,所以HyperMetro能工作在全IP网络环境下,以降低构建成本。

免网关:减少网关故障点,提高方案可靠性;I/O响应速度更快,无需经过存储网关转发,避免网关转发I/O时延;显著降低双活组网复杂度,便于维护。

易于升级扩展:当我们需要为原有SAN和NAS业务配置双活时,只需要购买双活license并升级到最新的软件版本,就可以和另一台阵列配置双活,而不需要额外的数据迁移过程。

两中心“双活”:通过GLSB负载均衡,实现两数据中心按一定比例分发业务流量,较好的实现了双中心流量均衡负载及设备资源的有效利用。

原题:银行双活数据中心项目建设实践

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多