一 概述

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. Flask文件目录----- db文件

    import sqlite3 import click from flask import current_app, g from flask.cli import with_appcontext d ...

  2. js获取文件上传进度

    js获取文件上传进度: <input name="file" id="FileUpload" type="file" /> &l ...

  3. 解决浏览器窗口缩小出现白色背景的bug

    父容器上添加最小宽度min-width=xxxpx min-width的值大于浏览器横向滚动条出现时的宽度.

  4. SVN中建立项目

    下午建个svn的时候,出错,有个东西配置错了,晚上google看到一篇文章,觉得作者写的不错,而且很用心,转来共享. [转至]5分钟快速建立项目版本控制 – Face Code,Brain bloom ...

  5. 【Android 界面效果46】自定义view常处理的回调方法

    onFinishInflate() 当View中所有的子控件均被映射成xml后触发 onMeasure(int, int) 确定所有子元素的大小 onLayout(boolean, int, int, ...

  6. SharePoint 和 Windows Phone 7 开发人员培训资源

     该工具包包括单位数目: Windows Phone 7 发展简介 在本单元中,您将了解真实的消费信息存储在 SharePoint 中与你用 Visual Studio 写 Windows Phone ...

  7. PowerMock学习笔记,对单例的测试方法

    对单例进行mock 单例类 public class PmModelHandler { // 包含要mock掉的成员变量 private static LogService logger = LogS ...

  8. naive bayes classifier in data mining

    https://www-users.cs.umn.edu/~kumar001/dmbook/slides/chap4_naive_bayes.pdf  -- textbook https://www. ...

  9. 进程、内存的理想与现实 VS 虚拟内存

    理想情况下一个进程的运行,需要一块足够大的连续的内存进行装载. 现状: 1)内存不够大:分解进程内存空间. 2)内存不连续:内存映射.

  10. 课程设计__C++初步,C++对C的扩充

    小草的C++要结课了,小草终于翻起书来,小草用的老谭的书,有什么不对的就找老谭去吧. ///C++初步 ///C++对C的扩展 #include <iostream> using name ...