(1) 盘点现有资产:列出操作系统、应用、数据库、端口、证书、计划任务、依赖服务与存储位置。
(2) 制定迁移窗口:选择低峰时段,评估停机时间,设置回滚点。
(3) 性能基线:记录CPU、内存、磁盘IO、网络带宽与并发连接。用于在恒创香港云上选型。
(4) 权限与账户:在恒创云控制台创建管理员账号,配置MFA,生成并保管SSH密钥对。
(1) 选择镜像与规格:根据基线选择镜像(Ubuntu/CentOS)与CPU/内存/磁盘类型(SSD/高IO)。
(2) 网络与子网:创建VPC并选择香港区域子网,记录子网CIDR和网关。
(3) 密钥与安全组:上传SSH公钥,创建安全组仅开放必要端口(22、80、443、数据库端口仅内网)。
(4) 启动并记录公网IP/私网IP,测试SSH连通性:ssh -i key.pem root@公网IP。
(1) 更新系统:Ubuntu: sudo apt update && sudo apt -y upgrade;CentOS: sudo yum -y update。
(2) 创建非root用户并配置sudo:adduser deploy;usermod -aG sudo deploy;复制SSH公钥到~/.ssh/authorized_keys。
(3) 关闭密码登录与root远程登录:编辑 /etc/ssh/sshd_config,PermitRootLogin no,PasswordAuthentication no,重启sshd。
(4) 防火墙与Fail2Ban:配置ufw或firewalld,只允许必要端口;安装fail2ban防暴力攻击。
(1) 文件迁移(大文件/多文件):使用rsync增量同步:rsync -avz -e "ssh -i key.pem -p 22" /source/ user@dest:/path/;首次全量,后续增量。
(2) MySQL迁移:mysqldump -u root -p --single-transaction --routines --triggers --events dbname > db.sql;scp 或 rsync 传输 db.sql 到目标;mysql -u root -p dbname < db.sql。若数据量大,建议用Percona XtraBackup或物理复制。
(3) PostgreSQL迁移:pg_dump -U user -Fc dbname > db.dump;在目标用 pg_restore 恢复。
(4) 文件权限保持:迁移后运行 chown -R appuser:appgroup /path 并校验SELinux上下文(如适用)。
(1) 环境变量与配置文件:同步.env、配置模板,确保生产凭据、秘钥在目标机已配置且权限受限。
(2) 启动服务并检查日志:systemctl start myapp;journalctl -u myapp -f 或 tail -n 500 /var/log/myapp.log。
(3) 健康检查:使用 curl -I http://localhost:端口/health 或自定义脚本检测响应码与延迟。
(4) 性能对比:使用 ab、wrk 或 siege 进行压测,和迁移前基线比对,微调缓存/连接池。
(1) 降低TTL:在迁移前24小时将原DNS记录TTL降至60秒。
(2) 切换步骤:在确认新机服务稳定后,修改A记录指向恒创香港公网IP;若使用负载均衡,先加入新实例并逐流量转移。
(3) 验证:使用 dig +trace domain.com 与 curl --resolve 检查解析;确保HTTPS证书覆盖新IP(使用Let's Encrypt或上传证书)。
(4) 回滚:若发现问题,立即将DNS恢复到旧IP并通知团队,同时记录问题日志用于后续修复。
(1) 快照策略:为系统盘和数据盘配置定期自动快照(建议每日差异快照+每周全量),在控制台设置保留策略。
(2) 数据库备份:定时执行逻辑备份并上传到对象存储或异地服务器;示例cron:0 2 * * * /usr/local/bin/backup_db.sh。
(3) 恢复演练:每季度从快照/备份恢复到测试实例,验证数据完整性与应用能否正常启动。
(4) 多可用区或异地复制:如业务关键,配置同步复制或异地备份,保证RTO/RPO符合要求。
(1) 部署监控Agent:安装恒创或通用监控Agent(如Prometheus Node Exporter、Telegraf),收集主机和应用指标。
(2) 指标与阈值:CPU>80%、磁盘使用>75%、DB连接数>预设、响应时间>2s设置告警;配置SMS/Email/钉钉/Slack通知。
(3) 自动化运维:使用Ansible编写playbook实现补丁、配置下发与扩容;示例:ansible-playbook -i hosts site.yml。
(4) 日志集中:使用ELK/EFK或云日志服务采集日志,便于快速定位问题。
(1) 水平扩展:将应用容器化或使用负载均衡器,添加实例到后端池,确保会话/持久化策略正确。
(2) 垂直扩展:根据瓶颈调整实例规格,先做测试再变更生产规格。
(3) 成本管理:清理未使用快照、闲置IP与未标记资源;使用预算告警与预留实例/包年包月方案降低成本。
(4) 合规与审计:开启操作审计日志,定期导出并保存,满足合规要求。
问题:迁移完成后外部无法访问服务,如何逐步排查?
回答:1) 检查实例是否已启动:ssh 连通性;2) 检查安全组/防火墙:确认80/443/应用端口已开放;3) 应用进程是否运行:systemctl status 或 ps;4) 本地端口监听:ss -tulpen | grep :端口;5) 日志查看错误;6) DNS解析是否到新IP;7) 若涉及负载均衡,检查后端健康检查与后端池配置。
问题:如何在迁移中尽量做到数据零丢失?
回答:1) 使用主从复制或binlog/增量同步,在切换前确保binlog位点一致;2) 对数据库在迁移窗口内禁止写入或进入维护模式;3) 使用rsync --delete --times --progress 做最后一次短时间增量同步;4) 设置事务日志备份并在目标机应用直到切换完成;5) 测试恢复流程确保可用。
问题:迁移完成后如何持续运维以降低故障率?
回答:1) 建立SOP与Runbook,明确故障响应流程;2) 自动化常见操作(部署、回滚、备份)并通过CI/CD执行;3) 定期演练故障恢复与回滚;4) 监控与告警不断调优,设置合理阈值并安排值班;5) 做好容量规划与定期安全扫描与补丁管理。
