ubuntu虚拟机集群搭建方法
小樊
41
2025-12-08 12:56:52
Ubuntu 虚拟机集群搭建方法
一 方案总览与准备
- 目标:在本地或服务器上用虚拟化平台快速搭建可复用的 Ubuntu 虚拟机集群,用于学习、开发或测试分布式系统。
- 虚拟化平台选型与网络模式要点:
- 平台:VMware Workstation/VirtualBox/KVM/Hyper‑V(功能、性能与易用性取舍)。
- 网络:
- 桥接:与宿主机同网段,便于被外部访问。
- NAT:共享宿主机上网,默认外部不可直达,适合大多数练习环境。
- 内部网络:仅虚拟机之间互通,隔离性最好。
- 建议最小集群:1 个控制/主节点 + 2 个工作节点,便于多数分布式组件部署与验证。
二 模板机与网络配置
- 创建模板机
- 安装 Ubuntu Server 22.04/20.04 LTS(桌面版亦可),安装时勾选或后续安装 OpenSSH Server,便于远程管理。
- 建议资源:每节点 2–4 核 CPU、4–8 GB 内存、40–60 GB 磁盘(按组件负载调整)。
- 配置静态 IP(以 Ubuntu 22.04 netplan 为例)
- 查看网卡名:ip a;编辑 /etc/netplan/*.yaml(如 01-network-manager-all.yaml)。
- 示例(VMware NAT 网段示例,网关末位通常为 .2):
- 网络规划:子网 192.168.144.0/24,网关 192.168.144.2,模板机 192.168.144.100。
- 配置要点:
- 关闭 DHCP、设置 addresses、routes、nameservers。
- 应用:sudo netplan apply;验证:ip a、ping 网关、ping 外网。
- 主机名与 hosts 解析
- 设置主机名:sudo hostnamectl set-hostname base(示例)。
- 统一解析:编辑 /etc/hosts
- 192.168.144.100 base
- 192.168.144.101 node1
- 192.168.144.102 node2
- 192.168.144.103 node3
- 验证:ping base、ping node1 等互通。
三 克隆与节点初始化
- 克隆节点
- 模板机关机后执行“完全克隆”,分别得到 node1/node2/node3 等。
- 启动各节点后,仅修改其 IP 与 hostname(保持 hosts 一致)。
- 批量修改示例(以 node1 为例)
- 修改 netplan 的 addresses 为 192.168.144.101/24,应用:sudo netplan apply。
- 设置主机名:sudo hostnamectl set-hostname node1;重启或重新登录使其生效。
- 统一检查
- 各节点执行:ip a、hostname、ping 网关、ping 其他节点,确保二层/三层互通。
四 SSH 免密与集群分发
- 安装与启动 SSH
- 各节点:sudo apt-get update && sudo apt-get install -y openssh-server
- 检查:sudo systemctl status ssh(或 ps -e | grep ssh)
- 免密登录(控制节点 base 对全体节点)
- 生成密钥:ssh-keygen -t rsa -b 4096(回车默认即可)
- 分发公钥到所有节点(含自身):
- ssh-copy-id base
- ssh-copy-id node1
- ssh-copy-id node2
- ssh-copy-id node3
- 验证:ssh node1、ssh node2、ssh node3 无需密码。
- 简易分发脚本(在 base 上)
- 示例:for h in node{1…3}; do scp -r /opt/app $h:/opt/; done
- 如需统一执行:for h in node{1…3}; do ssh $h “sudo systemctl restart nginx”; done。
五 三种常见集群快速落地
- 大数据与通用计算:Hadoop 集群
- 前置:完成上述网络、SSH、hosts。
- 步骤:安装 Java,下载解压 Hadoop,配置 core-site.xml/hdfs-site.xml/yarn-site.xml,设置 SSH 免密,格式化 NameNode 并启动 HDFS/YARN。
- 可选:部署 Ganglia/Ambari 做监控与管理。
- 容器编排:Kubernetes 集群
- 前置:各节点安装 Docker/containerd,安装 kubeadm/kubelet/kubectl。
- 步骤:在控制节点执行 kubeadm init(指定 Pod 网段),按提示配置 kubectl;工作节点执行 kubeadm join 加入集群;安装 CNI 插件(如 Calico/Flannel)。
- 数据库高可用:MySQL 集群
- 方案选型:
- 主从复制:一主多从,读写分离。
- Galera Cluster:多主同步复制,强一致。
- NDB Cluster:管理节点/数据节点/SQL 节点分离,分布式存储。
六 共享存储与常见问题
- 共享存储方案
- NFS:轻量易用,适合共享配置/数据目录。
- iSCSI:块存储,适合数据库或需要裸盘性能的场景。
- CIFS/SMB:与 Windows 互通。
- 常见问题与排查
- 静态 IP 不生效:检查 netplan 缩进/YAML 语法、网卡名(如 ens33/enp0s3)、网关与 DNS;执行 sudo netplan try 更稳妥。
- 节点不通:核对 /etc/hosts、子网掩码、网关;同一虚拟网络模式;防火墙(sudo ufw disable 或放行端口)。
- SSH 仍要密码:确认 ~/.ssh/authorized_keys 包含公钥、目录权限 700、文件 600;首次连接 yes 记录 known_hosts。
- 克隆后网卡名变化:使用 netplan 的匹配规则或 udev 规则固定名称,避免配置漂移。