把本地数据中心之中的工作负载转移到AWS云平台那里,这是企业数字化转型的关键一步。

这并非只是物理服务器的搬迁行为,更是存在如此机会,即对现有的架构去进行现代化的架构重构,进而实现降低成本并提高效率的绝佳时机。

本文会立足于资深运维工程师的视角,通过实战的形式,细致地剖析虚拟机、数据库、应用以及数据朝着云端进行迁移的整个流程,并且给出与之配套的运维以及安全加固指南。

一、迁移前的准备:规划与评估

在动手之前,务必对现有“工作负载”进行盘点。

选取我们当下正在运作的 LNMP 环境(即 Linux 加上 Nginx 再加上 MySQL 紧接着加上 PHP)应用当作例子,我们所要做到的是明确。

应用类型:究竟是那种属于stateless的无状态应用呢,还是那种依赖本地会话的stateful应用呀?

数据库:是自建 MySQL,还是使用了云数据库 RDS?

依赖关系:应用之间有无内网调用?

数据量:静态文件、数据库体积有多大,带宽如何?

最终要达成的评估目的便是去制定这样的路线图,即明确哪些属于”直接迁移“的范畴,哪些又是”重构后再迁“的类别。

二、分步实操:LNMP 应用平滑迁移至AWS

这一回的实战场景是,把一台处于本地的虚拟机之上运行的系统为CentOS 7 且为LNMP架构的WordPress站点,转移至AWS那里。并且,最终要运用RDS数据库以及S3用来存储静态资源,达成架构的升级。

第一步:使用 AWS SMS 将虚拟机“直接迁移”上云

在那些不想对系统环境一番折腾闹腾的情形之下,AWS Server Migration Service (SMS)不失为一个能够提供助力的好东西。

操作目的:把本地的虚拟机镜像复制于 AWS,去生成一份处于云上的 AMI。

2. 执行细节

在本地开展 AWS SMS 连接器即 Connector 的部署工作,随后将其与 AWS 服务进行关联。

创建迁移任务,将源虚拟机复制为 AMI。

注意事项:首次复制是全量,后续是增量。

鉴于数据并非实时进行同步,所以在生产环境实施切换之前,务必要停止机器运行,从而开展最后一回的同步操作。

3. 排错思路:要是连接器没办法完成注册,那就查看一下,本地防火墙有没有将必要的 AWS 端点放行,与此同时,还要看看连接器所在主机的 DNS 能不能把 AWS 服务域名解析出来。

第二步:使用 DMS 将自建 MySQL 零宕机迁移至 RDS

数据库是核心。

我们扔掉传统的那种“先停止服从而之后再进行导出以及导入”的做法,借助AWS Database Migration Service (DMS)达成持续同步。

1. 操作目的就是,把本地的 MySQL 数据,进行全量加载,加载到云上的 RDS 那里,然后开启实时同步,一直持续到切换前夕。

2. 执行细节

创建复制实例(Replication Instance)。

搭建源端点,需填入,当地 MySQL 的,内部网络 IP,以及端口,还有账户密码。

一定要保证,那个 DMS 复制实例,能够去访问那个 IP,其访问途径可以是借助虚拟专用网络,或者是通过 Direct Connect。

达成目标端点,挑选预先创建的 RDS for MySQL 实例。

创建迁移任务:选择“迁移现有数据并复制持续更改”模式。

三点,关于配置要求,本地的MySQL,务必开启Binlog,并且其格式要是ROW。

这是 DMS 捕获数据变更的前提。

4. 注意事项:于生产割接之前,要让 DMS 任务处于运行状态,并且需随时对延迟情况进行监控。

当延迟为 0 时,即可停写本地应用,再将流量切至 AWS。

第三步:在 AWS 上部署应用环境并配置数据

当虚拟机(AMI)迁移完毕之后,我们能够启动一台 EC2,不过基于要充分展现云原生的优势,我更偏向于在全新的 EC2 上面再度部署 LNMP,其中的数据是从 RDS 那里读取的。

操作目的:实行 LNMP 环境的布设,使其符合标准,进而与 RDS 建立连接。

2. 执行细节

# 在 EC2 上安装 EPEL 和 Remi 仓库,以获取最新 PHP
sudo yum install -y epel-release
sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi-php74
# 安装 Nginx、PHP、PHP-FPM
sudo yum install -y nginx php php-fpm php-mysqlnd php-xml php-gd
# 启动服务并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl start php-fpm
sudo systemctl enable php-fpm

服务器容器迁移_AWS网络冗余高可用方案_AWS工作负载迁移策略

