同城O2O源码落到云主机时,很多故障其实来自落盘混乱:应用、库文件、日志、备份挤在同一块盘;一扩容就互相抢 IO;一恢复就分不清该还原哪一层。
本文谈云主机上源码与库怎么落盘、权限怎么收、发布回滚怎么走。不绑定具体面板路径。
一、落盘建议:应用、数据、日志分开
常见切法:
/app:源码或运行包、配置(不含明文生产密钥)- 独立数据盘:数据库文件与本地备份
- 日志卷:应用日志与审计日志,可按大小滚动
对象存储可放导出归档与冷备份,避免把大文件堆在系统盘。系统盘只保操作系统与引导,应用与数据盘可随规格升级更换。
os disk
app disk -> /app
data disk -> /var/lib/db
log volume -> /var/log/app
object storage -> exports / cold backup
二、权限:运行用户只写必要目录
应用进程用户不应默认 root。对源码目录只读、对上传与临时目录可写、对数据盘仅数据库进程可写。备份账号尽量只读库,降低误删面。
交接后,客户侧应能独立改系统用户密码与库密码,不依赖外部人员长期留后门账号。密钥放权限收紧的文件或密钥管理服务,禁止写进世界可读配置。
三、发布与回滚
发布前打镜像或打包当前版本,保留上版目录。滚动顺序建议:停写或短维护 → 换包 → 启服务 → 冒烟(登录、下单、导出)。失败则切回上版目录,而不是在生产目录里手工改文件「急救」。
配置变更与代码变更尽量分开发布,方便定位是哪一次导致问题。多业务场景下,导出脚本与运行包一起版本化,避免「应用新了、导出旧了」字段对不上。
# 教学示意
./deploy.sh --release=20260916
./smoke.sh
# fail ->
./deploy.sh --release=prev
四、库与备份
数据盘快照与逻辑备份都要有。只做盘快照,不清楚库是否处于一致检查点;只做逻辑备份,恢复耗时可能超出业务可接受窗口。恢复演练要在同类规格主机上空跑一次。
读写账号、只读账号、备份账号分离。应用连接串指向正确库地址;只读报表走只读账号,避免报表把写入打满。
五、导出归档上云
订单、用户、商家导出可定期推到对象存储,生命周期规则做热冷分层。导出任务不要与交易高峰抢同一块数据盘 IO。文件名带日期与业务标识,方便分账本核对。商务结算规则由客户确定;系统侧不抽成客户平台订单。
六、落地检查清单
- 应用 / 数据 / 日志是否分盘或分卷
- 进程用户是否非 root,目录权限是否最小
- 上版目录或镜像是否可一键切回
- 备份恢复是否演练过,耗时是否可接受
- 导出是否可落到对象存储并抽查字段
磁盘与 IO 的实操建议
数据盘选择与数据库读写匹配的规格,日志盘可相对便宜但要限制单文件大小与保留天数。应用盘放多版本目录时,清理策略保留最近若干版,防止盘满导致写失败被误判成程序缺陷。
监控至少盯:磁盘使用率、inode、数据库盘延迟、导出任务耗时。盘满前告警,比盘满后抢救重要。安全组与主机登录收敛:应用主机不随意对公网开数据库端口。
发布用户与运行用户分离,减少误删。冒烟脚本应可在无界面情况下跑通关键路径。导出上云后记录校验信息,防止静默损坏。配置样例继续禁止明文生产密钥。
主机规格变更时,先扩数据盘再迁库文件,避免迁到一半空间不足。导出任务错峰运行,并限制并发。落盘清晰后,弹性伸缩才有意义。
从单机到主备,磁盘与日志
早期单机可以,但落盘切分先做好。先把应用与数据盘分开,再谈数据库高可用。主备切换演练包含应用连接串与导出任务切换。
主机规格变更时先扩数据盘再迁库。导出错峰并限制并发。日志与审计分目录轮转,防止一类日志挤爆另一类。发布用户与运行用户分离。冒烟脚本无界面可跑。落盘清晰后,弹性伸缩才有意义。
备份保留与恢复目标
写清恢复点与恢复时间的大致期望,哪怕早期做不到很高,也要有数字。没有数字,演练无法评估是否合格。导出归档校验与数据库备份分开看,各算一类成功。演练记录留存与交接包同目录。
健康检查与冒烟分层
存活探针只看进程在不在;就绪探针看数据库与关键依赖通不通;冒烟脚本再走登录、下单、导出。三层不要混成一个接口。探针过严会导致滚动发布抖动;过松会把半残实例接进流量。把三层阈值写进部署文档,交接方才能独立判断「绿了」到底绿在哪一层。
七、总结
同城O2O源码上云,先把落盘切干净,再谈弹性。盘乱、权大、无回滚,源码交得再多也不等于可运维。
把上述做法写进下一次变更复查:只认证据,不认感觉。复查记录与配置版本号、发布单号交叉引用,方便半年后追溯。若人手不足,先保住可回滚与可审计,再追求体验细节。
对外沟通时用同一套术语:进度码、配置版本、审计流水、导出抽查。术语统一后,研发、运营、财务才不会各说各话。本篇清单可以作为术语对照的附件一起存档。
应用多版本目录命名用日期或语义化版本,禁止用含糊文件夹名。清理脚本只删超出保留数量的旧版,并先检查是否仍被服务挂载。误删运行中目录是最常见的人为事故。
把本段做法与前文验收清单交叉引用,形成可执行闭环:改完必验,验完留证,证与版本号同存。对外说明时强调:系统提供核对与权限能力,商务规则由客户确定;海外相关篇目中支付税务支持按需定制对接。
交接后第一次故障演练建议选「导出失败」与「磁盘将满」两类,因为真实发生频率高。演练通过标准写进运维手册页眉,方便新人查找。
对象存储上的导出归档建议开启防误删策略,并定期做一次下载抽检,确认文件可读、字段仍齐。抽检结果记入月度运维记录,和备份演练并列。