1.
总体架构与准备
部署原则:分层监控 + 自动化修复 + 灾备。
准备工作:在运维主机安装Ansible(apt/yum),在每台站群服务器设置SSH密钥并加入ansible inventory。示例命令:ssh-keygen -t rsa; ssh-copy-id user@host;安装Ansible:apt install ansible -y。
2.
监控部署(Prometheus + node_exporter + Grafana)
步骤:在监控服务器安装Prometheus并写入scrape配置,示例prometheus.yml包含targets: ['host1:9100','host2:9100']。
安装node_exporter:wget && systemctl enable --now node_exporter;在Grafana导入常用Linux/K8s面板,设置数据源为Prometheus。
3.
告警与自动化触发
配置Alertmanager:定义route和receiver,receiver可以为Webhook或Rundeck。示例:alertmanager.yml中receivers->webhook_configs->url: "http://rundck-host:4440/webhook"。
告警规则示例:CPU>90%持续5m触发,Prometheus rule写法并加载。
4.
自动化修复Playbook(Ansible)
写Playbook示例:restart_service.yml,用于重启nginx或docker container:- hosts: webservers tasks: - name: restart nginx systemd: name: nginx state: restarted。
将Alertmanager webhook接到Rundeck或自写Flask服务,触发Ansible Tower/awx或直接执行playbook。
5.
Kubernetes场景的自动化实践
在K8s中使用Liveness/Readiness探针并开启HPA:kubectl autoscale deployment web --cpu-percent=70 --min=2 --max=10。
集群自动扩缩容:部署cluster-autoscaler,配合节点组自动伸缩;滚动更新使用kubectl rollout status确保零宕机。
6.
负载均衡与健康检查
Nginx配置示例:upstream backend { server 10.0.0.1:80 max_fails=3 fail_timeout=30s; },并启用proxy_next_upstream。
使用LVS/HAProxy做四层备份,保证会话粘性通过cookie或源地址哈希。
7.
日志与备份自动化
日志采集:Filebeat送至ELK或OpenSearch,示例filebeat.yml配置paths:/var/log/*.log和output.elasticsearch。
备份脚本:rsync增量+远端快照,crontab例子:0 3 * * * /usr/local/bin/backup.sh,脚本中先停止写入服务->rsync->启动。
8.
内核与网络优化脚本
sysctl建议集:net.ipv4.tcp_tw_reuse=1; net.core.somaxconn=10240;将配置写入/etc/sysctl.d/99-custom.conf并sysctl -p。
ulimit调整:在/etc/security/limits.conf增加* soft nofile 65535,重登录生效。
9.
演练、故障注入与运行手册
定期做故障演练:使用chaos工具(如kubectl-chaos或gremlin)模拟节点失败并验证自动修复流程。
编写Runbook:按故障场景(CPU飙升、磁盘满、网络分区)列出检测步骤、临时缓解操作与长期修复Playbook路径。
10.
日常维护与升级流程
补丁发布:使用Ansible分批滚动升级(serial: 10%),示例playbook里先drain服务->升级->health check->再下一个批次。
变更控制:在CI中加入自动化回滚检查,发布前在Canary节点做流量验证。
11.
问:自动化运维在香港站群稳定性提升的最大直接收益是什么?
答:自动化最大收益是缩短MTTR(平均修复时间)并降低人为误操作,通过自动化监控+告警触发自动修复,能在几分钟内恢复服务,明显提升稳定性与可用率。
12.
问:没有Kubernetes,如何在传统站群中实现自动恢复?
答:可结合Prometheus+Alertmanager->Rundeck/Ansible webhook链路,Alert触发自动执行重启、清理磁盘或切换流量;同时配置健康检查和负载均衡的故障转移。
13.
问:部署这些自动化工具的优先级如何排序?
答:优先级建议:1) 基础监控(node_exporter+Prometheus)2) 告警与Webhook 3) 基本自动化Playbook(重启、清理脚本)4) 中控平台(Rundeck/awx)5) 日志与备份。按此顺序逐步落地,风险可控。
来源:自动化运维在提升香港站群服务器稳定性 中的核心作用分享