数据迁移到云端详细指南_服务器容器迁移_云服务提供商选择标准

我是一名运维老兵,在一线摸爬滚打十多年,我主导过企业级数据迁移项目,有上百次之多,涉及从几百GB的小型业务库,到几十TB的核心交易系统。

今日,我会拿一套真切的生产环境当作例子,一步一步地带着你完结一回从物理服务器至云端的整个迁移。

这次的场景设定是这样的,有一处是某中型电商网站,它运行于LNMP环境之中,借助宝塔面板来进行管理,每天的日均PV大概是10万,当下需要以平滑的方式迁移到阿里云ECS那里,并且要去完成CDN加速以及全站HTTPS改造。还有,全站HTTPS改造要完成。

场景:为什么要迁?

原来的业务,被部署于本地的IDC,其带宽成本高昂,硬件扩容的周期漫长,并且在面临DDoS攻击之际,防护能力较为薄弱。

此次上云核心目标:降低延迟、增强安全性、实现弹性伸缩

我们会运用“先进行增量同步,而后实施割接”这样的策略,以此确保在迁移的这段期间业务处于零中断的状态。

第一步:迁移前的“战备”检查

切忌拿到服务器就开始打包数据。

我们首先登录原服务器,进行彻底的资产盘点。

# 登录原服务器,查看系统版本与内核
cat /etc/redhat-release && uname -r
# 查看磁盘挂载与使用情况,明确数据盘位置
df -h
# 查看当前运行的LNMP相关服务
netstat -tunlp | grep -E 'nginx|mysql|php'
# 记录宝塔面板版本及插件列表
bt 1

操作目的:明确源端环境,确保目标云服务器可以兼容。

留意要点:将Nginx配置记录下来,把MySQL版本记录下来,对PHP版本及扩展进行记录,这是接下来搭建相同环境的根基。

排错的思路是这种情况可,如果df命令出现卡住的状况,那么有可能是挂载点出现了故障,此刻需要先对文件系统展开修复,之后再进行迁移。

第二步:云端环境初始化

在云平台那儿去购买一台按照使用量来付费的 ECS 实例,给出这样的建议,其配置是不可以低于源服务器的那种情况哦。

操作系统选择与源端保持一致(如CentOS 7.9)。

安全组策略:先放行22、80、443及内网互通端口

登录新服务器后,搭建LNMP环境。

基于想要贴近生产环境,并且为了方便后期进行维护的考量,我做出的选择是通过编译来进行安装核心软件,而不是采用极速安装包这种方式。

# 安装依赖
yum install -y gcc gcc-c++ make automake openssl-devel pcre-devel
# 创建www用户
groupadd www
useradd -s /sbin/nologin -g www www
# 下载并编译Nginx (以稳定版1.24为例)
wget http://nginx.org/download/nginx-1.24.0.tar.gz
tar zxvf nginx-1.24.0.tar.gz && cd nginx-1.24.0
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-stream
make && make install

需留意的事项是,编译参数一定要带上,http_ssl_module,以及,http_v2_module,以此为接下来的,HTTPS,还有,HTTP/2,做好准备。

修正错误:要是提示缺少库,依据错误信息通过yum安装对应的带有devel的包就行。

第三步:数据与配置迁移

以全量打包加上增量同步的方式来进行,是因为手动去复制配置文件这种行为极易出现遗漏的状况。

1. 网站文件与配置备份

在原服务器上操作:

cd /www/wwwroot
tar -czf /tmp/web_backup_$(date +%Y%m%d).tar.gz your_site_folder
# 备份Nginx配置
cp -r /usr/local/nginx/conf /tmp/nginx_conf_backup
# 备份MySQL数据库
mysqldump -uroot -p --all-databases > /tmp/all_db.sql

2. 数据同步至云端

运用rsync来施行增量同步,保障在生产环境持续运行之际的数据一致性。

# 将打包文件和SQL推送到云端 (首次全量)
scp /tmp/.tar.gz root@:/tmp/
scp /tmp/all_db.sql root@:/tmp/
# 后续增量同步命令示例 (上线前执行)
rsync -avz --delete /www/wwwroot/ root@:/www/wwwroot/

需要留意的事项是,在进行SQL备份这个行为的时候,一定要加上代码“--routines”以及代码“--triggers”,不然的话,存储过程以及触发器将会出现丢失的情况。

