Linux系统DeepSeek安装后的故障转移

云信安装大师
90
AI 质量分
2 5 月, 2025
2 分钟阅读
0 阅读

Linux系统DeepSeek安装后的故障转移指南

引言

在Linux系统中部署DeepSeek(深度求索)后,确保服务的高可用性是关键任务之一。本文将详细介绍如何为已安装的DeepSeek系统配置故障转移方案,当主节点出现问题时能够自动切换到备用节点,保证服务的持续可用。

准备工作

在开始配置前,请确保:

  1. 至少有两台Linux服务器(主节点和备用节点)
  2. 已完成DeepSeek在两台服务器上的安装和基本配置
  3. 两台服务器间可通过SSH免密登录
  4. 系统已安装keepalived和haproxy(或nginx)

环境检查命令

代码片段
# 检查keepalived是否安装
keepalived --version

# 检查haproxy是否安装
haproxy -v

# 检查SSH连通性(从主节点执行)
ssh backup_node "echo SSH连接成功"

详细配置步骤

第一步:配置Keepalived实现VIP漂移

Keepalived通过VRRP协议实现虚拟IP(VIP)在主备节点间的自动切换。

主节点配置 (/etc/keepalived/keepalived.conf):

代码片段
vrrp_instance VI_1 {
    state MASTER          # 主节点设置为MASTER
    interface eth0        # 使用的网卡名称,根据实际情况修改
    virtual_router_id 51  # VRID,主备必须相同
    priority 100          # 优先级,主节点应高于备节点

    advert_int 1          # 检测间隔秒数

    authentication {
        auth_type PASS
        auth_pass yourpassword123
    }

    virtual_ipaddress {
        192.168.1.100/24   # VIP地址,根据你的网络环境修改
    }
}

备用节点配置 (/etc/keepalived/keepalived.conf):

代码片段
vrrp_instance VI_1 {
    state BACKUP          # 备节点设置为BACKUP
    interface eth0        # 与主节点一致
    virtual_router_id 51  # VRID与主节点相同
    priority 90           # 优先级低于主节点

    advert_int 1          # 检测间隔秒数

    authentication {
        auth_type PASS
        auth_pass yourpassword123   # 密码与主节点相同
    }

    virtual_ipaddress {
        192.168.1.100/24   # VIP地址与主节点相同
    }
}

启动Keepalived服务:

代码片段
sudo systemctl enable keepalived
sudo systemctl start keepalived

# 检查状态
sudo systemctl status keepalived

# VIP绑定情况检查(应在MASTER节点上看到VIP)
ip addr show eth0 | grep "192.168.1.100"

第二步:配置HAProxy负载均衡

HAProxy将流量分发到后端DeepSeek服务实例。

通用配置 (/etc/haproxy/haproxy.cfg):

代码片段
global
    log /dev/log local0 info
    maxconn 4096

defaults
    log global
    mode http              # DeepSeek通常使用HTTP协议交互
    option httplog         # HTTP日志记录模式开启

frontend deepseek_frontend  
    bind *:8080            # HAProxy监听端口,可根据需要修改

    default_backend deepseek_backend

backend deepseek_backend  
    balance roundrobin     # Round Robin轮询算法

    option httpchk GET /health_check   # DeepSeek健康检查端点

    server master_node master_node_ip:8000 check inter 2000 rise 2 fall 3   # DeepSeek主实例地址和端口

backend deepseek_backup  
    server backup_node backup_node_ip:8000 backup check inter 2000 rise 2 fall3   # DeepSeek备实例地址和端口

listen stats               # HAProxy统计页面  

bind *:1936                # HAProxy监控页面端口  

stats enable  

stats uri /stats           # HAProxy监控页面URI  

stats auth admin:password123   # HAProxy监控页面认证信息  

启动HAProxy服务:

代码片段
sudo systemctl enable haproxy
sudo systemctl start haproxy

# HAProxy状态检查命令:
curl http://localhost:1936/stats -u admin:password123 | less

# DeepSeek服务健康检查:
curl -I http://localhost:8080/health_check 

