插件窝 干货文章 如何搭建高可用的Linux集群环境

如何搭建高可用的Linux集群环境

Corosync sudo 节点 配置 553    来源:    2025-04-10

搭建高可用Linux集群环境指南

一、高可用集群概述

高可用(High Availability, HA)集群是通过软件和硬件技术确保关键业务持续可用的系统架构,主要目标是减少服务中断时间(通常达到99.99%以上的可用性)。

二、核心组件选择

1. 集群管理软件

  • Pacemaker + Corosync:最流行的开源HA解决方案
  • Keepalived:轻量级VRRP实现,适合简单场景
  • Kubernetes:容器编排平台内置高可用机制

2. 共享存储方案

  • DRBD (Distributed Replicated Block Device)
  • iSCSIFC SAN
  • CephGlusterFS 分布式存储

3. 负载均衡器

  • HAProxy
  • Nginx
  • LVS (Linux Virtual Server)

三、详细搭建步骤

1. 基础环境准备

# 在所有节点上执行
sudo apt-get update && sudo apt-get upgrade -y  # Ubuntu/Debian
sudo yum update -y  # CentOS/RHEL

# 安装必要工具
sudo apt-get install -y ssh vim net-tools  # Ubuntu/Debian
sudo yum install -y ssh vim net-tools  # CentOS/RHEL

2. 配置主机名和hosts文件

# 在每个节点上设置唯一主机名
sudo hostnamectl set-hostname node1  # 节点1
sudo hostnamectl set-hostname node2  # 节点2

# 编辑/etc/hosts文件,添加所有节点IP和主机名映射
192.168.1.101 node1
192.168.1.102 node2

3. 配置SSH免密登录

# 在节点1上生成密钥
ssh-keygen -t rsa

# 将公钥复制到所有节点(包括自己)
ssh-copy-id node1
ssh-copy-id node2

4. 安装和配置Pacemaker/Corosync

安装软件包

# Ubuntu/Debian
sudo apt-get install -y pacemaker corosync fence-agents pcs

# CentOS/RHEL
sudo yum install -y pacemaker corosync fence-agents pcs

配置Corosync

# 生成authkey
sudo corosync-keygen

# 将生成的/etc/corosync/authkey复制到所有节点
sudo scp /etc/corosync/authkey node2:/etc/corosync/

配置Corosync主配置文件(/etc/corosync/corosync.conf)

totem {
  version: 2
  cluster_name: mycluster
  transport: udpu
  interface {
    ringnumber: 0
    bindnetaddr: 192.168.1.0
    mcastport: 5405
    ttl: 1
  }
}

nodelist {
  node {
    ring0_addr: node1
    nodeid: 1
  }
  node {
    ring0_addr: node2
    nodeid: 2
  }
}

quorum {
  provider: corosync_votequorum
  two_node: 1
}

logging {
  to_logfile: yes
  logfile: /var/log/corosync/corosync.log
  to_syslog: yes
}

5. 启动集群服务

# 所有节点上执行
sudo systemctl enable --now corosync
sudo systemctl enable --now pacemaker

# 检查集群状态
sudo crm status

6. 配置集群属性

# 禁用STONITH(测试环境)
sudo crm configure property stonith-enabled=false

# 设置仲裁策略(两节点集群需要)
sudo crm configure property no-quorum-policy=ignore

7. 添加资源示例(以Nginx为例)

# 创建虚拟IP资源
sudo crm configure primitive VirtualIP ocf:heartbeat:IPaddr2 \
  params ip=192.168.1.100 cidr_netmask=24 \
  op monitor interval=30s

# 创建Nginx服务资源
sudo crm configure primitive NginxService ocf:heartbeat:nginx \
  params configfile="/etc/nginx/nginx.conf" \
  op monitor interval="5s"

# 将资源组合为组
sudo crm configure group WebGroup VirtualIP NginxService

# 设置资源约束(可选)
sudo crm configure colocation WebGroup_with_VirtualIP inf: WebGroup VirtualIP

四、高级配置

1. 配置DRBD实现存储高可用

# 在所有节点安装DRBD
sudo apt-get install -y drbd-utils  # Ubuntu/Debian
sudo yum install -y drbd kmod-drbd  # CentOS/RHEL

# 配置DRBD资源(/etc/drbd.d/webdata.res)
resource webdata {
  protocol C;
  on node1 {
    device /dev/drbd0;
    disk /dev/sdb1;
    address 192.168.1.101:7788;
    meta-disk internal;
  }
  on node2 {
    device /dev/drbd0;
    disk /dev/sdb1;
    address 192.168.1.102:7788;
    meta-disk internal;
  }
}

# 初始化并启动DRBD
sudo drbdadm create-md webdata
sudo systemctl enable --now drbd

2. 配置负载均衡器(HAProxy示例)

# 安装HAProxy
sudo apt-get install -y haproxy  # Ubuntu/Debian
sudo yum install -y haproxy  # CentOS/RHEL

# 配置/etc/haproxy/haproxy.cfg
frontend http_front
  bind *:80
  default_backend http_back

backend http_back
  balance roundrobin
  server node1 192.168.1.101:80 check
  server node2 192.168.1.102:80 check

五、监控与维护

1. 常用监控命令

# 查看集群状态
crm status

# 查看资源配置
crm configure show

# 查看Corosync状态
corosync-cfgtool -s

# 查看Pacemaker日志
journalctl -u pacemaker -f

2. 常见维护操作

# 手动迁移资源
crm resource move WebGroup node2

# 解除迁移约束
crm resource unmove WebGroup

# 模拟节点故障测试
crm node standby node1

六、最佳实践建议

  1. 网络配置

    • 使用专用网络进行集群通信
    • 配置多网卡绑定(bonding)提高网络可靠性
  2. 存储方案

    • 生产环境建议使用SAN或分布式存储
    • 定期测试存储故障转移
  3. 监控告警

    • 实现集群状态监控(如Prometheus + Grafana)
    • 配置邮件/SMS告警
  4. 定期测试

    • 定期模拟节点故障测试恢复能力
    • 进行灾难恢复演练
  5. 文档记录

    • 详细记录集群配置和变更
    • 制定标准操作流程(SOP)

通过以上步骤和配置,您可以建立一个高可用的Linux集群环境,确保关键业务服务的持续可用性。根据实际需求,您可能需要调整配置或添加更多资源类型。