目录
- 0 前言
- 0.1 适用背景
- 0.2 使用环境
- 1 配置模板虚拟机
- 1.1 安装Ubuntu系统
- 1.2 修改网络设置
- 1.2.1 设置虚拟网络编辑器
- 1.2.2 将虚拟机IP改为静态IP
- 1.3 添加主机间IP与名称的映射
- 1.4 安装SSH
- 1.5 XShell和Xftp连接(可选)
- 2 克隆虚拟机
- 2.1 克隆
- 2.2 修改克隆机的IP和主机名
- 2.2.1 修改IP
- 2.2.2 修改主机名
- 2.3 在其余虚拟机上重复2.2的操作
- 3 可选辅助功能
- 3.1 SSH免密登录
- 3.2 集群分发脚本
0 前言
0.1 适用背景
- 分布式系统学习、实验
- 大规模数据处理系统学习、实验
0.2 使用环境
- Windows11
- Ubuntu 22.04.1 LTS
- XShell 7 Beta
- Xftp7
- VMware Workstation 16 Pro
1 配置模板虚拟机
1.1 安装Ubuntu系统
- 官网下载镜像iso文件到本地
- 在任务管理器中检查本机虚拟化是否开启
- VMware菜单栏 -> 新建虚拟机 -> 自定义 -> 下一步
- 选择合适的兼容性版本 -> 下一步
- 稍后安装操作系统 -> 下一步
- 根据实际情况进行选择 -> 下一步
- 输入虚拟机名称 -> 选择路径 -> 下一步
- 安排合适的处理器数量及其内核数量 -> 下一步
- 设定合适的内存大小 -> 下一步
- 网络模式选择NAT模式 -> 下一步
- 选择I/O控制器 -> 下一步
- 选择虚拟磁盘类型 -> 下一步
- 选择磁盘类型 -> 下一步
- 指定合适的磁盘容量(50G一般可保证未来无需扩展) -> 下一步
- 指定磁盘文件的存储位置 -> 下一步
- 完成创建 -> 选择操作系统盘并安装
- 启动虚拟机,根据提示安装Ubuntu系统,本文省略该过程















1.2 修改网络设置
在系统安装完成后,需要修改其网络参数,为后续搭建集群做准备
1.2.1 设置虚拟网络编辑器
- VMware菜单栏 -> 编辑 -> 虚拟网络编辑器 -> 点击“更改设置”
- 选择VMnet8 -> 修改子网IP第三个字段(可选,可使用已有值或修改为其他值,本人设定为144,后文将延续使用该值)
- 点击“NAT设置”,将“网关IP”的第三个字段的值改为上一步中“子网IP”所修改的144(注意:“网关IP”的第四个字段需设为2) -> 确定,保存
- 来到windows端的控制面板 -> 网络连接 -> Vmnet8属性 -> 双击IPv4协议 -> 修改值如下图所示(注:如果在第一步中不使用144,只需将下图中的144修改为你设定的值,其余的值不需要修改) -> 确定保存




1.2.2 将虚拟机IP改为静态IP
- 安装所需工具,并重启系统
sudo apt install -y ifupdown net-tools
init 6- 查看配置文件
cd /etc/netplan
ls
- 修改文件内容
sudo vim 01-network-manager-all.yaml将文件内容修改成如下内容:
# Let NetworkManager manage all devices on this system
network:
ethernets:
ens33: # ens33为设备的网卡名
dhcp4: false # 关闭DHCP动态IP地址
addresses: [192.168.144.100/24] # 本机静态IP地址,一定要在末尾加/24
optional: true
routes:
- to: default
via: 192.168.144.2 # 之前设定的网关IP
nameservers:
addresses: [8.8.8.8] # DNS地址
version: 2- 重启网卡
sudo netplan apply- 检查IP地址,可见已成功修改
ip a
1.3 添加主机间IP与名称的映射
- 查看hosts文件
vim /etc/hosts- 添加如下内容:
127.0.0.1 localhost
192.168.144.100 base # 本机IP
192.168.144.101 linux01 # 日后集群的1号主机的IP和主机名
192.168.144.102 linux02 # 日后集群的2号主机的IP和主机名
192.168.144.103 linux03 # 日后集群的3号主机的IP和主机名
# 后续可添加其它IP和主机名的映射关系- 可使用ping进行测试
ping base1.4 安装SSH
- 检查是否安装SSH,如结果中看到sshd,说明安装成功
sudo ps -e |grep ssh- 若未看到sshd,则输入以下命令进行安装
sudo apt-get install openssh-server- 安装完成后,再次使用第一步命令查询,可发现sshd
1.5 XShell和Xftp连接(可选)
- 打开XShell,新建连接,输入连接基本信息
- 配置用户登录信息
- 点击“连接”,即可连接成功
- XShell安装完成后,Xftp点击菜单栏下的对应按钮即可自动连接
- 至此,模板机已准备就绪,后续需要创建新虚拟机时可直接克隆此机器,直接略过前述步骤
2 克隆虚拟机
2.1 克隆
- 关闭Base模板机(若启动的话)
- 右键Base -> 管理 -> 克隆
- 克隆虚拟机中的当前状态
- 创建完整克隆
- 选择名字和路径,完成克隆
- 将上述操作再重复N-1次(N为集群的数量),创建出全部的集群(本文基于N=3\主机名分别为linux01,linux02,linux03进行操作)
2.2 修改克隆机的IP和主机名
2.2.1 修改IP
- 启动linux01主机
- 进入netplan,修改yaml内容
cd /etc/netplan
sudo vim 01-network-manager-all.yaml- 修改静态IP地址为101:
addresses: [192.168.144.101/24] # 本机静态IP地址,一定要在末尾加/24- 重启网卡
sudo netplan apply2.2.2 修改主机名
- 查看hosts文件
sudo vim /etc/hostname- 修改为如下内容:
linux012.3 在其余虚拟机上重复2.2的操作
3 可选辅助功能
3.1 SSH免密登录
- 在~目录下执行下方代码,生成公钥和私钥,输入命令后连按三次回车
ssh-keygen -t rsa- 出现.ssh目录,内含
id_rsa和id_rsa.pub两个文件,分别为私钥和公钥 - 将公钥
id_rsa.pub发送给自己及其他主机
ssh-copy-id linux01
ssh-copy-id linux02
ssh-copy-id linux03- 现在使用ssh命令时即可免密登录,在其他节点上也可执行此操作
3.2 集群分发脚本
- 需求:将一个节点的某一文件循环发送给其他节点
- 脚本代码:
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2. 遍历集群所有机器
for host in linux01 linux02 linux03
do
echo ==================== $host ====================
#3. 遍历所有目录,逐个发送
for file in $@
do
#4. 判断文件是否存在
if [ -e $file ]
then
#5. 获取父目录
pdir=$(cd -P $(dirname $file); pwd)
#6. 获取当前文件的名称
fname=$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pd
else
echo $file does not exists!
fi
done
done- 修改执行权限
chmod 777 xsync- 使用方法
xsync aaa.txt bbb/至此,虚拟机集群便全部搭建完成啦!
















