一 概述

XX系统目前运行在XX-A的云平台上,计划将其迁移至XX-B的云平台。

XX系统是java开发,中间组件涉及nginx+keepalived实现各个业务系统之间的高可用,kafka,zookeeper、redis等组件用于消息处理协调及缓存工作,数据存储有postgres、fastdfs、hbase。针对数据接入,有各个基站数据发送至数据处理服务器再转发至网关接入系统。数据迁移过程中,上层业务系统及中间组件迁移事项比较单一,进行再部署,配置修改即可。针对数据处理服务器(即目前使用的抓包服务器)涉及修改数据转发目的地址至XX-B的新地址,难点存在于数据存储部分的迁移事项。

二 网络

方案1:

VPN(Strongswan)

方案分析:

搭建VPN的方式对公网带宽有一定的影响,若vpn带宽用的过大,则会影响到线上用户对系统的访问;若VPN带宽用的过小,则会对数据同步速度造成影响,本次测试未考虑此方面的问题。

方案实现(亲测):

flexgw镜像使用指南:http://source.docs.cloudcare.cn/support/image/others/others_16/?spm=5176.730006-cmjj006981.102.10.ZjE3eJ

strongswan:https://help.aliyun.com/document_detail/57412.html?spm=5176.product51933.6.556.s0PPxP

注意:

在VPN搭建完毕之后,需要对hbase添加访问白名单,在其中注明源地址的IP段;
在源设备中添加静态路由指向VPN设备地址;
在NAT映射设备中需要添加路由指定目标网段访问指向到vpn所在设备;

三 数据存储-fastdfs

方案1:

针对fastdfs的迁移,其中主要存储图片数据,需要先将postgres数据库及数据导入之后,再进行fastdfs数据导入,因为在fastdfs导入的时候会将每个图片生成一个链接地址存储在postgres中,供其他业务系统调用。

方案分析:

数据迁移不会对原线上系统造成影响。

方案实现:

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /file/need/to/be/import

四 数据存储-postgres

postgres有业务系统数据及轨迹数据,其中轨迹数据需postgis轨迹插件支持。

方案1:

通过使用ECS服务器实例搭建相同版本postgres及相同版本插件,首先关闭postgres写入,再将postgres数据dump到本地,再使用sql命令导入dump下来的文件。

方案分析:

考虑线上环境postgres数据量大,dump时间+数据传输时间+数据导入时间=T远大于实际能接受的范围,故此方案排除;

方案实现:

通过pg dump命令对数据进行下载及导入。

方案2(优选方案):

通过使用ECS服务器搭建相同版本postgres及相同版本插件,并对原系统postgres及XX-B上postgres配置进行修改,配置主从postgres数据同步,待数据同步完毕之后,进行主备切换。

方案分析:

此方案能够满足线上系统几乎不影响用户使用,在增加此同步postgres之后,对原有系统网络性能会造成一定的影响,故建议在夜间用户访问量较少的情况下进行。

方案实现:

参考我博文(亲测):

Postgres配置主从流复制:http://www.cnblogs.com/cf532088799/p/7560842.html

Postgres主从切换:http://www.cnblogs.com/cf532088799/p/7592253.html

方案3:

通过使用XX-B的RDS数据库服务中的postgres数据库,使用DTS数据同步工具对测试环境postgres数据进行同步。

方案分析:

由于XX-B的DTS数据同步工具对postgres版本支持9.4及以上,测试环境及实际云环境中postgres版本均为9.1,所以此方案排除;

方案实现(若版本在9.4及以上可采用此方案,由于不符项目实际情况,未经测试):

DTS PG迁移手册:https://help.aliyun.com/document_detail/26624.html

方案4(若能实现,则为优选方案):

通过在测试环境搭建9.4版本的postgres,再对9.4版本psotgres与9.1版本postgres做主从同步,之后再通过XX-B的DTS数据同步工具来同步测试环境中的9.4版本的数据并使用XX-B云平台上RDS中的postgres服务。

方案分析:

此方案未经过测试,实际是否可行未作验证。

方案实现:

无  

五 数据存储-hbase

测试环境中仅仅对表H_DSE_TRACE进行导入/同步等测试,其大小在3.15G左右。

方案1:

通过对表进行快照备份,再将快照导出至目标集群,再通过数据恢复(快照恢复方式)。

方案分析:

对整个表进行快照备份,考虑到线上实际环境数据量大,表快照生成时间+表快照导出时间+表快照导入时间=T大于一天,故此方案不可取。

方案实现:

参考我博文(亲测):

使用hbase快照将数据输出到互联网区的临时Hbase集群:http://www.cnblogs.com/cf532088799/p/7445942.html

方案2:

通过采用XX-B云平台数据集成工具,通过数据集成脚本配置,根据rowkey来分批次导入。

方案分析:

在实际数据集成脚本配置过程中,需要配置表列族下面的列名,由于本项目中列名是由程序中截取协议ID+时间生成,列名及数量不定,不能采用此种方案。

方案实现(若条件符合列名及列名数量固定可采用此方案,由于不符项目实际情况,未经测试):

数据集成脚本模式:https://help.aliyun.com/document_detail/56231.html

数据集成reader:https://help.aliyun.com/knowledge_detail/54189.html

