准备阶段:明确目标与网络规划
在开始之前,得想清楚为什么要搭集群。比如公司网站访问量上来了,单台服务器扛不住,就得用多台机器分担负载。CentOS作为稳定可靠的Linux发行版,常被用于搭建这类生产环境。这里以3台CentOS 7服务器为例,IP分别为192.168.1.10(主节点)、192.168.1.11和192.168.1.12(从节点),操作系统都已安装完毕且能互相ping通。
确保每台机器的SELinux关闭或设为宽容模式,防火墙开放必要的端口。可以编辑配置文件:
sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config然后重启或者临时执行 setenforce 0 即可生效。
配置SSH免密登录
集群管理中频繁的远程操作必须靠SSH密钥认证来简化流程。在主节点生成密钥对:
ssh-keygen -t rsa -b 2048一路回车后,将公钥复制到所有从节点:
ssh-copy-id root@192.168.1.11
ssh-copy-id root@192.168.1.12完成后,主节点就能无密码登录各个从节点了,这对后续自动化脚本执行非常关键。
时间同步不可少
服务器之间时间差太大容易导致任务调度错乱、日志难以排查。使用NTP服务统一时间。安装chrony:
yum install chrony -y
systemctl enable chronyd
systemctl start chronyd检查同步状态:
chronyc sources -v看到^*开头的行说明已经正常同步。三台机器都做一遍这个操作,保证时间基本一致。
安装并配置Pacemaker + Corosync
这是实现高可用集群的核心组件。Pacemaker负责资源管理,Corosync提供节点间通信。在所有节点上安装:
yum install pacemaker corosync pcs fence-agents-all -y启动并启用服务:
systemctl enable pcsd
systemctl start pcsd首次使用需要设置hacluster用户的密码:
passwd hacluster这个用户是集群管理专用账户,密码要统一。
创建集群并启动
在主节点执行认证和集群初始化:
pcs cluster auth 192.168.1.10 192.168.1.11 192.168.1.12 -u hacluster -p your_password_here
pcs cluster setup --name mycluster 192.168.1.10 192.168.1.11 192.168.1.12
pcs cluster start --all
pcs cluster enable --all这时候查看集群状态:
pcs status如果显示三个节点都在运行,并且有正常选举出的DC(Designated Controller),那就说明集群基础架构起来了。
添加一个虚拟IP资源测试
为了让外部访问能自动切换,我们加一个浮动IP。假设你想用192.168.1.100作为对外服务地址:
pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=192.168.1.100 cidr_netmask=24 op monitor interval=30s执行完之后,任意时刻只有一个节点持有这个IP。你可以通过 ping 192.168.1.100 来验证连通性,再手动停掉当前拥有该IP的节点,看是否自动漂移到另一台。
加入Web服务资源
现在让集群真正跑起业务。先在所有节点安装httpd:
yum install httpd -y
echo "<h1>Node: $(hostname)</h1>" > /var/www/html/index.html然后把httpd也纳入集群管理:
pcs resource create webserver systemd:httpd op monitor interval=1min为了让网页服务和虚拟IP绑定在一起运行,建立一个资源组:
pcs resource group add webservice_group virtual_ip webserver这样每次切换时,IP和服务会一起迁移。打开浏览器访问192.168.1.100,刷新几次可能会看到不同主机名返回的内容,这正是负载分散的表现。
监控与日常维护命令
平时查问题常用几个命令。看整体状态:
pcs status列出所有资源:
pcs resource强制关停某个节点进行维护:
pcs cluster standby 192.168.1.11恢复上线:
pcs cluster unstandby 192.168.1.11这些操作不需要停整个集群,适合轮流升级软件或打补丁。