1.
架构概览与准备
准备工作:1) 列出业务组件(前端、应用、数据库、缓存、文件、监控);2) 在台湾托管环境预留至少两台以上相同规格的应用服务器、两台负载均衡节点、两台数据库节点(或三节点集群)、两台缓存节点;3) 确认公网/内网IP、路由、交换机VLAN与防火墙规则。
2.
网络与浮动IP(VIP)设计
步骤:1) 在交换机或路由上确认允许VIP漂移;2) 决定VIP子网与网关;3) 使用keepalived实现VRRP漂移,示例配置:vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 101 advert_int 1 authentication { auth_type PASS auth_pass secret } virtual_ipaddress { 192.0.2.100 } }
3.
部署高可用负载均衡(HAProxy + keepalived)
操作:1) 安装haproxy:apt-get install haproxy;2) 配置后端:frontend http-in bind *:80 default_backend app;backend app balance roundrobin server app1 10.0.0.11:80 check server app2 10.0.0.12:80 check;3) 配合keepalived把VIP指向当前active LB;4) 启用状态页与健康检查:stats enable、option httpchk /health。
4.
会话与状态共享策略
选择:1) 无状态优先(推荐)——把会话存放在浏览器Cookie或JWT;2) 需要会话共享时使用Redis且启用Redis Sentinel集群;3) Redis Sentinel快速配置:在每台redis.conf启用port、bind,并在sentinel.conf中配置监控:sentinel monitor mymaster 10.0.0.21 6379 2。
5.
数据库高可用:MySQL/MariaDB 推荐方案
方案与步骤:1) 小流量可用主从+自动化切换(repmgr/MHA);2) 推荐写入分担与同步:使用Galera三节点同步集群,安装MariaDB-Galera,配置wsrep_cluster_address="gcomm://10.0.0.31,10.0.0.32,10.0.0.33",初始化引导节点:systemctl start mysql@bootstrap.service;3) 设置监控与只读规则。
6.
文件存储与同步
实现方式:1) 推荐使用对象存储(S3兼容)或分布式文件系统(MinIO分布式、Ceph)避免单点;2) 若必须使用共享文件,可部署两台NFS并用DRBD做块级复制+Pacemaker管理vip;3) 简单同步可用lsyncd+rsync实时同步:lsyncd.conf.lua里定义同步路径与目标。
7.
备份与异地容灾
步骤:1) 数据库逻辑备份:mysqldump或xtrabackup定时到对象存储;2) 定期快照(VPS快照或存储快照);3) 将关键备份异地复制到非台湾地域或不同机房,保留至少3个恢复点和30天保留策略。
8.
健康检查与自动化故障切换
实现:1) 在HAProxy配置健康检查URL(/health),返回200表示OK;2) keepalived使用notify脚本在状态变更时触发路由或脚本,示例:notify_master "/usr/local/bin/on_master_up.sh";3) 数据库故障用自动化工具(repmgr或MHA)实现主库切换并同步VIP。
9.
监控、告警与日志聚合
实践:1) 部署Prometheus + node_exporter + blackbox_exporter用于主机与服务探测;2) 将日志送到ELK/EFK集中分析,设置Alertmanager邮箱/Slack告警;3) 设置SLO与告警阈值(如95%响应时间、错误率)并编写运维演练手册。
10.
安全与网络策略
要点:1) 使用私有网络通信(内网IP)并限制外部访问;2) 配置WAF、Fail2ban、iptables/ufw规则;3) 对敏感数据启用传输与静态加密(TLS、磁盘加密)。
11.
测试与演练步骤
操作清单:1) 定期进行故障注入(关闭主LB、停掉主DB)并验证VIP漂移、服务自动恢复;2) 演练从备份恢复数据库,记录耗时与问题;3) 根据演练结果优化脚本与SOP。
12.
维护与升级注意事项
建议:1) 变更先在测试环境演练并在低流量时段滚动升级;2) 升级数据库需注意版本兼容和GTID/复制机制;3) 监控升级后的指标(延迟、错误、CPU、内存)。
13.
问:在台湾托管环境如何保证VIP切换不影响客户请求?
答:最佳实践是用keepalived在两台LB间管理VIP,配合短的advert_int(如1秒)与健康检查,HAProxy启用连接drain,确保旧节点不再接收新连接但完成现有会话,再释放VIP;同时DNS的TTL设低以便二级容灾。
14.
问:数据库发生主节点宕机,如何最小化数据丢失?
答:采用同步复制(如Galera)可保证写入时同步到多节点,若使用主从请启用半同步或GTID并使用自动故障转移工具(repmgr/MHA)快速提升从库为主,同时在切换后回放未同步的binlog,减少数据丢失。
15.
问:日常运维如何确保高可用架构长期稳定?
答:建立监控告警并定期演练、保持配置托管在版本控制、定期备份并验证恢复、对关键组件(LB、DB、缓存、文件)做容量规划与自动扩容策略,发现瓶颈及时扩容或调整架构。
来源:台湾托管服务器如何配置高可用架构保证业务连续性与稳定性