实力科普,让网站和App搬家不再痛苦(BAE篇)

给网站、App搬家是个细致的体力活,容易遇到各种意外,轻则停服、影响收入,重则数据丢失,造成不可挽回的损失。因此需要制定一个周密细致的计划,所谓谋定而后动,三思而后行。

 首先要选择一个靠谱的平台。目前提供网站、app托管服务的平台很多,有免费的也有收费的,有境内的也有境外的,有大平台也有小平台。建议站长、开发者朋友从以下几个方面来选择:

稳定性:建议选择比较大的、比较重视这块业务的平台,服务相对有保障,避免停服带来的尴尬。境外的平台虽然不用备案,但是访问速度肯定没法和国内平台比。另外说墙就墙了,因此除非不得已,还是建议选择国内的平台。

性价比:价格是一个关键因素,但也不是越便宜越好。免费的服务不推荐,说停就停了,没有保障,而且往往会在数据迁移方面设置各种障碍。另外还要考虑收费是否灵活,如果不灵活就失去云服务的优势了。

可扩展性:CPU、内存、容量和带宽都要能够很方便的扩展。毕竟等网站、App的流量、数据量上来后,谁都不想再搬家,这个站长、开发者朋友都懂的。

安全性:平台要能够提供最起码的入侵和攻击防护,这一点大平台肯定比小平台更有优势。在互联网上裸奔是个近乎自杀的行为,分分钟让你中招。

接下来以百度开放云应用引擎BAE为例,介绍如何进行网站、App的迁移。

百度应用引擎(Baidu App Engine,简称BAE)是国内商业运营时间最久、用户群体最为庞大的PaaS平台之一,提供弹性、一站式的应用部署服务,支持php/java/node.js/python等各种语言。用户只需上传代码,BAE自动完成运行环境配置、应用部署、均衡负载、资源监控、日志收集等各项任务,大大简化运维部署工作。

同时基于百度开放云海量的资源,基于docker技术和分布式架构,BAE提供灵活、弹性、分钟级的资源扩展能力,升级扩容无需重新部署代码,轻松应对各种高并发访问场景(如“双十一”、“秒杀”、“春运订票”等)。

一般的站长和开发者朋友对BAE应该并不陌生,这里就不详细展开了,不清楚的朋友可以访问其官网、在线帮助、论坛脑补一下:

https://bce.baidu.com/product/bae.html

https://bce.baidu.com/doc/BAE/QuickGuide.html

https://bce.baidu.com/doc/BAE-Pro/QuickGuide.html

http://developer.baidu.com/forum/topic/list?boardId=66

(值得一提的是BAE刚刚支持了自定义docker镜像,这对于当下如火如荼的docker开发者而言是一个福音。)

第一步:评估可行性

迁移网站之前,首先要评估您的网站、App能否在BAE上正常运行。主要从两个方面来判断:

一是运行环境是否满足要求,BAE提供了支持以下语言的运行化境:

语言环境

BAE基础版

BAE专业版

php 5.4

php 5.5(含Zend Guard Loader)

php 5.6(含Zend Guard Loader)

-

java 7

java 8

python 2.7

node.js 4.2

自定义docker镜像

-

(*通过自定义docker镜像,您可以自行安装任何语言需要的依赖和组件。)

二是您的网站、App是否需要读写本地文件。BAE虽然允许程序读写本地文件,但是在应用重启时更新会丢失。这主要是因为BAE是为支持高并发、分布式应用部署而进行设计的,要求每个执行单元/服务器实例上运行的程序是无状态、无差别的,这就要求不能将需要长久保存的数据写到本地(否则下次访问该文件时,会因不知道这个文件存在哪个实例上而导致出错)。此外,应用在故障重启或者发布新版本时,也会从代码库中取出对应的版本覆盖本地空间,导致本地文件被覆盖。通俗来说,就是BAE的代码空间和运行空间是分离的,代码空间里的文件不会丢,运行空间里的文件在重启或发布新版本时会被清空。因此要将需要持久保存的数据写到数据库或者外部存储介质中(如BOS)。

