大数据集群保姆级安装教程——Centos集群(vagrant+virtualbox篇)

操作系统与软件版本介绍:

项目 版本
操作系统 windows 10 x64
Vagrant vagrant_2.2.19_windows_amd64.msi
VirtualBox VirtualBox-6.1.42-155177-Win.exe

一、Vagrant 安装教程

1.1 Vagrant 下载

进入下载页面下载对应版本:https://www.vagrantup.com/downloads,外网下载可能比较慢,推荐使用IDM下载器,会快很多,下载后会得到一个安装程序 vagrant_2.2.19_windows_amd64.msi

image-20230311085253431

1.2 Vagrant 软件安装

  • 双击运行 vagrant_2.2.19_windows_amd64.msi 进入安装环节。

https://gitee.com/yiluohan1234/pic-go-img/raw/master/img/install/202303082212559.png

https://gitee.com/yiluohan1234/pic-go-img/raw/master/img/install/202303082212216.png

https://gitee.com/yiluohan1234/pic-go-img/raw/master/img/install/202303082212351.png

  • 安装过程比较漫长,安心等待即刻。

https://gitee.com/yiluohan1234/pic-go-img/raw/master/img/install/202303082212411.png

https://gitee.com/yiluohan1234/pic-go-img/raw/master/img/install/202303082212771.png

https://gitee.com/yiluohan1234/pic-go-img/raw/master/img/install/202303082214907.png

  • 选择 No 不重启

https://gitee.com/yiluohan1234/pic-go-img/raw/master/img/install/202303082215305.png

安装结束,下面进行环境变量配置,指定 Vagrant 的数据文件存放路径(box、data、gems等)。

1.3 Vagrant 环境变量配置

Vagrant 在执行命令的时候会尝试访问 %userprofile%\.vagrant.d,这个文件夹中会存放 Vagrant 相关的命令和下载的镜像,默认为 C:\Users\用户名\.vagrant.d

注意:存储路径不要有中文,如果 .vagrant.d 文件夹的存放路径包含中文路径,那么 Vagrant 在使用过程中可能会出错,毕竟是国外的产品,安装路径最好不要包含中文路径。

image-20230311085810816

在环境变量中指定 VAGRANT_HOME 配置项,并关联 .vagrant.d 文件夹的位置,本文配置的路径是:D:\PF\Vagrant\.vagrant.d\

https://gitee.com/yiluohan1234/pic-go-img/raw/master/img/install/202303082219071.png

注意是在用户变量中配置,不要在系统变量中配置,虽然我没试过有什么区别,但是尽量和博主保持一致。至此 Vagrant 安装教程结束,下面介绍 Virtualbox 安装教程。

二、VirtualBox 安装教程

2.1 VirtualBox 下载

官方下载地址:https://www.virtualbox.org/wiki/Downloads,与 Vagrant 一样,建议使用IDM下载,会更快一些。

Untitled

2.2 VirtualBox 安装

  • 双击运行 VirtualBox-6.1.42-155177-Win.exe 进入安装界面:

Untitled

  • 选择 VirtualBox Application 并修改安装位置,安装路径最好不要携带中文路径。

Untitled

Untitled

Untitled

Untitled

这里安装过程中会提醒安装 Oracle Corporation 通用串行总线控制器,安装即可,不然后续不能打开 VirtualBox 软件,我这里可能是安装过的原因,没有出现提示。

Untitled

Untitled

2.3 配置虚拟机默认安装地址

  • 打开全局设置,配置虚拟机安装地址,默认是存放到 C 盘,这里我改到了F:\VirtualBox Vms

Untitled

其他配置按照需求修改即可,VirtualBox 只是一个虚拟机的供应者,后面都是使用 Vagrant 进行操作,很少使用 VirtualBox。

三、安装一个 centos 7 系统

3.1 安装 VirtualBox 体系下的 Vagrant Box

Vagrant 管理工具中的系统都是 Box 的概念,类似直接虚拟机管理软件直接使用 iso 镜像文件。

首先到 Vagrant 官网中下载一个 VirtualBox 体系下的 centos/7.box 文件,官网地址:https://app.vagrantup.com/boxes/search

https://gitee.com/yiluohan1234/pic-go-img/raw/master/img/install/202303082251988.png

