
1) 【一句话结论】通过构建数据库主从同步复制集群、应用服务器负载均衡与故障转移、结合Linux内核参数优化及实时监控,实现多节点冗余与自动故障切换,确保RPO(数据丢失≤1分钟)和RTO(服务中断≤30秒),满足7x24高可用需求。
2) 【原理/概念讲解】高可用集群的核心是“冗余+自动故障转移”,通过多节点并行运行,当主节点故障时,备用节点立即接管,保证服务连续性。关键指标RPO(Recovery Point Objective,即允许的最大数据丢失量,如1分钟内数据丢失≤1分钟)和RTO(Recovery Time Objective,即服务中断时间,如≤30秒)。类比:就像给系统配备“备用发电机”,故障时无缝切换,避免业务中断。
3) 【对比与适用场景】
| 方案类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 主从同步复制 | 一主多从,主写从读,从节点同步复制 | 强一致性(数据丢失风险低),切换延迟较高(需同步数据);异步复制延迟低,切换快 | 写多读少、强一致性要求的金融交易系统(如交易记录) | 同步复制需权衡性能与延迟,异步复制适合读多场景 |
| 集群方案(如MySQL NDB) | 分布式多节点共享数据,无单点故障 | 高扩展性,高并发处理能力 | 写多读多、高并发场景(如实时交易系统) | 配置复杂,维护成本高 |
| 方式 | 工作原理 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| Nginx(七层) | HTTP请求负载均衡,基于URL/Cookie会话保持 | 支持会话管理,配置灵活 | 复杂请求可能瓶颈 | 需会话保持的Web应用(如用户登录、购物车) |
| LVS(四层) | IP地址负载均衡,无状态 | 速度快,无状态 | 不支持会话保持 | 大流量、简单请求(如静态资源、API无状态调用) |
| 故障节点剔除机制 | 健康检查(HTTP状态码、响应时间) | 自动剔除故障节点,恢复后重新加入 | 需定期检查,避免误判 | 确保负载均衡器分发请求到健康节点 |
4) 【示例】
[mysqld]
server-id=1
log-bin=binlog.000001
binlog-do-db=finance
replicate-do-db=finance
rpl_semi_sync_master_enabled=1 # 启用半同步复制
rpl_semi_sync_master_timeout=10000 # 超时时间
从节点配置:
[mysqld]
server-id=2
log-bin=binlog.000001
relay-log=relay-bin.000001
read-only=1
rpl_semi_sync_slave_enabled=1 # 启用半同步复制
故障切换:从节点执行mysqlbinlog同步二进制日志,确认数据同步后,修改server-id为1并重启服务,提升为主节点。upstream backend {
server 192.168.1.101:8080;
server 192.168.1.102:8080;
server 192.168.1.103:8080 weight=1;
check server 192.168.1.101:8080 with http get /health check;
check server 192.168.1.102:8080 with http get /health check;
check server 192.168.1.103:8080 with http get /health check;
}
server {
listen 80;
server_name app.chinacfa.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
故障节点剔除:健康检查间隔5秒,若节点HTTP 5xx错误率超过10%,则从upstream中剔除,恢复后重新加入。# 提高最大连接数
sysctl -w net.core.somaxconn=65535
# 减少交换空间使用
sysctl -w vm.swappiness=10
# 提升关键服务优先级
nice -n -20 /usr/sbin/nginx
验证:使用JMeter模拟高并发(如1000并发请求),监控资源利用率(Prometheus+Grafana),结果:net.core.somaxconn达到预期,vm.swappiness降低交换空间使用率(从80%降至20%),nginx进程优先级高于其他进程(nice值-20)。5) 【面试口播版答案】(约90秒)
“面试官您好,针对7x24高可用,我主要从数据库、应用服务器和操作系统三方面设计。首先,数据库采用主从同步复制方案,主节点处理写操作,从节点通过半同步复制保证强一致性(RPO≤1分钟),故障时从节点同步数据后提升为主,切换时间小于30秒(RTO)。其次,应用服务器用Nginx做七层负载均衡,支持会话保持,并配置健康检查机制,自动剔除故障节点(如HTTP 5xx错误率超10%则剔除)。然后,操作系统调整内核参数,比如设置net.core.somaxconn为65535提升并发连接数,vm.swappiness设为10减少交换空间使用,通过JMeter压力测试验证,资源利用率优化明显。通过多节点冗余、自动故障转移和资源优化,实现7x24高可用。”
6) 【追问清单】
7) 【常见坑/雷区】