浅谈XX系统跨平台迁移(测试环境)
一 概述
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系统跨平台迁移(测试环境)的更多相关文章
- [原创] 浅谈ETL系统架构如何测试?
[原创] 浅谈ETL系统架构如何测试? 来新公司已入职3个月时间,由于公司所处于互联网基金行业,基金天然固有特点,基金业务复杂,基金数据信息众多,基金经理众多等,所以大家可想一下,基民要想赚钱真不容易 ...
- [原创]浅谈移动互联网App兼容性测试
[原创]浅谈移动互联网App兼容性测试 今天要谈的话题,估计各位测试都有感受,移动互联网App兼容性测试,我们到底测试覆盖如何去挑选机型?具体移动App兼容性测试如何开展?是不是应引进像testin这 ...
- 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6627260 在前面一篇文章浅谈Service ...
- 浅谈Android系统开发中LOG的使用
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用 ...
- 老司机浅谈linux系统学习技巧
Linux起源于20世纪70年代,是一种优秀的操作系统系统.初次接触到linux这个系统是在大学期间,这样才发现除了windows外的另外一个有趣系统.开始抱着好奇的心态去了解,随着深入学习,笔者被它 ...
- 浅谈Linux系统运维工程师必备技能
一.什么是运维工程师 相信读者们必定听说过Linux,也听说过运维工程师.那么运维工程师是个什么概念呢? 百度百科上的官方解释如下: 运维工程师(Operations)在国内又称为运维开发工程师(De ...
- (转)浅谈 Linux 系统中的 SNMP Trap
原文:https://www.ibm.com/developerworks/cn/linux/l-cn-snmp/index.html 简介 本文讲解 SNMP Trap,在介绍 Trap 概念之前, ...
- 浅谈linux系统中pdf文件的默认打开方式
atril.gimp和evince,三者均可以打开application/pdf格式文件.gimp为一款图像处理软件:atril为mate环境下常用的文档查看器:evince为gnome环境下常用的文 ...
- 浅谈Android系统开发中LOG的使用【转】
本文转载自:http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中,LOG是广泛使用的用来记录程序执行过程的机制,它既可以 ...
随机推荐
- spring-boot学习之属性配置
通过@value注解,将配置文件中的内容引入
- BZOJ4709: [Jsoi2011]柠檬(决策单调性)
题意 题目链接 Sol 结论:每次选择的区间一定满足首位元素相同.. 仔细想想其实挺显然的,如果不相同可以删掉多着的元素,对答案的贡献是相同的 那么设\(f[i]\)表示到第\(i\)个位置的最大价值 ...
- lnmp架构-负载均衡
一.几个基本概念 1.pv 值 pv 值(page views):页面的浏览量 概念:一个网站的所有页面,在一天内,被浏览的总次数.(大型网站通常是上千万的级别) 2.uv值 uv值(unique v ...
- matlab练习程序(粒子群优化PSO)
算法没有和图像处理直接相关,不过对于图像分类中的模式识别相关算法,也许会用到这个优化算法. 算法步骤: 1.首先确定粒子个数与迭代次数. 2.对每个粒子随机初始化位置与速度. 3.采用如下公式更新每个 ...
- PyYAML使用
install yum -y install PyYAML document http://www.showyounger.com/show/101586.html http://pyyaml.org ...
- Python基础学习之变量赋值
1.赋值操作符 Python语言中,等号(=)是主要的赋值操作符: >>> aInt=-100 >>> aString='this is a string' > ...
- Leetcode 46 47 Permutation, 77 combination
Permutation class Solution { List<List<Integer>> res = new ArrayList<List<Integer& ...
- POJ-2376 Cleaning Shifts---区间覆盖&贪心
题目链接: https://vjudge.net/problem/POJ-2376 题目大意: farmer John要安排他的牛清理牛棚,一共有T个牛棚要清理,每头牛可以清理相邻的牛棚.比如,一头牛 ...
- Android OpenGL ES 画球体
近期由于兴趣所向.開始学习OpenGL绘图. 本文以"画球体"为点,小结一下近期所学. > 初识OpenGL ES 接触OpenGL是从Android開始的.众所周知,And ...
- 找子串替换(kmp)poj1572
题目链接:http://poj.org/problem?id=1572 输入数据时要注意,这里是string型 用getline(cin,origin[i]); #include <string ...