1.
1.1 目标:在香港机房租用多台服务器,搭建多站点(站群)托管平台,支持快速部署、自动扩容与集中监控。
1.2 总体架构:公网带宽层(BGP/宽带)→ 负载层(L4/L7负载均衡)→ 反向代理(Nginx/Traefik)→ 应用容器层(Docker/K8s)→ 数据层(MySQL主从或RDS)→ 对象存储(MinIO/NFS)。
2.
2.1 服务商:选择支持按需带宽与独立IP、API控制面板的供应商(如阿里云香港、腾讯云香港或本地IDC)。
2.2 机器规格:建议起步2-4台独立服务器作控制节点与工作节点,配置至少4核8G,按流量扩展。购买公网带宽与可用浮动IP。
3.
3.1 BGP或备份链路:购买带公网BGP的线路,或两条不同运营商链路做冗余。
3.2 DNS自动化:使用支持API的DNS(例如Cloudflare/Alibaba DNS),通过脚本更新A、CNAME、TXT记录(用于ACME证书)。
4.
4.1 小规模:使用Docker Compose管理多站容器;命令示例:docker-compose -f docker-compose.yml up -d。
4.2 大规模:使用Kubernetes,部署Ingress(Traefik/NGINX Ingress)、ConfigMap、Secret、Deployment 与 HPA。
5.
5.1 Terraform:编写provider与实例资源,示例流程:terraform init → terraform plan → terraform apply。用于创建云主机、VPC、弹性IP。
5.2 Ansible:用作配置管理,编写playbook安装Docker、配置防火墙、部署基础镜像。示例:ansible-playbook -i hosts site.yml。
6.
6.1 持续集成:使用GitLab CI/GitHub Actions。Pipeline示例:build 镜像 → push 私有 registry → kubectl/ansible 部署。
6.2 私有仓库:部署 Harbor 或使用云厂商镜像仓库,配置镜像拉取凭据到集群 Secret。
7.
7.1 反向代理:统一用Traefik或NGINX做域名路由与SSL终端。
7.2 ACME自动化:使用certbot或Traefik内建ACME,确保DNS或HTTP验证脚本自动更新证书并reload服务(systemctl reload nginx 或 k8s secret 更新)。
8.
8.1 监控:部署Prometheus + Grafana,采集主机、容器与数据库指标;配置报警(邮件/钉钉/Slack)。
8.2 备份:数据库用mysqldump或binlog增量,示例:mysqldump -uroot -p db > /backup/db_$(date +%F).sql,并通过rsync/对象存储异地备份。
9.
9.1 SSH与账号:禁止密码登录,仅允许密钥,禁用root直接登录,配置fail2ban。
9.2 防火墙:使用iptables或ufw只开放必要端口(22/80/443/标记的内部端口),并对管理IP做白名单。
10.
10.1 创建云主机(Terraform):terraform init && terraform apply -var="count=3"。
10.2 配置主机(Ansible):ansible-playbook -i inventory site.yml --tags "docker,users,firewall"。
10.3 部署应用:git push → CI构建镜像并push → 在目标服务器运行 docker-compose up -d 或 kubectl apply -f deployment.yaml。
11.
11.1 自动扩容:监控触发后调用Terraform/云API增加实例并用Ansible加入集群。
11.2 域名批量解析:通过DNS厂商API写脚本批量创建子域并调用ACME进行证书签发。
12.
12.1 回答:优先选择带BGP或多线接入的机房,配合CDN与健康检查,将关键服务放在多可用区或多机房,DNS采用短TTL+监控自动切换。
13.
13.1 回答:采用冗余架构(多实例、多链路)、数据库主从或云RDS、定期异地备份并演练恢复(包括恢复演练脚本与SOP)。
14.
14.1 回答:把所有资源定义成代码(Terraform、K8s manifests、Ansible playbooks),把构建产物存入私有仓库,版本化配置并在新主机上通过自动化脚本一键恢复。