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

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

linux双机切换命令
(图片来源网络,侵删)

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

双机切换依赖集群管理工具,通过心跳检测(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双机切换命令
(图片来源网络,侵删)

关键操作步骤

  • 安装
    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双机切换命令
(图片来源网络,侵删)

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/406874.html<

(0)
运维的头像运维
上一篇2025-10-18 05:18
下一篇 2025-10-18 05:22

相关推荐

  • Spark执行命令有哪些?

    Spark执行命令是大数据处理领域中核心的操作环节,它通过统一的编程接口与集群资源管理器(如YARN、Mesos或Standalone)协作,实现对分布式数据的高效处理,无论是交互式查询、批量数据处理还是机器学习任务,Spark命令的执行都遵循一套严谨的流程,涉及任务提交、资源分配、任务调度与执行等多个环节,以……

    2025-11-17
    0
  • ThinkPHP分布式如何实现?

    ThinkPHP实现分布式系统主要涉及数据库、缓存、会话和文件存储的分布式部署,通过合理的架构设计和配置优化,提升系统的并发处理能力和可用性,以下是具体实现方法和步骤:数据库分布式实现ThinkPHP支持主从数据库和分库分表两种分布式方案,主从数据库通过配置database.php文件实现,主库负责写操作,从库……

    2025-11-13
    0
  • WebLogic招聘需求有哪些核心技能要求?

    在当前企业级应用开发与部署领域,WebLogic作为Oracle核心的Java应用服务器,始终占据着重要地位,其稳定性和高性能特性使其成为金融、电信、大型制造等关键行业业务系统的首选平台,随着企业数字化转型加速,对具备WebLogic运维、优化及开发能力的人才需求持续攀升,相关岗位的招聘要求也呈现出技术深度与实……

    2025-11-09
    0
  • Hadoop停止命令有哪些?如何正确执行?

    在Hadoop分布式文件系统中,正确停止集群或服务是日常运维的重要操作,不同组件的停止命令和场景有所不同,Hadoop集群通常由HDFS和YARN两大核心组件构成,此外可能包含MapReduce、HBase等关联服务,停止时需遵循特定顺序以确保数据一致性和资源释放,以下从集群整体停止、HDFS停止、YARN停止……

    2025-10-29
    0
  • Redis server 常用命令有哪些?

    Redis Server 命令是管理和操作 Redis 服务器的核心工具,通过这些命令可以启动、停止、配置服务器,以及查看服务器状态等,Redis 是一个高性能的键值数据库,常用于缓存、消息队列等场景,掌握其服务器命令对于开发和运维至关重要,以下是关于 Redis Server 命令的详细介绍,启动 Redis……

    2025-10-28
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注