1) 确认韩国目标机房或云(如KT、AWS ap-northeast-2、GCP)账号与VPC;2) 子网划分:web、app、db、monitor;3) 防火墙规则:开放80/443、SSH限源、Prometheus节点端口9090、Grafana3000;4) DNS策略:使用nginx反代并准备域名泛解析用于站群。
1) 建立git仓库:infrastructure、playbooks、site-templates、ci;2) infrastructure放Terraform模块(vpc、lb、asg);3) playbooks放Ansible角色(nginx、php、mysql、metrics-exporter);4) site-templates包含站点nginx配置和静态页面模版,使用变量化替换实现站群部署。
1) 编写模块:network.tf、compute.tf、lb.tf;2) 示例命令:terraform init -> terraform plan -var-file=kr.tfvars -> terraform apply;3) 输出:保存公网IP、负载均衡DNS、子网ID用于后续Ansible inventory生成。
1) 用动态inventory或terraform输出生成hosts.yml;2) playbook示例:ansible-playbook -i hosts.yml site.yml --extra-vars "site=kr-01";3) site.yml包含roles: nginx, php-fpm, deploy, metrics-exporter;4) 在roles/templates放好nginx站群模板,使用loop批量创建站点。
1) 在ci仓库写GitLab CI或Github Actions:build -> docker push -> deploy;2) 部署阶段调用ansible或ssh-run脚本:ssh-key已分发;3) 示例deploy脚本:rsync代码到/var/www/$SITE && systemctl reload nginx;4) 使用蓝绿或滚动更新配合LB权重切换。
1) 在每节点部署fluentd,采集nginx、app、systemd日志;2) 输出到Elasticsearch或远端logstash:配置索引以site为tag;3) 日志字段结构化:request_time、status、site_id,方便查询;4) 建立每天归档与7-30天冷存策略。
1) 部署Prometheus server并配置scrape_configs采集node_exporter、nginx_exporter、php-fpm exporter;2) Grafana建站群仪表盘(QPS、5xx、响应时间、CPU、磁盘);3) Alertmanager规则:高延迟、错误率>1%、磁盘>80%;4) 告警渠道:Slack/WechatWork/SMS,根据韩国运营需求配置时区与语言。
1) MySQL逻辑备份脚本示例:mysqldump --single-transaction --databases dbname | gzip > /backup/dbname_$(date +%F).sql.gz,并rsync到异地;2) 文件备份:tar czf /backup/www_$SITE_$(date +%F).tar.gz /var/www/$SITE;3) 恢复流程写成ansible role,支持单站回滚与全量恢复。
问:如何保证多个韩国站点配置一致且可回滚? 答:使用模板化配置(Ansible模板+变量文件),所有变更走Git并配合CI;变更通过merge-request审查、CI测试(lint、静态检查)、灰度发布;回滚通过git revert与CI触发相反的deploy流程。
问:如何减少Prometheus/Grafana的误报与噪音? 答:1) 对告警设置短暂抑制窗口与阈值平滑(如使用increase/avg_over_time);2) 对外部流量高峰设置免打扰策略;3) 使用分级告警,仅在持久性异常或影响用户体验时通知运维。
问:初期应优先准备哪些脚本? 答:优先准备:节点初始化脚本(用户/ssh/sysctl)、站点部署脚本(rsync/权限/NGINX reload)、备份脚本、健康检查脚本(http status、content check)以及自动化恢复脚本(重启服务、切换流量)。这些脚本通过ansible管理并纳入CI。