若是scp速度迟缓,那就思考先进行压缩之后再开展传输,或者运用rsync--partial来达成断点续传。

第四步:云端恢复与配置

数据迁移到云端详细指南_云服务提供商选择标准_服务器容器迁移

登录云服务器,解压并恢复数据。

# 解压网站文件到目标目录
tar -xzf /tmp/web_backup_.tar.gz -C /www/wwwroot/
# 恢复数据库 (先创建空库)
mysql -uroot -p -e "create database yourdbname;"
mysql -uroot -p yourdbname < /tmp/all_db.sql
# 恢复Nginx配置
cp /tmp/nginx_conf_backup/* /usr/local/nginx/conf/ -r

修改Nginx配置文件中的域名解析路径和目录指向。

启动Nginx和PHP-FPM,测试本地访问。

/usr/local/nginx/sbin/nginx -t # 测试配置
/usr/local/nginx/sbin/nginx # 启动
ps aux | grep nginx # 检查进程

注意要点:一定要去更改数据库连接配置文件,举个例子像config.php这样的文件,里面的数据库地址需要变动,要是云数据库运用的是内网地址,那就得去确认网络是否能够相互联通。

第五步:域名解析、CDN与HTTPS割接

这是流量切换的关键一环,务必谨慎。

1. 接入CDN与SSL证书

在云厂商的光盘网络控制台那里,添加域名,让我们做这样两件事,其一,源站类型选择“源站域名”,其二,填入你的云服务器IP或者负载均衡地址喽。

将 HTTPS 强制跳转予以开启,上传 SSL 证书或者申请 SSL 证书,免费的也行,付费的也可以。

针对配置缓存规则而言,对于动态内容,像php这种格式的,还有jsp这种格式的,通常建议不要进行缓存,或者将缓存时间设置为0秒。

2. 修改DNS解析

进入域名注册商的后台登录界面,进行登录操作,把先前存在的A记录予以修改,使其变为CNAME记录,该记录要指向由CDN厂商所提供的加速域名,这一操作需完成。

生存时间设置建议如下,提前一天把生存时间调低到60秒,为了割接的时候能够快速生效。

割接时,修改记录后,等待TTL过期,新访问即会导向CDN。

需要留意的事项是,不要在云服务器上直接开启HTTPS之后,就把DNS切向ECS这种操作,因为如此这般会绕过CDN防护。

准确无误的链路呈现为:用户,接着是 CDN 且采用 HTTPS 方式,随后连接至源站,源站可采用 HTTP 或者 HTTPS 方式。

将其改为:要是切换过后,网站出现无法访问的状况,那就去核查一下,CDN回源配置是不是处于正确的状态,并且还要看看,源站安全组有没有把CDN回源IP段给放行。

第六步:安全加固与故障排查

迁移完成不是终点,安全加固才刚开始。

1. 系统层加固

# 修改SSH默认端口,禁止root直接登录
sed -i 's/#Port 22/Port 22666/' /etc/ssh/sshd_config
sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
systemctl restart sshd
# 安装Fail2ban防止暴力破解
yum install epel-release -y && yum install fail2ban -y
systemctl enable fail2ban --now

2. 常见故障排查演练

问题:502 Bad Gateway

进行排查会经历这些步骤,首先,要去检查PHP - FPM是否处于运行状况可以通过执行这样的命令,即ps aux | grep php-fpm ,其次,要去查看PHP - FPM的日志,其命令是tail -f /usr/local/php/var/log/php-fpm.log ,最后,要检查Nginx和PHP - FPM的通信方式,也就是看socket或者端口是否相匹配。

问题:网站加载慢

排查步骤如下:首先,运用curl -w来测试各个阶段所耗费的时间;其次,对CDN命中率展开检查;最后,登录云服务器,借助top以及iostat去排查服务器负载与磁盘IO。

总结:实战复盘

从物理的机器到云端,这并非仅仅是数据的转移,而是架构以及运维思路的提升,是一种升级。

在此次实战来讲,我们达成了存量数据的分析,进行了编译并开展实现LNMP的安装行为实例,实施了rsync增量同步情况,开展了CDN以及HTTPS改造的相关工作事项,还完成了安全加固这一系列完整链路情况。

记住,一次成功的迁移,七分在准备,三分在执行。

新环境稳定运行一周后,原服务器数据方可清理。

希望这篇指南能成为你上云之路的可靠“排雷手册”。