3. 进行应用配置的修改:把WordPress的中的wp-config.php打开,针对数据库主机地址,要从localhost变更为RDS的内网域名,像database.cluster-xxx.rds.amazonaws.com这样的,并且还要将用户名密码改成RDS的高权限账号。

4. 要提升加载速度以及降低服务器负载,把附件上传目录(即/wp-content/uploads)整个复制到 S3 桶,还要安装 S3 Offload 插件,以使媒体库直接读取 S3,此为静态资源剥离。

第四步:切换 DNS 与配置 HTTPS

操作目的是,把自本地 IP 出发的公网流量,指向 AWS 的负载均衡器,或者 EC2 的公网 IP。

2. 执行细节

于 AWS 那儿去创建 Application Load Balancer(ALB),并且对监听器 80/443 予以配置。

将后端 EC2 实例加入目标组,ALB 会进行健康检查。

配置SSL/HTTPS操作如下,在AWS Certificate Manager即ACM中申领公有证书,像那种以.yourdomain.com结尾类型的。然后把所申领的这块公有证书,关联至ALB的HTTPS监听器上。如此这般就可达成一键托管证书的效果,进而免去在服务器那边手动进行续签的繁杂麻烦。

第一步,进行所谓域名解析,第二步,在DNS服务商那里,第三步,把A记录或者CNAME记录,第四步,变更为ALB的域名。

考虑到 DNS 缓存,此操作建议在业务低峰期进行。

三、加速与安全:CDN 与安全加固

开启 CloudFront CDN

目的:加速全球访问,并隐藏源站真实 IP。

先进行配置,此配置为创建CloudFront分配,在创建该分配时,要把源站按照要求设置为ALB的域名。

CloudFront能够自动跟ACM进行集成,从而对HTTPS予以支持。

针对于静态文件(像是 .jpg, *.css),缓存行为能够设置较长的 TTL,而动态内容会直接透传至源站。

AWS 安全服务实战

名为WAF(Web Application Firewall)的防护措施,它被附加于CloudFront或者ALB之上,并且配置有规则集,像SQL注入、XSS阻断这类规则集,其作用是用以保护WordPress,使其免受常见的Web攻击。

安全中枢:开启之后,它会将源自威胁检测的GuardDuty以及漏洞扫描的Inspector的安全发现进行聚合,进而提供一样的安全评分与改进建议,使得你对于云上资产的安全态势能够一眼就看明白。

使用 IAM 角色 , EC2 实例并不再运用长期 AccessKey , 是赋予以此一个其可具备得以访问 S3 、 RDS 等资源能力的 IAM 角色 , 这属于最为基本且相当重要的安全实践。

四、故障排查与备份恢复

常见故障排查

1. 502 错误网关:一般来讲呢,是 PHP - FPM 没有启动起来,或者是 Nginx 跟 PHP - FPM 的 socket 方面,通信配置存在不一致的情况。

查看,是不是指向到正确的,fastcgi_pass参数,在nginx.conf里边,php-fpm.sock文件或者端口。

2. 数据库连接出现失败状况:首先 ,通过执行 telnet RDS域名 3306 来对网络连通性展开测试。

接着,查看 RDS 安全组的入站规则那儿,有没有对 EC2 的私有 IP 予以放行,或者有没有放行安全组 ID 呢。

3. DNS解析未产生预期生效效果:运用 dig,或者 nslookup 来确定解析所呈现出的结果。

若需切回,保留原环境至少一周。

备份与恢复策略

在 RDS 当中默认开启自动备份所涉及的自动化备份之事,其保留期能够被设置成为 7 天到 30 天这个范围。

EC2能够借助AWS Backup服务,去创建具有周期性的AMI备份。

数据库恢复演练:定期于测试环境里,依靠RDS的快照去恢复出一个全新的库,用以验证数据的完整性以及可用性。

数据冗余:S3自身在于那具有99.99999999%持久性的存储,将版本控制功能予以开启,以此来防止出现误删或者覆盖的情况,这便是最佳的数据保护。

五、总结

于此次迁移实战当中,我们把本地工作负载迁移至了云上,而且利用了诸如 RDS 托管数据库、S3 对象存储、CloudFront CDN 这样的云原生服务,达成了架构的升级,这一点更为关键,是极其重要举足轻重的。

对运维人员来讲,这表明我们无需再为数据库的硬件故障而操心,不用再管 MySQL 的源码编译环境,也不用每日手动去备份文件,能够把精力更多地集中在业务代码以及性能优化方面。

此一整套流程,展现出了“直接迁移”跟“现代化改造”的有机融合状况,它乃是企业实现上云的一条稳健可靠的可行途径。