第三步:配置自动故障检测脚本

为了更准确地判断DeepSeek服务是否真正不可用而不仅仅是网络问题,我们可以添加自定义检测脚本。

创建检测脚本 (/usr/local/bin/deepseek_check.sh):

代码片段
#!/bin/bash 

# DeepSeek服务健康检查 
if curl -s --max-time3 http://localhost:8000/health_check | grep -q "healthy"; then 
exit0 
else 
exit1 
fi 

# Keepalived会定期执行此脚本并根据返回值决定是否进行故障转移 

修改Keepalived配置以使用检测脚本:

vrrp_instance部分添加:

代码片段
track_script { 
deepseek_check 
} 

vrrp_script deepseek_check { 
script "/usr/local/bin/deepseek_check.sh" 
interval2                     //每2秒执行一次检测   
weight2                       //权重值影响优先级计算   
fall2                         //连续失败2次才认为失败   
rise2                         //连续成功2次才认为恢复   
} 

设置脚本权限并测试:

代码片段
chmod +x /usr/local/bin/deepseek_check.sh 

#手动测试脚本是否正常工作:
/usr/local/bin/deepseek_check.sh && echo "Service is healthy" || echo "Service is down" 

systemctl restart keepalived 

tail -f /var/log/syslog | grep Keepalived //查看Keepalived日志确认检测是否生效   

第四步:验证故障转移功能

现在我们可以模拟故障来测试整个系统的可靠性。

测试方法一:手动停止Master上的DeepSeek服务

在主服务器上执行:

代码片段
systemctl stop deepseek.service 

观察日志变化:
tail -f /var/log/syslog | grep Keepalived  

大约5秒后应该能看到VIP漂移到备份服务器。  

使用VIP访问服务确认仍然可用:
curl http://192.168.1.100:8080/api/test  

恢复Master上的DeepSeek服务后VIP应该会自动切回。  

systemctl start deepseek.service 

再次观察日志变化确认VIP返回情况。   

测试方法二:模拟网络中断

在主服务器上临时禁用网络接口:

代码片段
ifdown eth0  

等待约5秒后在备份服务器上验证VIP绑定情况:
ip addr show eth0 | grep "192.168.1.100"  

应该能看到备份服务器已经接管了VIP。  

恢复Master的网络连接:
ifup eth0  

观察VIP是否会重新漂移回Master。   

常见问题解决

问题一:VIP无法正常漂移

可能原因及解决方案:

  • VRRP组播被防火墙阻止

解决方法:

代码片段
iptables -A INPUT -i eth0 -d224.0.0.18-j ACCEPT   

或者直接关闭防火墙临时测试:
systemctl stop firewalld   

确认问题是否解决后再调整防火墙规则。   
  • 优先级设置不正确

确保Master的priority值高于Backup至少10以上。

  • 认证信息不匹配

仔细检查两边的auth_pass值必须完全相同。

问题二:脑裂现象(Split-Brain)

即两个节点都认为自己是Master并持有VIP。

解决方法:

  • 增加更严格的健康检查条件
  • 调整advert_int参数增加检测频率
  • 考虑使用第三方仲裁机制

问题三:HAProxy不转发请求到备份节点

可能原因:

  • 健康检查端点未正确响应

确保/health_check端点返回包含”healthy”字符串。

  • 权重设置不当

调整backend部分的weight参数。

总结与最佳实践

通过本文的步骤我们实现了:

1.VIP自动漂移保证客户端始终访问有效IP地址。
2.HAProxy负载均衡及自动剔除不可用后端。
3.Detailed健康检查和快速故障检测机制。

为了生产环境的稳定性建议:

-定期进行故障转移演练验证系统可靠性。
-监控关键指标如切换次数、切换时间等。
-考虑多机房部署避免单点物理故障风险。
-保持配置文件版本控制便于追踪变更历史。

完整的配置文件示例可在GitHub仓库获取:[示例仓库链接]

希望本指南能帮助您构建高可用的DeepSeek环境!如有任何疑问欢迎留言讨论。

原创 高质量