下载完后会得到一个 box 文件 CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box,把它修改个短点的名字方便使用,然后保存备用,这里将它改名为 centos7,存放到 D:\PF\VagrantBox\ 文件夹下,此时它的文件路径为:D:\PF\VagrantBox\centos7.box。

  • 打开命令行窗口(cmd),然后将它添加到 Vagrant 管理的 Box 列表中:
vagrant box add centos7 D:\PF\VagrantBox\centos7.box

centos7 是为 box 取的名字,供后续创建虚拟机。

  • 查看是否添加成功
vagrant box list

3.2 创建一个虚拟机

这里我先创建一个存放 Vagrantfile 的文件夹:D:\PF\VagrantBox\centos7\,然后打开 cmd 命令行窗口进入这个目录,执行后续命令:

  • 创建虚拟机
vagrant init centos7

centos7 是前面为 box 取的名字,命令执行完后会在文件夹中生成一个 Vagrantfile 文件,可以在里面配置虚拟机相关信息,里面得注释虽然是英文的,但是十分详细,都是基于 Ruby 语法书写的。这里不作展开,只做基本配置,去掉注释文件后的 Vagrantfile

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "centos7"             # box 名称
  config.vm.hostname = "centos7"        # 虚拟机名称
  config.vm.box_check_update = false    # 盒子不检查更新
  config.vm.network "private_network", ip: "192.168.33.10"  # 配置成私有网络,类似主机模式
  # 虚拟机供应者参数配置,相当于在 virtualbox 中配置
  config.vm.provider "virtualbox" do |vb|
    vb.name = "centos7" # 虚拟机名称
    vb.gui = false      # 启动机器时显示 VirtualBox GUI
    vb.memory = "2048"  # 虚拟机存储大小,mb
    vb.cpus = 2         # cpu 大小
  end
end

完成配置后,下面启动虚拟机contos7,启动过程中可以看到虚拟机的一些基本配置信息:

vagrant up
  • 前面配置的私有IP地址,在宿主机上能够 ping 通,说明启动成功。

3.3 进入虚拟机

vagrant ssh

虚拟机的默认用户是 vagrantroot 用户的密码是 vagrant

进入后就可以像 centos7 一样使用命令行操作了,不过使用 cmd 不太方便,推荐使用 Xshell 配合 Xftp 进行操作,都有免费的教育版本。

相比于虚拟机管理软件使用 iso 镜像文件安装虚拟机,使用 Vagrant 管理工具就方便太多了,安装教程到此结束。

3.4 注意事项

  • 每次启动虚拟机需要使用命令行(cmd)进入 Vagrantfile 文件所在的目录,然后再使用 vagrant up 命令启动虚拟机。
  • 关机同理,使用命令行(cmd)进入 Vagrantfile 文件所在的目录,然后再使用 vagrant halt 命令关闭虚拟机。
  • 本文中 centos7 虚拟机的 Vagrantfile 的存放路径是 D:\PF\Vagrantfile\centos7,所以我每次都会用 cmd 进入 D:\PF\Vagrantfile\centos7 这个目录,然后使用 vagrant up 开机,使用 vagrant halt 关机。

3.5 Vagrant常用命令

命令 解释
vagrant box list 查看目前已有的box
vagrant box add [自定义名称] [box镜像路径] 新增加一个box
vagrant box remove 删除指定box
vagrant init 初始化配置vagrantfile
vagrant up 启动虚拟机
vagrant ssh ssh登陆虚拟机
vagrant suspend 挂起虚拟机
vagrant reload 重启虚拟机
vagrant halt 关闭虚拟机
vagrant status 查看虚拟机状态
vagrant destroy 删除虚拟机
vagrant package --output xxx.box 打包分发
vagrant package —output xxx.box --base “自己的box”

四、安装Centos集群

集群规划如下:

hadoop102 hadoop103 hadoop104
IP地址 192.168.10.101 192.168.10.102 192.168.10.103
登录用户 root、vagrant、atguigu root、vagrant、atguigu root、vagrant、atguigu
登录密码 vagrant vagrant vagrant
软件安装 net-tools、vim-enhanced、sshpass net-tools、vim-enhanced、sshpass net-tools、vim-enhanced、sshpass

4.1 创建Centos集群安装的VagrantFile文件

