使用 Vagrant 和 Virtualbox 快速搭建服务器集群

使用工具
  • Virtualbox
    免费开源的虚拟机软件,使用它可以快速生成虚拟机
  • Vagrant
    基于Ruby的工具,用于创建和部署虚拟化开发环境
  • Git
    使用Git for Windows 来作命令行工具
  • Centos
    服务器集群基于centos,需要在 vagrant 官网下载centos 的 box

搭建步骤
  • 创建 Vagrantfile
    • 鼠标右键点击桌面,选择 git bash 进入 git 命令行
    • 创建并进入工作目录 mkdir ~/Distributed && cd ~/Distributed
    • 使用 vagrant init 命令生成 Vagrantfile
      在这里插入图片描述

  • 编辑 Vagrantfile 的内容如下所示
Vagrant.configure("2") do |config|
   (1..3).each do |i|
        config.vm.define "node#{i}" do |node|
            # 设置虚拟机的Box
            node.vm.box = "centos/7"

            # 设置虚拟机的主机名
            node.vm.hostname="node#{i}"

            # 设置虚拟机的IP
            node.vm.network "private_network", ip: "192.168.56.#{100+i}"

            # 设置主机与虚拟机的共享目录
            node.vm.synced_folder "~/VmProjects/Distributed/node#{i}/workspace", "/home/vagrant/workspace"

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

    • deploy.vm.provider
      这句指定了虚拟机的提供者。本次使用 virtualbox。需要注意的是 Vagrant 只是虚拟机的编排工具,而它本身并不提供虚拟技术,需要跟其他虚拟机软件结合,例如:virtualbox、VMware。接下来的 v 就是对这台虚拟机的设置。

      • v.name:virtualbox 中这台虚拟机的名字
      • v.memory:该虚拟机的内存大小,单位是 MB
      • v.cpus:该虚拟机的 CPU 核数
    • vm.box
      该虚拟机的初始化镜像名称,这里是 centos/7。

    • vm.hostname
      该虚拟机的 hostname,ssh 连接时用的就是这个名字。请起一个有意义的名字,不然以后又得重设

    • vm.network
      网络设置,Vagrant 有三种网络设置模式:

      • Forwarded port
        这种方式把本机和虚拟机的端口进行映射,例如:
        • config.vm.forwarded_port 80 , 8080
          这是把虚拟机的 80 端口映射到宿主机的 8080 端口,这样访问宿主机的 8080 端口就相当于访问虚拟机的 80 端口了。
      • Private network
        这种方式是私有网络,只允许宿主机访问虚拟机。如果多个虚拟机设定在同一个网段,那么几个虚拟机之间也可以互相访问。相当于搭建了个小型集群。
      • Public network
        这种方式虚拟机的网络配置跟宿主机的网络配置一样,在外网别可以像访问宿主机一样访问虚拟机。
    • node.vm.synced_folder
      主机与虚拟机的共享目录,该目录文件在windows下但会映射到虚拟机的目录


  • 生成集群

    • 运行 vagrant up ,即可生成集群
      在这里插入图片描述
      在这里插入图片描述

可能出现的问题
  • 如何下载 vagrant box 文件?

    • 没有下载 box 直接使用 Vagrantfile 生成虚拟机,vagrant 会自动从远程下载 box 文件,速度可能会很慢。但直接下载 box 文件,又在官网找不到链接。
    • 官网没有 box 的下载链接,只有 box 详情页
    • 详情页的地址为 https://app.vagrantup.com/centos/boxes/7/versions/1905.1
    • box 的下载链接则为详情页地址拼接 /providers/供应商名字.box 而成
    • 提供商就是创建虚拟机软件的名称如 vmware、virtualbox
    • 一个完整的下载地址如下
    • https://app.vagrantup.com/centos/boxes/7/versions/1905.1/providers/virtualbox.box

  • 创建虚拟时出现 mount: unknown filesystem type 'vboxsf' ?

    • 这个问题是在创建虚拟机和本机映射目录时会出现的一个问题
    • 使用如下命令下载 vagrant-vbguest 插件即可解决问题
    • vagrant plugin install vagrant-vbguest
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章