• 【环境配置】使用VMware配置Ubuntu虚拟机集群



    0 前言

    0.1 适用背景

    • 分布式系统学习、实验
    • 大规模数据处理系统学习、实验

    0.2 使用环境


    1 配置模板虚拟机

    1.1 安装Ubuntu系统

    • 官网下载镜像iso文件到本地

    • 在任务管理器中检查本机虚拟化是否开启
      虚拟化

    • VMware菜单栏 -> 新建虚拟机 -> 自定义 -> 下一步
      新建

    • 选择合适的兼容性版本 -> 下一步
      兼容性

    • 稍后安装操作系统 -> 下一步
      来源

    • 根据实际情况进行选择 -> 下一步
      操作系统

    • 输入虚拟机名称 -> 选择路径 -> 下一步
      命名

    • 安排合适的处理器数量及其内核数量 -> 下一步
      处理器

    • 设定合适的内存大小 -> 下一步
      内存

    • 网络模式选择NAT模式 -> 下一步
      网络模式

    • 选择I/O控制器 -> 下一步
      IO

    • 选择虚拟磁盘类型 -> 下一步
      虚拟磁盘

    • 选择磁盘类型 -> 下一步
      在这里插入图片描述

    • 指定合适的磁盘容量(50G一般可保证未来无需扩展) -> 下一步
      容量

    • 指定磁盘文件的存储位置 -> 下一步
      位置

    • 完成创建 -> 选择操作系统盘并安装
      选择光驱

    • 启动虚拟机,根据提示安装Ubuntu系统,本文省略该过程

    1.2 修改网络设置

    在系统安装完成后,需要修改其网络参数,为后续搭建集群做准备

    1.2.1 设置虚拟网络编辑器

    • VMware菜单栏 -> 编辑 -> 虚拟网络编辑器 -> 点击“更改设置”
      虚拟网络编辑器

    • 选择VMnet8 -> 修改子网IP第三个字段(可选,可使用已有值或修改为其他值,本人设定为144,后文将延续使用该值)
      修改子网IP

    • 点击“NAT设置”,将“网关IP”的第三个字段的值改为上一步中“子网IP”所修改的144(注意:“网关IP”的第四个字段需设为2) -> 确定,保存
      修改NAT

    • 来到windows端的控制面板 -> 网络连接 -> Vmnet8属性 -> 双击IPv4协议 -> 修改值如下图所示(注:如果在第一步中不使用144,只需将下图中的144修改为你设定的值,其余的值不需要修改) -> 确定保存
      修改IPv4

    1.2.2 将虚拟机IP改为静态IP

    • 安装所需工具,并重启系统
    sudo apt install -y ifupdown net-tools
    init 6
    
    • 1
    • 2
    • 查看配置文件
    cd /etc/netplan
    ls
    
    • 1
    • 2

    查看配置文件

    • 修改文件内容
    sudo vim 01-network-manager-all.yaml
    
    • 1

    将文件内容修改成如下内容:

    # 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 重启网卡
    sudo netplan apply
    
    • 1
    • 检查IP地址,可见已成功修改
    ip a
    
    • 1

    IP修改后结果

    1.3 添加主机间IP与名称的映射

    • 查看hosts文件
    vim /etc/hosts
    
    • 1
    • 添加如下内容:
    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和主机名的映射关系
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 可使用ping进行测试
    ping base
    
    • 1

    1.4 安装SSH

    • 检查是否安装SSH,如结果中看到sshd,说明安装成功
    sudo ps -e |grep ssh
    
    • 1
    • 若未看到sshd,则输入以下命令进行安装
    sudo apt-get install openssh-server
    
    • 1
    • 安装完成后,再次使用第一步命令查询,可发现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
    
    • 1
    • 2
    • 修改静态IP地址为101:
    addresses: [192.168.144.101/24]        # 本机静态IP地址,一定要在末尾加/24
    
    • 1
    • 重启网卡
    sudo netplan apply
    
    • 1

    2.2.2 修改主机名

    • 查看hosts文件
    sudo vim /etc/hostname
    
    • 1
    • 修改为如下内容:
    linux01
    
    • 1

    2.3 在其余虚拟机上重复2.2的操作


    3 可选辅助功能

    3.1 SSH免密登录

    • 在~目录下执行下方代码,生成公钥和私钥,输入命令后连按三次回车
    ssh-keygen -t rsa
    
    • 1
    • 出现.ssh目录,内含id_rsaid_rsa.pub两个文件,分别为私钥和公钥
    • 将公钥id_rsa.pub发送给自己及其他主机
    ssh-copy-id linux01
    ssh-copy-id linux02
    ssh-copy-id linux03
    
    • 1
    • 2
    • 3
    • 现在使用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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 修改执行权限
    chmod 777 xsync
    
    • 1
    • 使用方法
    xsync aaa.txt bbb/
    
    • 1

    至此,虚拟机集群便全部搭建完成啦!
    欢迎各位读者在评论区中批评指正,如果对你有用的话,记得点赞收藏哦~

  • 相关阅读:
    SVM应用
    部署jenkins,结合gitlab实现jva自动化部署
    向量数据库的分类概况
    echarts 中国地图效果,并附上小旗子
    【LibTorch】C++中部署PyTorch模型(以DenseTNT模型为例)
    【Node.js】Node.js入门(六):Express中间件函数
    IEEE Transaction期刊修改过程记录
    使用ollama,MacOS也能轻松玩转大语言模型
    Simulink 自动代码生成电机控制:非线性磁链观测器
    SpringBoot操作Mongodb
  • 原文地址:https://blog.csdn.net/momentni/article/details/126863022