因此,您可能需要修改原来的程序以适应BAE这种分布式部署架构。好处很明显,分布式的架构将使您的应用将更加稳定、健壮,并能够应对高并发的访问场景。

对于一些开源框架(如Wordpress),已经有一些专门的插件,帮助您将本地文件读写改成读写到BOS,详情请参考BOS论坛上的一个帖子

值得注意的是,BAE即将推出应用模板功能,届时将支持本地文件的永久存储,模板原生代码不需要改动即可正常运行,支持在线安装模板插件、升级模板、备份数据,将极大提高对各种开源框架的兼容性。

 

第二步:BAE基础版 vs. 专业版

 需要确认是迁移到BAE基础版还是专业版。这两个版本各有侧重:

BAE基础版:资源共享,更经济、更便捷,适合部署中小型站点

BAE专业版:资源独享,更安全、更强大,适合部署中大型站点

两者详细对比如下(●支持   -不支持    〇即将支持):

 

分类

功能

BAE基础版

BAE专业版

网络

10线BGP网络接入

公网IP

共享IP

独立IP

带宽

共享5Mb/s可扩展

独享1-1000Mb/s可调

端口

随机端口

自定义端口

安全

私有虚拟网络

自定义https证书

WAF防御

流量清洗

存储

BOS(对象存储)

内网连接(另行付费)

内网连接(另行付费)

RDS(MySQL)

外网连接(另行付费)

内网连接(另行付费)

SCS(简单缓存服务)

外网连接(另行付费)

内网连接(另行付费)

MySQL(共享,容量1GB,暂不支持升级)

内网连接(5个免费实例)

-

MongoDB(共享,容量1GB,暂不支持升级)

内网连接(3个免费实例)

内网连接(3个免费实例)

Redis(100000kv,,暂不支持升级)

内网连接(1个免费实例)

-

多环境

- 支持预览

环境变量

版本回滚

资源

计算资源

共享

独享

资源监控

 

第三步:数据库迁移

确认数据库服务是否满足需要。目前BAE基础版提供了免费的MySQL和MongoDB服务,BAE专业版可以对接RDS(关系型数据库)。其中免费MySQL支持从BOS(百度对象存储)导入数据,而RDS提供了数据迁移工具,方便用户进行全量数据迁移。一般推荐的组合是:

BAE基础版+BAE基础版扩展服务中的MySQL/MongoDB/Redis

BAE专业版+RDS+SCS

如果以上数据库不满足您的要求,您还可以用云服务器BCC自行搭建数据库服务器。

 

第四步:搭建网站、App

 接下来是创建BAE应用、部署好代码。创建好数据库,将数据迁移过来。

具体的操作步骤可以参考BAE和RDS相应的帮助文档。RDS目前提供MySQL和SQLServer数据库服务。BAE专业版可以内网访问BAE基础版中的共享MongoDB服务。

如果您的网站、App对性能有较高要求,您还可以考虑使用缓存服务SCSRedis

同样,您还可以使用CDN服务,以提升站点在不同地区的访问速度。

建议对搭建好的网站、App要进行充分的测试。

下图是通过BAE专业版搭建高并发网站、App的系统架构图,供大家参考:

 

第五步:备案

 根据相关法规要求,网站需要进行站点备案(App不需要)。

如果您的站点之前已有备案,则需要进行备案的转入。如果您的站点之前没有备案,则要进行全新备案。

百度开放云提供免费的备案服务,详情可点击这里查看。

 

第六步:切换域名

请注意,在将域名指向对应的BAE站点之前,您的网站必须是已经完成备案的。

 

结束语

 在云计算连接一切的年代,你永远不用担心无家可归。

百度开放云是国内首家提供托管平台服务(BAE)的云计算厂商。四年来,我们累计为超过十五万名用户提供此服务。四年来,我们始终在这里。

关于百度开放云及BAE的更多资讯,请访问 https://bce.baidu.com/index.html

此条目发表在 未分类 分类目录。将固定链接加入收藏夹。

发表评论