高可用(High Availability, HA)集群是通过软件和硬件技术确保关键业务持续可用的系统架构,主要目标是减少服务中断时间(通常达到99.99%以上的可用性)。
# 在所有节点上执行
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
# 在每个节点上设置唯一主机名
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
# 在节点1上生成密钥
ssh-keygen -t rsa
# 将公钥复制到所有节点(包括自己)
ssh-copy-id node1
ssh-copy-id node2
# Ubuntu/Debian
sudo apt-get install -y pacemaker corosync fence-agents pcs
# CentOS/RHEL
sudo yum install -y pacemaker corosync fence-agents pcs
# 生成authkey
sudo corosync-keygen
# 将生成的/etc/corosync/authkey复制到所有节点
sudo scp /etc/corosync/authkey node2:/etc/corosync/
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
}
# 所有节点上执行
sudo systemctl enable --now corosync
sudo systemctl enable --now pacemaker
# 检查集群状态
sudo crm status
# 禁用STONITH(测试环境)
sudo crm configure property stonith-enabled=false
# 设置仲裁策略(两节点集群需要)
sudo crm configure property no-quorum-policy=ignore
# 创建虚拟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
# 在所有节点安装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
# 安装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
# 查看集群状态
crm status
# 查看资源配置
crm configure show
# 查看Corosync状态
corosync-cfgtool -s
# 查看Pacemaker日志
journalctl -u pacemaker -f
# 手动迁移资源
crm resource move WebGroup node2
# 解除迁移约束
crm resource unmove WebGroup
# 模拟节点故障测试
crm node standby node1
网络配置:
存储方案:
监控告警:
定期测试:
文档记录:
通过以上步骤和配置,您可以建立一个高可用的Linux集群环境,确保关键业务服务的持续可用性。根据实际需求,您可能需要调整配置或添加更多资源类型。