CentOS 虚拟机集群搭建实操指南
一、方案选型与网络规划
- 工具选型
- 快速批量:使用 Vagrant + VirtualBox,用一份 Vagrantfile 定义多台 CentOS 虚拟机,一键起停与复用。
- 精细控制:使用 VMware Workstation/Player/ESXi 手工安装首台后克隆,便于定制与快照管理。
- 网络模式
- Private network(Host-only):仅宿主机与虚拟机互通,多台虚机在同一网段可互访,适合本地集群。
- NAT:借助宿主机的 VMnet8 网段上网,适合需要访问外网但内网隔离的场景。
- Bridged:虚机加入宿主机所在物理网络,获取与宿主机同网段 IP,便于与同网设备互通。
- 基础规划示例(可按需调整)
- 节点数:3 台(如 node1、node2、node3)
- 系统:CentOS 7/8 Stream
- 内存:2–4 GB/台
- CPU:1–2 核/台
- 私有网段:192.168.56.0/24(示例)
二、快速起步 Vagrant + VirtualBox
- 安装与准备
- 安装 VirtualBox 与 Vagrant;准备 CentOS box(如官方 centos/7 或 centos/8)。
- 生成集群
- 创建目录并初始化:
- mkdir ~/centos-cluster && cd ~/centos-cluster
- vagrant init
-
编辑 Vagrantfile(示例为 3 台,使用私有网络):
Vagrant.configure("2") do |config|
(1..3).each do |i|
config.vm.define "node#{i}" do |node|
node.vm.box = "centos/7"
node.vm.hostname = "node#{i}"
node.vm.network "private_network", ip: "192.168.56.#{100+i}"
node.vm.provider "virtualbox" do |vb|
vb.name = "node#{i}"
vb.memory = 2048
vb.cpus = 1
end
end
end
end
- 启动集群:vagrant up(首次会自动下载 box,国内可提前下载 .box 离线导入以提速)。
- 常见问题
- 共享目录挂载失败(mount: unknown filesystem type ‘vboxsf’):安装增强插件 vagrant plugin install vagrant-vbguest。
- 离线 box 下载:在 app.vagrantup.com/centos/boxes/7/versions/ 页面获取对应 provider 的 .box 直链后下载,再用 vagrant box add 导入。
三、VMware 手工安装与克隆
- 安装首台虚机
- 新建虚机(如 CentOS 7.9),安装系统;配置 静态 IP(示例 192.168.19.151/24,网关 192.168.19.2),编辑 /etc/sysconfig/network-scripts/ifcfg-ens33:
- ONBOOT=yes,BOOTPROTO=static
- IPADDR=192.168.19.151,GATEWAY=192.168.19.2,DNS1=192.168.19.2
- 重启网络:systemctl restart network 或 service network restart
- 克隆与批量
- 关机后克隆出 node2/node3/…,为每台设置唯一 IP 与 主机名(如 hadoop151/152/153)。
- 集群基础配置(所有节点)
- 主机名与解析:编辑 /etc/hosts
- 192.168.19.151 hadoop151
- 192.168.19.152 hadoop152
- 192.168.19.153 hadoop153
- 安全与基础
- 关闭防火墙:systemctl stop firewalld && systemctl disable firewalld
- 关闭 SELinux:编辑 /etc/selinux/config,设 SELINUX=disabled(重启生效)
- 时间同步:选一台为 NTP 服务器,其余节点同步至该服务器
- SSH 免密:各节点 ssh-keygen,将公钥汇总到 authorized_keys,实现节点间免密互通
- 软件源
- 可选:搭建 本地 YUM 源(如用 Everything ISO),提升内网安装速度。
四、集群通用初始化清单
- 网络与主机名
- 固定 IP、统一 /etc/hosts、确保节点间 ping 通与 SSH 免密可用。
- 时间与 NTP
- 安装并启用 chrony 或 ntpd,所有节点向同一时间源同步,避免分布式系统时钟漂移。
- 软件与仓库
- 更新索引:yum clean all && yum makecache
- 安装常用工具:wget、vim、net-tools、telnet、bind-utils
- 如离线环境,部署 本地 YUM 源 或 HTTP/NFS 共享仓库。
- 安全基线
- 生产环境不建议长期关闭防火墙,改为按需开放端口(如 22/80/443/3306/6379/9092 等)。
- SELinux 建议保持 enforcing,通过策略放行;测试环境可临时 disabled。
五、可选高可用与负载均衡
- 高可用集群(Corosync + Pacemaker)
- 安装组件:yum install -y pacemaker pcs corosync fence-agents-all
- 启动 pcsd:systemctl start pcsd && systemctl enable pcsd
- 设置 hacluster 用户密码,节点认证:pcs host auth node1 node2 -u hacluster -p
- 创建并启动集群:pcs cluster setup my-cluster node1 node2 && pcs cluster start --all && pcs cluster enable --all
- 资源示例:创建 VIP(ocf:heartbeat:IPaddr2)与 systemd:httpd,设置 colocation 与 order 约束,验证故障转移。
- 轻量高可用(Keepalived)
- 通过 VRRP 实现 VIP 漂移,配置健康检查脚本,适用于无共享存储的双机热备。
- 负载均衡(HAProxy/Nginx)
- 部署 HAProxy 做四层/七层转发与健康检查,后端指向业务实例,实现流量分发与故障隔离。