温馨提示×

centos虚拟机如何实现集群部署

小樊
37
2025-12-27 04:33:28
栏目: 云计算

CentOS 虚拟机集群部署实操指南

一、方案总览与前置准备

  • 目标:在本地或服务器上用虚拟化快速拉起多台 CentOS 7/8 虚拟机,完成网络、主机名、SSH 免密、时间同步等基础配置,为 Hadoop、Kubernetes、数据库 等集群打好底座。
  • 虚拟化选型:
    • 图形化与克隆便捷:VMware Workstation / VirtualBox
    • 命令行批量编排:Vagrant + VirtualBox(适合快速复现实验环境)
    • 服务器/生产:KVM/QEMU + libvirt
  • 资源建议:至少 3 台虚拟机(1 主控 + 2 工作),每台 2–4 核 CPU、4–8GB 内存、≥40GB 磁盘(按实际负载调整)。
  • 基础软件:CentOS 镜像(建议 7/8)、虚拟化平台、SSH 客户端、必要工具(如 git、vim、wget)。

二、快速起步 Vagrant 编排示例

  • 安装 VirtualBoxVagrant,新建工作目录并初始化:
    • mkdir ~/centos-cluster && cd ~/centos-cluster
    • vagrant init
  • 编辑 Vagrantfile(示例创建 3 台 CentOS 7 节点,使用私有网络便于互通):
    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.synced_folder "~/VmProjects/Distributed/node#{i}/workspace", "/home/vagrant/workspace"
    
          node.vm.provider "virtualbox" do |v|
            v.name = "node#{i}"
            v.memory = 2048
            v.cpus = 1
          end
        end
      end
    end
    
  • 启动集群:vagrant up(首次会自动下载 centos/7 box,国内可预先下载 .box 提升速度)。
  • 常见问题处理:
    • 共享目录挂载失败(mount: unknown filesystem type ‘vboxsf’):安装增强插件 vagrant plugin install vagrant-vbguest。
    • 手动下载 box:从 app.vagrantup.com/centos/boxes/7/versions/<版本>/providers/virtualbox.box 获取链接后添加本地 box 再使用。

三、手动部署与克隆流程 VMware 或 KVM

  • 安装首台虚机(VMware/KVM 均可):
    • 新建虚机 → 挂载 CentOS ISO → 安装系统 → 配置 静态 IP、主机名、DNS → 安装常用工具(如 wget、vim)。
  • 克隆出多台节点(示例 node1/node2/node3):
    • 务必先关机再克隆 → 为克隆机生成 新 MAC 地址 → 启动后修正 IP 与主机名,避免冲突。
  • 网络与主机名要点(示例以 VMware NAT/Host-Only 为例):
    • 在虚拟化软件中设置 VMnet8 子网(如 192.168.67.0/24),网关如 192.168.67.2;各节点 ifcfg 配置静态 IP(如 192.168.67.110/120/130)。
    • 三台节点统一配置 /etc/hosts
      192.168.67.110 node1
      192.168.67.120 node2
      192.168.67.130 node3
      
  • 可选:在宿主机(如 Windows)也写入同名映射,便于本地访问测试。

四、集群基础配置通用步骤

  • 关闭防火墙与 SELinux(实验环境简化;生产请按需放行端口与最小权限策略):
    • systemctl stop firewalld && systemctl disable firewalld
    • sed -i ‘s/^SELINUX=.*/SELINUX=disabled/’ /etc/selinux/config && reboot
  • SSH 免密登录(以 node1 免密登录 node2/node3 为例):
    • 三台分别生成密钥:ssh-keygen -t rsa
    • node1 分发公钥:ssh-copy-id node2;ssh-copy-id node3
    • 验证:ssh node2、ssh node3 无需密码即成功
  • 时间同步(避免分布式任务异常):
    • 外网可用:crontab -e 添加 “*/1 * * * * /usr/sbin/ntpdate -u ntp4.aliyun.com”
    • 无外网:选一台为 NTP 服务器,其余节点向其同步
  • 基础工具与仓库:
    • yum install -y epel-release wget vim
  • 验证:三台节点相互 ping 通主机名、SSH 免密正常、时间一致。

五、部署示例与扩展

  • 大数据与分布式存储(如 Hadoop):
    • 在三台节点统一安装 JDK、配置 SSH 免密、设置 /etc/hosts
    • 在主节点配置 core-site.xml、hdfs-site.xml、yarn-site.xml,并将安装目录分发到从节点;
    • 格式化 NameNode 并启动 HDFS/YARN,用 jps/日志与 Web UI 验证集群状态。
  • 高可用与编排(如 Pacemaker/CorosyncKubernetes):
    • 传统 HA:安装 pacemaker/corosync,编辑 corosync.conf(设置 cluster_name、transport、ring0_addr、nodeid),启动服务后用 pcs 初始化与加入节点,按需定义 VIP/资源代理
    • 容器编排:部署 Kubernetes(kubeadm/kubelet/kubectl),完成初始化、加入节点、网络插件与常用工作负载测试(如 kubectl get nodes/pods)。
  • 自动化与持续交付(可选):
    • 使用 Jenkins/Git 实现镜像构建、配置分发与滚动升级,结合流水线触发集群部署与回滚。

0