使用工具
- 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
:該虛擬機的內存大小,單位是 MBv.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