数据集成writer:https://help.aliyun.com/knowledge_detail/54191.html

方案3(优选方案):

通过hbase原生CopyTable来进行数据同步,可根据rowkey值范围分批次进行导入。

方案分析:

此方案对网络要求较高,在导入之前需要先将表split一下再导入,否则写入速度提不上去。

方案实现(亲测):

使用CopyTable同步Hbase数据:https://yq.aliyun.com/articles/176546?spm=5176.doc57695.2.2.c9ycjG

hbase shell 客户端:https://m.aliyun.com/doc/document_detail/52056.html?spm=5176.product49055.3.9.aEeFqx

(未完待续...)

浅谈XX系统跨平台迁移(测试环境)的更多相关文章

  1. [原创] 浅谈ETL系统架构如何测试?

    [原创] 浅谈ETL系统架构如何测试? 来新公司已入职3个月时间,由于公司所处于互联网基金行业,基金天然固有特点,基金业务复杂,基金数据信息众多,基金经理众多等,所以大家可想一下,基民要想赚钱真不容易 ...

  2. [原创]浅谈移动互联网App兼容性测试

    [原创]浅谈移动互联网App兼容性测试 今天要谈的话题,估计各位测试都有感受,移动互联网App兼容性测试,我们到底测试覆盖如何去挑选机型?具体移动App兼容性测试如何开展?是不是应引进像testin这 ...

  3. 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service ...

  4. 浅谈Android系统开发中LOG的使用

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用 ...

  5. 老司机浅谈linux系统学习技巧

    Linux起源于20世纪70年代,是一种优秀的操作系统系统.初次接触到linux这个系统是在大学期间,这样才发现除了windows外的另外一个有趣系统.开始抱着好奇的心态去了解,随着深入学习,笔者被它 ...

  6. 浅谈Linux系统运维工程师必备技能

    一.什么是运维工程师 相信读者们必定听说过Linux,也听说过运维工程师.那么运维工程师是个什么概念呢? 百度百科上的官方解释如下: 运维工程师(Operations)在国内又称为运维开发工程师(De ...

  7. (转)浅谈 Linux 系统中的 SNMP Trap

    原文:https://www.ibm.com/developerworks/cn/linux/l-cn-snmp/index.html 简介 本文讲解 SNMP Trap,在介绍 Trap 概念之前, ...

  8. 浅谈linux系统中pdf文件的默认打开方式

    atril.gimp和evince,三者均可以打开application/pdf格式文件.gimp为一款图像处理软件:atril为mate环境下常用的文档查看器:evince为gnome环境下常用的文 ...

  9. 浅谈Android系统开发中LOG的使用【转】

    本文转载自:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用的用来记录程序执行过程的机制,它既可以 ...

随机推荐

  1. Python函数(3)

    一.装饰器 什么是装饰器,装饰器就是用于拓展原来函数功能的一种函数 装饰器就是用来为被装饰对象添加新功能的工具,装饰器本身可以是任意可调用对象,被装饰的对象也可以是任意可调用对象 装饰器遵循一个关键原 ...

  2. [RabbitMQ]Windows环境下rabbitmqclt(Command Line Tools)出现Erlang distribution failed错误的解决方法

    摘要 当使用rabbitmqctl时出现Erlang distribution failed,把%SystemRoot%Windows\System32\config\systemprofile下的. ...

  3. 如何找到Android app启动activity和页面元素信息

    在实施app自动化的时候,我们需要知道app 的启动activity和页面元素信息,以此启动app和定位页面元素,那么如何在没有源码的情况下找打他们呢?当然是有好的工具啦,有Android sdk自带 ...

  4. django choice字段模板展示

    class UserInfo(AbstractUserInfo): """ 用户表 """ gender_choice = ( (1,&qu ...

  5. centos6.5_64bit_tomcat日志合并在一个.log下

    问题   tomcat每次启动时,自动在logs目录下生产以下日志文件,且每天都会生成对应日期的一个文件,造成日志文件众多:   目的        Tomcat以上日志都输出到同一个文件中.   修 ...

  6. April 22 2017 Week 16 Saturday

    Fear is an essential part of our survival, it keeps us alert. 恐惧是生存的重要部分,它让我们保持警惕. Fear and pain are ...

  7. nodejs封装的webget webpost方法

    在我之前的项目中,经常用到Nodejs通过post\get方法访问其它网站.webapi.下面是我封装的 Get.Post方法,很适合在一些web字符串收发场景使用(暂不支持文件.二进制流等传输). ...

  8. 译:Local Spectral Graph Convolution for Point Set Feature Learning-用于点集特征学习的局部谱图卷积

    标题:Local Spectral Graph Convolution for Point Set Feature Learning 作者:Chu Wang, Babak Samari, Kaleem ...

  9. 计算时间 相加,相减 的方法,TimeSpan 数据转换

    #region Time calculation method public static string DelayTypeTime_1(DateTime ArrivalTime_1, DateTim ...

  10. 2017.11.16 JavaWeb-------第八章 EL、JSTL、Ajax技术

    第八章 EL.JSTL.Ajax技术 ~~ EL (expression language) 是表达式语言 ~~ JSTL(JSP Standard Tag Library) 是开源的JSP标准标签库 ...