使用 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章