本文目录导读:

- 网络层/硬件负载均衡器(如 F5、Citrix ADC、HAProxy、Nginx)
- 软件集群/高可用性(HA)软件(如 Keepalived、Pacemaker、Windows 故障转移集群)
- 数据库/消息队列主从切换(如 MySQL MHA、Redis Sentinel、Kafka)
- DNS 切换(全局负载均衡 GSLB)
- SDN/云平台(如 AWS Route53、Azure Traffic Manager)
- 重要安全准则与前置检查(务必执行)
- 总结操作步骤:
故障切换工具的手动切换线路(通常称为手动触发切换或手动故障转移)操作高度依赖于具体的工具或系统,没有通用的“一键切换”按钮。
大多数主流工具(无论是网络层、硬件负载均衡器还是软件集群)都遵循相似的逻辑,以下是几种常见场景下的手动切换方法:
网络层/硬件负载均衡器(如 F5、Citrix ADC、HAProxy、Nginx)
这些工具通常通过控制台命令、Web 管理界面或 API 来实现。
-
常见操作逻辑:
- 强制下线/禁用:将当前活跃的“主”线路(或服务器池)标记为“维护模式”或“禁用”。
- 强制上线/启用:将备份的“备”线路(或服务器池)标记为“启用”或“激活”。
- 调整权重:将主线路的权重设为0,将备线路的权重设为最大值。
-
具体示例:
-
HAProxy:通过
socat或haproxy stats socket发送命令。# 禁用名为 'web_primary' 的后端服务器 echo "disable server backend_servers/web_primary" | socat stdio /var/run/haproxy.sock # 启用名为 'web_backup' 的后端服务器 echo "enable server backend_servers/web_backup" | socat stdio /var/run/haproxy.sock
-
F5 BIG-IP:在 Web 界面上找到对应节点 -> 点击 Disable(强制下线)-> 点击 Force Offline,或者使用 tmsh 命令行:
tmsh modify ltm node <node_name> state user-down tmsh modify ltm pool <pool_name> member <node_name>:<port> { state user-down }
-
软件集群/高可用性(HA)软件(如 Keepalived、Pacemaker、Windows 故障转移集群)
这些工具通过虚拟IP(VIP) 或资源组来提供切换能力。
-
常见操作逻辑:
- 停止主节点上的相关服务资源。
- 降低主节点的优先级(权重)或主动触发“preempt”机制。
- 直接抢占(手动将VIP迁移到备节点)。
-
具体示例:
-
Keepalived:通常通过修改配置文件权重并重启服务来实现,或者使用
ip命令手动操作VIP(不推荐,会破坏IPVS表)。# 手动将VIP从eth0上删除(模拟主节点故障) sudo ip addr del 192.168.1.100/24 dev eth0 # 然后在备节点上手动添加VIP(备节点需要配置了arp_ignore和arp_announce)
-
Windows 故障转移集群:打开故障转移群集管理器 -> 右键点击角色 -> 移动 -> 选择最佳可能节点。
# PowerShell 命令 Move-ClusterGroup "Cluster Role Name" -Node "BackupNodeName"
-
数据库/消息队列主从切换(如 MySQL MHA、Redis Sentinel、Kafka)
这些工具更关注数据一致性,手动切换需要遵循特定流程。
-
常见操作逻辑:
- 优雅切换:停止主库写入、等待从库同步完成、提升从库为主库、修改连接信息。
- 强制切换:直接提升某个从库为主库(可能丢失数据)。
-
具体示例:
- Redis Sentinel:使用
redis-cli连接Sentinel。# 故障转移(手动触发选举,将某个节点提升为主) redis-cli -p 26379 SENTINEL FAILOVER <master-name>
- Redis Sentinel:使用
DNS 切换(全局负载均衡 GSLB)
通过修改DNS解析记录来实现。
- 方法:登录DNS管理后台,将 A 记录或 CNAME 记录从故障线路的IP修改为健康线路的IP。
- 关键:需要手工调整域名解析的 TTL(生存时间)值(通常设为60秒或120秒),并在切换后等待TTL过期。
SDN/云平台(如 AWS Route53、Azure Traffic Manager)
- 方法:登录云控制台。
- 找到对应的健康检查端点或路由策略。
- 手动禁用健康检查,或手动将主线路的终结点状态设为“Down”。
- 或者,切换路由策略的权重(将主线路权重从100改为0)。
重要安全准则与前置检查(务必执行)
在手动切换前,请务必确认以下三点,否则可能导致服务中断或数据丢失:
-
了解风险:
- 数据同步:备线路上的数据是否与主线路完全一致?
- 状态保持:应用是“有状态”的还是“无状态”的?切换会丢失用户会话(Session)吗?
- 连接断开:手动切换会导致当前所有活跃的连接瞬间断开。
-
确认备线路状态:
- 备线路的硬件、网络、软件进程是否都正常运行?
- 备线路的资源负载(CPU、内存、磁盘)是否能承受切换到后的流量?
-
制定回退方案:
- 切换后如果出现问题,如何最快地切回主线路?(通常就是反向执行切换命令)
- 切回前是否需要再次确认数据一致性?
总结操作步骤:
- 第一步:确认工具类型(HAProxy / Keepalived / F5 / Sentinel / DNS)。
- 第二步:登录管理控制台或CLI。
- 第三步:确认备线健康(通过监控工具、
pingtelnet等)。 - 第四步:执行强制切换命令(Disable主、Enable备、或FAILOVER)。
- 第五步:验证切换结果(访问业务IP、检查监控图、访问应用)。
- 第六步:记录并通知相关团队。
核心原则:永远不要在不了解备线状态的情况下强行切换,切换后需立刻验证业务。
标签: SmartKit工具 手动切换