1.
概述与目标
目标:把多台台湾群站(多机群、不同机房)由人工维护,转为可重复、可审计、可回滚的自动化运维体系。
小分段:明确范围(Web、数据库、缓存、监控)、分阶段目标(试点→扩展→稳定化)并定义成功指标(部署时间、恢复时间、变更失败率)。
2.
架构准备与环境清单
具体清单:列出所有服务器IP/角色、操作系统版本、网络连通性、SSH账号。
小分段:1) 在管理端准备一台控制机(Linux),2) 确认控制机可SSH直连所有被管理机器,3) 准备代码仓库(Git)和证书管理(Vault或Ansible Vault)。
3.
工具选型与理由
推荐:Ansible(agentless、易上手)、Docker(容器化)、Prometheus+Alertmanager(监控告警)、GitLab CI或Jenkins(流水线)。
小分段:以Ansible为主轴,Docker用于服务打包,Prometheus用于指标采集,Alertmanager做告警联动,日志用ELK或Loki。
4.
第一步:建立信任与Inventory
操作步骤:1) 生成SSH密钥:ssh-keygen -t rsa -b 4096 -C "ops@control";2) 将公钥分发到所有服务器:ssh-copy-id user@host或使用Ansible的authorized_key模块。
小分段:创建inventory文件(hosts.ini)按机房和角色分组,例如:[web_taipei] 10.0.1.1 ansible_user=ops;确保控制机可用ansible -m ping all测试连通性。
5.
第二步:编写Playbook与Role规范
操作步骤:1) 建立role目录结构 roles/nginx/{tasks,handlers,templates,vars};2) tasks/main.yml写可重复任务示例;3) handlers用于服务重载。
小分段:示例task片段:- name: install nginx apt: name=nginx state=present register: pkg;- name: template nginx.conf template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf notify: restart nginx。
6.
第三步:测试、Dry Run与审核流程
操作步骤:1) 使用ansible-playbook site.yml --check --diff进行预演,2) 在测试环境执行并记录变更,3) 合并通过代码评审(Git MR/PR)。
小分段:失败回滚:在tasks中使用notify+handler保证变更最后可回滚;通过保留上一个配置模板并支持restore playbook。
7.
第四步:批量部署与并发控制
操作步骤:1) 使用--forks参数控制并发(例如 --forks 30),2) 分批策略:按机房或按组分批滚动升级(serial: 10%或serial: 3)。
小分段:在playbook中用serial与max_fail_percentage降低风险;先升级非关键集群,再推广至主流量节点。
8.
CI/CD与流水线集成实操
操作步骤(以GitLab CI为例):.gitlab-ci.yml定义stage(lint,test,deploy);deploy job通过Ansible Runner调用inventory并从受控仓库拉取模板。
小分段:示例deploy步骤:script: - ansible-playbook -i inventories/prod site.yml --limit web_taipei --extra-vars "@secrets.json";触发规则:MR合并触发生产部署需二次审批。
9.
监控、告警与自动化应答
操作步骤:1) 部署Node Exporter、Application Exporter并在Prometheus抓取,2) 写告警规则并配置Alertmanager指向Slack/LINE或PagerDuty。
小分段:样例告警规则:- alert: NginxDown expr: up{job="nginx"} == 0 for: 2m labels: severity: critical;自动化响应:结合Webhook触发Ansible playbook执行重启脚本。
10.
备份与回滚策略
操作步骤:1) 数据库采用定期逻辑/物理备份并上传到异地,2) 关键配置上Git做版本管理,deploy前自动打Tag并生成Release。
小分段:回滚执行:使用ansible playbook restore_config.yml或git checkout
后重新部署,先在Canary节点验证再全量回滚。
11.
安全与权限管理
操作步骤:1) 使用Ansible Vault或HashiCorp Vault加密敏感变量,2) 控制机与运维人员区分权限并做审计(sudo logs和Git审计)。
小分段:限制SSH仅允许密钥认证、配置Jump Host、并通过Kerberos或LDAP集中认证。
12.
运维SOP与培训落地
步骤:编写SOP文档(变更流程、回滚步骤、故障处理),并进行桌面演练与每季度演练。
小分段:SOP包括:准入、变更申请、回滚触发条件、负责人与联系方式、检查表。
13.
常见问题1:如何在台湾多机房做到零宕机部署?
答:采用蓝绿或滚动升级+负载均衡流量切换。先在一个可用区(或少量后端)完成灰度,监控无异常再逐步切换流量。使用健康检查和流量权重控制实现零宕机。
14.
常见问题2:Ansible在大量节点下如何保证幂等与速度?
答:编写幂等任务(避免shell未检测状态直接执行),使用--forks调节并发,拆分为小play并行执行,使用事实缓存(fact caching)减少重复收集开销。
15.
常见问题3:遇到紧急故障需要快速回滚,典型操作步骤是什么?
答:步骤:1) 立即触发「切换到备用集群/流量回退」,2) 执行预置的restore playbook恢复配置或数据库备份,3) 验证核心业务后逐步恢复流量并在变更记录中写明原因与教训。
来源:服务器运维自动化在台湾群站服务器管理中的落地经验