公司新上线了一个视频点播平台,用户量刚起来,服务器就扛不住了。运维小李连夜扩容,手动一台台装系统、配环境、部署服务,忙到早上才发现漏了一台,导致部分用户无法加载封面图。这种情况,在很多团队都司空见惯。
为什么需要自动化部署?
以前,部署服务器靠人肉操作:U盘装系统、SSH 登录配置、复制粘贴脚本。一个10台的集群,可能得干两天。现在业务变化快,今天要加缓存,明天要上CDN,后天要做灰度发布,再靠手工,效率跟不上,还容易出错。
自动化部署就是把这一整套流程写成代码,按一下回车,几十台服务器自动装好系统、配好网络、跑起服务,整个过程就像流水线生产手机。
常见工具怎么用?
拿 Ansible 举例,它不需要在目标机器装客户端,通过 SSH 执行命令,特别适合媒体类公司已有的Linux服务器集群。
先写一个 playbook.yml 描述部署步骤:
---
- hosts: media_servers
become: yes
tasks:
- name: 安装 Nginx
apt:
name: nginx
state: latest
- name: 启动并启用 Nginx
service:
name: nginx
state: started
enabled: true
- name: 部署前端页面
copy:
src: /var/www/html/
dest: /usr/share/nginx/html/
owner: www-data
group: www-data
mode: '0644'
然后执行:ansible-playbook -i hosts playbook.yml,所有服务器就同步完成了。新增机器?只要加进 hosts 列表,下次运行自动纳入。
结合 CI/CD 实现一键发布
开发提交代码后,GitLab CI 自动触发测试,通过后调用 Ansible 脚本部署到测试环境。确认无误,点击“上线”,生产集群自动滚动更新。整个过程没人插手,出问题还能自动回滚。
某短视频公司就是这样做的。每次发新版App,后台服务跟着自动部署,50台流媒体服务器在3分钟内全部更新完毕,用户几乎无感知。
不是所有公司都得上K8s
很多人一提自动化就想上 Kubernetes,其实对于中小型媒体平台,用 Docker + Ansible 组合更轻便。比如用 Docker 打包 FFmpeg 转码服务,再用 Ansible 推到各节点运行,既保证环境一致,又不用维护复杂的容器编排系统。
有家公司做直播转码,高峰期要临时租20台云服务器。他们写了个脚本,调用阿里云API创建实例,再用 Ansible 自动部署Docker和转码服务,任务结束自动销毁。一套流程下来,成本省了四成。
自动化部署不是大厂专利,工具已经很成熟。关键是把重复操作变成代码,让服务器集群像乐高积木,随时拼装拆卸。运维人员也能从“救火队员”变成系统架构的设计师。