创建vagrantfile所在文件夹,并创建文件Vagrantfile,其中VagrantFile是vagrant的启动配置文件。

mkdir /vagrant_centos_cluster
touch VagrantFile

编辑VagrantFile文件, 内容如下:

# -*- mode: ruby -*-
# vi: set ft=ruby :

# build centos
$init_script = <<-SCRIPT
#!/bin/bash

# ssh 设置允许密码登录
# sed -i 's@^PasswordAuthentication no@PasswordAuthentication yes@g' /etc/ssh/sshd_config
# sed -i 's@^#PubkeyAuthentication yes@PubkeyAuthentication yes@g' /etc/ssh/sshd_config
systemctl restart sshd.service

# yum install -y -q net-tools
# yum install -y -q vim-enhanced.x86_64
# yum install -y -q sshpass

# 增加 atguigu 用户
useradd atguigu -g hadoop -d /home/atguigu
# 为atguigu用户设置密码vagrant
echo vagrant | passwd --stdin atguigu
# 配置vagrant用户具有root权限
sed -i "/## Same thing without a password/ivagrant   ALL=(ALL)     NOPASSWD:ALL" /etc/sudoers

#---hosts---
cat >> /etc/hosts <<EOF
192.168.10.101  hadoop102
192.168.10.102  hadoop103
192.168.10.103  hadoop104
EOF

# 创建安装目录
mkdir /opt/module
chown -R vagrant:vagrant /opt
SCRIPT

Vagrant.configure("2") do |config|
  # 设置主机与虚拟机的共享目录
  #config.vm.synced_folder ".", "/vagrant", type: "virtualbox"
  # https://stackoverflow.com/questions/22922891/vagrant-ssh-authentication-failure
  #config.ssh.private_key_path = "~/.ssh/id_rsa"
  #config.ssh.forward_agent = true
  numNodes = 3
  nodeRange = 1..3
  (nodeRange).each do |i|
    config.vm.define "hadoop10#{i+1}" do |node|
      # 设置虚拟机的Box,https://app.vagrantup.com/boxes/search
      # https://github.com/geerlingguy/ansible-vagrant-examples
      # https://github.com/rootsongjc/kubernetes-vagrant-centos-cluster
      node.vm.box = "centos/7"
      # 设置虚拟机的Box的版本号:1804.02
      node.vm.box_version = "2004.01"
      # 设置虚拟机的主机名:hadoop102
      # node.vm.hostname="hdp10#{i}"
      node.vm.hostname="hadoop10#{i+1}"
      # 虚拟机的默认登录名和密码:"vagrant","vagrant"
      # node.ssh.username = "vagrant"
      # 设置虚拟机的登录密码
      # node.ssh.password = "vagrant"
      # 是否通过公私钥来登录虚拟机, 默认为true,如果为True,可能会出现一直Warning: Authentication failure. Retrying...
      node.ssh.insert_key = false
      # 设置虚拟机的IP
      node.vm.network "private_network", ip: "192.168.10.#{100+i}"

      # VirtaulBox相关配置
      node.vm.provider "virtualbox" do |v|
        # 设置虚拟机的名称
        # v.name = "hdp10#{i}"
        v.name = "hadoop10#{i+1}"
        # 设置虚拟机的内存大小
        v.memory = 2048
        # 设置虚拟机的CPU个数
        v.cpus = 1
      end

      # 使用shell脚本进行软件安装和配置
      node.vm.provision "shell", inline: $init_script
    end
  end
end

4.2 启动虚拟机

vagrant会自动下载box并安装shell脚本内容进行安装配置。

vagrant up

4.3 登录,验证配置是否正确

正常启动后,我们就可以使用以下命令直接登录到虚拟机或者使用SecureCRT、 Tabby 等终端工具登录查看。

vagrant ssh hadoop102

五、参考链接

Vagrant 官网地址

Vagrant Box 地址

VirtualBox 官网地址

使用vagrant搭建hadoop环境 - 简书 (jianshu.com)

Vagrantfile详细说明 - 简书 (jianshu.com)

vagrantfile详解_raoxiaoya的博客-CSDN博客

vagrantfile 详解_戴国进的博客-CSDN博客

Vagrant 与 VirtualBox 的保姆级安装教程_virtualbox vagrant_Jacks丶的博客-CSDN博客

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