菜鸟科技网

Linux双机切换命令有哪些?如何操作?

在Linux系统中,双机切换(通常指高可用集群中的节点切换)是保障服务连续性的关键操作,常见于主备架构、负载均衡或故障转移场景,其核心是通过命令或工具监控节点状态,在主节点故障时自动或手动将服务切换至备用节点,以下是详细的Linux双机切换命令及相关操作流程,涵盖基础原理、常用工具、具体命令及注意事项。

Linux双机切换命令有哪些?如何操作?-图1
(图片来源网络,侵删)

双机切换的基础原理与架构

双机切换依赖集群管理工具,通过心跳检测(Heartbeat)判断节点健康状态,当主节点心跳中断时,备用节点接管资源(如IP、磁盘、服务),常见架构包括:

  • 主备模式(Active-Passive):主节点提供服务,备用节点待命,故障时切换。
  • 主主模式(Active-Active):两节点同时服务,通过负载均衡分担流量,故障时另一节点接管全部流量。

切换的核心操作包括:资源(IP、脚本、服务等)的启动、停止、迁移,以及虚拟IP(VIP)的漂移。

常用双机切换工具及命令

Keepalived + LVS(基于VRRP协议)

Keepalived通过VRRP(虚拟路由冗余协议)实现故障转移,常与LVS结合用于负载均衡,也可独立管理服务切换。

关键配置与命令

  • 安装
    sudo apt install keepalived  # Debian/Ubuntu
    sudo yum install keepalived  # CentOS/RHEL
  • 主节点配置(/etc/keepalived/keepalived.conf)
    ! Configuration File for keepalived
    global_defs {
        router_id LVS_MASTER  # 主节点标识
    }
    vrrp_instance VI_1 {
        state MASTER          # 主节点状态
        interface eth0        # 监听网卡
        virtual_router_id 51  # 虚拟路由ID,两节点需一致
        priority 100          # 优先级(主节点高于备节点)
        advert_int 1          # 心跳间隔(秒)
        authentication {
            auth_type PASS    # 认证类型
            auth_pass 1111    # 认证密码
        }
        virtual_ipaddress {
            192.168.1.100/24 dev eth0 label eth0:0  # 虚拟IP(VIP)
        }
        virtual_server 192.168.1.100 80 {  # 虚拟服务器(可选)
            delay_loop 6
            lb_algo rr
            lb_kind NAT
            real_server 192.168.1.101 80 {
                weight 1
                TCP_CHECK {
                    connect_port 80
                    connect_timeout 3
                    nb_get_retry 3
                }
            }
        }
    }
  • 备节点配置:仅需修改state BACKUPpriority 90(低于主节点)。
  • 启动与检查
    sudo systemctl start keepalived
    sudo systemctl enable keepalived
    ip addr show eth0:0  # 查看VIP是否绑定
  • 手动切换:强制停止主节点Keepalived,备节点会自动接管VIP:
    sudo systemctl stop keepalived  # 主节点执行

Corosync + Pacemaker(集群资源管理)

Corosync负责节点间通信和心跳检测,Pacemaker管理资源(IP、服务等)的启动和切换,适用于复杂集群场景。

Linux双机切换命令有哪些?如何操作?-图2
(图片来源网络,侵删)

关键操作步骤

  • 安装
    sudo apt install corosync pacemaker pcs  # Debian/Ubuntu
    sudo yum install corosync pacemaker pcs  # CentOS/RHEL
  • 配置集群
    sudo pcs cluster auth node1 node2 -u hacluster  # 认证节点(需设置密码)
    sudo pcs cluster setup --name my_cluster node1 node2  # 创建集群
    sudo pcs cluster start --all  # 启动集群
  • 配置资源:以VIP为例,添加并启动资源:
    pcs resource create VIP ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s
    pcs resource create WebSite ocf:heartbeat:apache op monitor interval=30s  # 以Apache为例
    pcs constraint colocation add VIP with WebSite  # 资源约束(VIP与Apache绑定)
    pcs constraint order start WebSite then start VIP  # 启动顺序
  • 查看资源状态
    pcs status  # 查看集群及资源状态
    pcs resource show  # 查看资源详情
  • 手动故障切换:模拟主节点故障(停止集群服务或关机),备用节点会自动接管资源:
    sudo pcs cluster stop node1  # 停止node1的集群服务

Heartbeat(传统工具)

Heartbeat是早期的高可用工具,通过配置ha.cfharesources管理节点和资源,现逐渐被Keepalived/Pacemaker替代,但部分场景仍在使用。

关键配置示例

  • 主节点配置(/etc/ha/haresources)
    node1 192.168.1.100 apache  # 节点名 VIP 服务名
  • 启动与检查
    sudo /etc/init.d/heartbeat start  # 启动服务
    crm_status  # 查看集群状态(需安装crmsh)

切换命令对比与选择

工具组合 适用场景 优点 缺点
Keepalived 简单主备、负载均衡 配置简单、资源占用低 复杂资源管理能力较弱
Corosync+Pacemaker 复杂集群、多资源管理 功能强大、支持策略约束 配置复杂、学习成本高
Heartbeat 传统场景、兼容旧系统 稳定性较好 社区活跃度低、文档较少

切换操作注意事项

  1. 心跳网络隔离:心跳检测建议使用独立网卡或VLAN,避免因业务网络故障导致误判。
  2. 资源依赖顺序:确保服务启动顺序正确(如先挂载磁盘,再启动应用)。
  3. 日志监控:通过journalctl -u keepalivedpcs status实时监控切换过程,定位故障。
  4. 测试验证:切换前需在测试环境模拟故障(如停止服务、断网),验证切换逻辑。

相关问答FAQs

Q1:双机切换时VIP漂移失败,可能的原因及解决方法?
A1:可能原因包括:

  • 心跳网络中断:检查节点间网络连通性(pingtelnet心跳端口)。
  • 优先级配置错误:确保主节点priority高于备节点,且virtual_router_id一致。
  • 防火墙拦截:关闭或配置防火墙允许VRRP协议(如iptables允许vrrp协议)。
    解决步骤:检查/var/log/keepalived.log日志,确认心跳状态;手动执行ip addr add 192.168.1.100/24 dev eth0临时绑定VIP,并排查网络或配置问题。

Q2:如何确保切换过程中服务不中断?
A2:可通过以下方法保障服务连续性:

  • 资源约束:使用Pacemaker的colocation约束,确保VIP、磁盘、服务在同一节点启动。
  • 健康检查:配置monitor操作,实时检测服务状态(如Apache的80端口),异常时自动重启。
  • 会话保持:在负载均衡场景下,启用会话保持(如nginx的ip_hash),避免用户会话丢失。
  • 预脚本与后脚本:通过Pacemaker的prepost脚本,在切换前执行数据同步(如rsync),切换后通知监控系统。
Linux双机切换命令有哪些?如何操作?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