目录
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 base
1.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 apply
2.2.2 修改主机名
- 查看hosts文件
sudo vim /etc/hostname
- 修改为如下内容:
linux01
2.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/
至此,虚拟机集群便全部搭建完成啦!
欢迎各位读者在评论区中批评指正,如果对你有用的话,记得点赞收藏哦~