
1. Vagrant 的介紹
虛擬開發(fā)環(huán)境
平常我們經(jīng)常會(huì)遇到這樣的問題:在開發(fā)機(jī)上面開發(fā)完畢程序,放到正式環(huán)境之后會(huì)出現(xiàn)各種奇怪的問題:描述符少了、nginx配置不正確、MySQL編碼不對(duì)、php缺少模塊、glibc版本太低等。
所以我們就需要虛擬開發(fā)環(huán)境,我們虛擬和正式環(huán)境一樣的虛擬開發(fā)環(huán)境,而隨著個(gè)人開發(fā)機(jī)硬件的升級(jí),我們可以很容易的在本機(jī)跑虛擬機(jī),例如VMware、VirtualBox等。因此使用虛擬化開發(fā)環(huán)境,在本機(jī)可以運(yùn)行自己喜歡的OS(Windows、Ubuntu、Mac等),開發(fā)的程序運(yùn)行在虛擬機(jī)中,這樣遷移到生產(chǎn)環(huán)境可以避免環(huán)境不一致導(dǎo)致的莫名錯(cuò)誤。
虛擬開發(fā)環(huán)境特別適合團(tuán)隊(duì)中開發(fā)環(huán)境、測(cè)試環(huán)境、正式環(huán)境不同的場合,這樣就可以使得整個(gè)團(tuán)隊(duì)保持一致的環(huán)境,我寫這一章的初衷就是為了讓大家和我的開發(fā)環(huán)境保持一致,讓讀者和我們整個(gè)大團(tuán)隊(duì)保持一致的開發(fā)環(huán)境。
Vagrant
Vagrant就是為了方便的實(shí)現(xiàn)虛擬化環(huán)境而設(shè)計(jì)的,使用Ruby開發(fā),基于VirtualBox等虛擬機(jī)管理軟件的接口,提供了一個(gè)可配置、輕量級(jí)的便攜式虛擬開發(fā)環(huán)境。使用Vagrant可以很方便的就建立起來一個(gè)虛擬環(huán)境,而且可以模擬多臺(tái)虛擬機(jī),這樣我們平時(shí)還可以在開發(fā)機(jī)模擬分布式系統(tǒng)。
Vagrant還會(huì)創(chuàng)建一些共享文件夾,用來給你在主機(jī)和虛擬機(jī)之間共享代碼用。這樣就使得我們可以在主機(jī)上寫程序,然后在虛擬機(jī)中運(yùn)行。如此一來團(tuán)隊(duì)之間就可以共享相同的開發(fā)環(huán)境,就不會(huì)再出現(xiàn)類似“只有你的環(huán)境才會(huì)出現(xiàn)的bug”這樣的事情。
團(tuán)隊(duì)新員工加入,常常會(huì)遇到花一天甚至更多時(shí)間來從頭搭建完整的開發(fā)環(huán)境,而有了Vagrant,只需要直接將已經(jīng)打包好的package(里面包括開發(fā)工具,代碼庫,配置好的服務(wù)器等)拿過來就可以工作了,這對(duì)于提升工作效率非常有幫助。
Vagrant不僅可以用來作為個(gè)人的虛擬開發(fā)環(huán)境工具,而且特別適合團(tuán)隊(duì)使用,它使得我們虛擬化環(huán)境變得如此的簡單,只要一個(gè)簡單的命令就可以開啟虛擬之路。
2. Vagrant 安裝配置
實(shí)際上Vagrant只是一個(gè)讓你可以方便設(shè)置你想要的虛擬機(jī)的便攜式工具,它底層支持VirtualBox、VMware甚至AWS作為虛擬機(jī)系統(tǒng),本書中我們將使用VirtualBox來進(jìn)行說明,所以第一步需要先安裝Vagrant和VirtualBox。
VirtualBox 安裝
VirtualBox是Oracle開源的虛擬化系統(tǒng),它支持多個(gè)平臺(tái),所以你可以到官方網(wǎng)站:https://www.virtualbox.org/wiki/Downloads/ 下載適合你平臺(tái)的VirtualBox最新版本并安裝,它的安裝過程都很傻瓜化,一步一步執(zhí)行就可以完成安裝了。
Vagrant 安裝
最新版本的Vagrant已經(jīng)無法通過 gem 命令來安裝,因?yàn)橐蕾噹焯嗔?,所以目前無法使用 gem 來安裝,目前網(wǎng)絡(luò)上面很多教程還是類似這樣的命令,那些都是錯(cuò)誤的。目前唯一安裝的辦法就是到官方網(wǎng)站下載打包好的安裝包:http://www.vagrantup.com/downloads.html 他的安裝過程和VirtualBox的安裝一樣都是傻瓜化安裝,一步一步執(zhí)行就可以完成安裝。
盡量下載最新的程序,因?yàn)閂irtualBox經(jīng)常升級(jí),升級(jí)后有些接口會(huì)變化,老的Vagrant可能無法使用。
要想檢測(cè)安裝是否成功,可以打開終端命令行工具,輸入 vagrant ,看看程序是不是已經(jīng)可以運(yùn)行了。如果不行,請(qǐng)檢查一下$PATH里面是否包含 vagrant 所在的路徑。
Vagrant 配置
當(dāng)我們安裝好VirtualBox和Vagrant后,我們要開始考慮在VM上使用什么操作系統(tǒng)了,一個(gè)打包好的操作系統(tǒng)在Vagrant中稱為Box,即Box是一個(gè)打包好的操作系統(tǒng)環(huán)境,目前網(wǎng)絡(luò)上什么都有,所以你不用自己去制作操作系統(tǒng)或者制作Box:vagrantbox.es上面有大家熟知的大多數(shù)操作系統(tǒng),你只需要下載就可以了,下載主要是為了安裝的時(shí)候快速,當(dāng)然Vagrant也支持在線安裝。
建立開發(fā)環(huán)境目錄
我的開發(fā)機(jī)是Mac,所以我建立了如下的開發(fā)環(huán)境目錄,讀者可以根據(jù)自己的系統(tǒng)不同建立一個(gè)目錄就可以:
/Users/astaxie/vagrant
下載box
前面講了box是一個(gè)操作系統(tǒng)環(huán)境,實(shí)際上它是一個(gè)zip包,包含了Vagrant的配置信息和VirtualBox的虛擬機(jī)鏡像文件.我們這一次的實(shí)戰(zhàn)使用官方提供了一個(gè)box:Ubuntu lucid 64 http://files.vagrantup.com/lucid64.box
當(dāng)然你也可以選一個(gè)自己團(tuán)隊(duì)在用的系統(tǒng),例如CentOS、Debian等,我們可以通過上面說的地址下載開源愛好者們制作好的box。當(dāng)然你自己做一個(gè)也行,下一節(jié)我會(huì)講述如何自己制作包。
添加box
添加box的命令如下:
$ vagrant box add base # 遠(yuǎn)端的box地址或者本地的box文件名
vagrant box add 是添加box的命令
base是box的名稱,可以是任意的字符串,base是默認(rèn)名稱,主要用來標(biāo)識(shí)一下你添加的box,后面的命令都是基于這個(gè)標(biāo)識(shí)來操作的。
例子:
$ vagrant box add base http://files.vagrantup.com/lucid64.box
$ vagrant box add base https://dl.dropbox.com/u/7225008/Vagrant/CentOS-6.3-x86_64-minimal.box
$ vagrant box add base CentOS-6.3-x86_64-minimal.box
$ vagrant box add "CentOS 6.3 x86_64 minimal" CentOS-6.3-x86_64-minimal.box
我在開發(fā)機(jī)上面是這樣操作的,首先進(jìn)入我們的開發(fā)環(huán)境目錄/Users/astaxie/vagrant,執(zhí)行如下的命令
$ vagrant box add base lucid64.box
安裝過程的信息:
Downloading or copying the box...
Extracting box...te: 47.5M/s, Estimated time remaining: --:--:--)
Successfully added box 'base' with provider 'virtualbox'!
box中的鏡像文件被放到了:/Users/astaxie/.vagrant.d/boxes/,如果在window系統(tǒng)中應(yīng)該是放到了:
C:\Users\當(dāng)前用戶名\.vagrant.d\boxes\目錄下。
通過vagrant box add這樣的方式安裝遠(yuǎn)程的box,可能很慢,所以建議大家先下載box到本地再執(zhí)行這樣的操作。
初始化
初始化的命令如下:
$ vagrant init
如果你添加的box名稱不是base,那么需要在初始化的時(shí)候指定名稱,例如
$ vagrant init "CentOS 6.3 x86_64 minimal"
初始化過程的信息:
A `Vagrantfile` has been placed in this directory.
You are now ready to `vagrant up` your first virtual environment!
Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
這樣就會(huì)在當(dāng)前目錄生成一個(gè) Vagrantfile的文件,里面有很多配置信息,后面我們會(huì)詳細(xì)講解每一項(xiàng)的含義,但是默認(rèn)的配置就可以開箱即用。
啟動(dòng)虛擬機(jī)
啟動(dòng)虛擬機(jī)的命令如下:
$ vagrant up
啟動(dòng)過程的信息:
Bringing machine 'default' up with 'virtualbox' provider...
[default] Importing base box 'base'...
[default] Matching MAC address for NAT networking...
[default] Setting the name of the VM...
[default] Clearing any previously set forwarded ports...
[default] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
[default] Mounting shared folders...
[default] -- /vagrant
連接到虛擬機(jī)
上面已經(jīng)啟動(dòng)了虛擬機(jī),之后我們就可以通過ssh來連接到虛擬機(jī)了。比如在我的開發(fā)機(jī)中可以像這樣來連接:
$ vagrant ssh
連接到虛擬機(jī)后的信息如下:
Linux lucid64 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS
Welcome to the Ubuntu Server!
* Documentation: http://www.ubuntu.com/server/doc
New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.
Welcome to your Vagrant-built virtual machine.
Last login: Fri Sep 14 07:31:39 2012 from 10.0.2.2
這樣我們就可以像連接到一臺(tái)服務(wù)器一樣進(jìn)行操作了。
window機(jī)器不支持這樣的命令,必須使用第三方客戶端來進(jìn)行連接,例如putty、Xshell4等.
putty為例:
主機(jī)地址: 127.0.0.1
端口: 2222
用戶名: vagrant
密碼: vagrant
系統(tǒng)信息
進(jìn)入系統(tǒng)之后我們可以看一下系統(tǒng)的基礎(chǔ)信息:
vagrant@lucid64:/vagrant$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/lucid64-root
78G 945M 73G 2% /
none 179M 176K 179M 1% /dev
none 184M 0 184M 0% /dev/shm
none 184M 64K 184M 1% /var/run
none 184M 0 184M 0% /var/lock
none 184M 0 184M 0% /lib/init/rw
none 78G 945M 73G 2% /var/lib/ureadahead/debugfs
/dev/sda1 228M 17M 199M 8% /boot
/vagrant 298G 76G 222G 26% /vagrant
/vagrant 這個(gè)目錄是自動(dòng)映射的,被映射到 /Users/astaxie/vagrant,這樣就方便我們以后在開發(fā)機(jī)中進(jìn)行開發(fā),在虛擬機(jī)中進(jìn)行運(yùn)行效果測(cè)試了。
Vagrantfile配置文件詳解
在我們的開發(fā)目錄下有一個(gè)文件 Vagrantfile,里面包含有大量的配置信息,主要包括三個(gè)方面的配置,虛擬機(jī)的配置、SSH配置、Vagrant的一些基礎(chǔ)配置。Vagrant是使用Ruby開發(fā)的,所以它的配置語法也是Ruby的,但是我們沒有學(xué)過Ruby的人還是可以跟著它的注釋知道怎么配置一些基本項(xiàng)的配置。
- box設(shè)置
config.vm.box = "base"
上面這配置展示了Vagrant要去啟用那個(gè)box作為系統(tǒng),也就是上面我們輸入`vagrant init Box名稱`時(shí)所指定的box,如果沒有輸入box名稱的話,那么默認(rèn)就是`base`,VirtualBox提供了VBoxManage這個(gè)命令行工具,可以讓我們?cè)O(shè)定VM,用`modifyvm`這個(gè)命令讓我們可以設(shè)定VM的名稱和內(nèi)存大小等等,這里說的名稱指的是在VirtualBox中顯示的名稱,我們也可以在Vagrantfile中進(jìn)行設(shè)定,在Vagrantfile中加入如下這行就可以設(shè)定了:
config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", "astaxie", "--memory", "512"]
end
這行設(shè)置的意思是調(diào)用VBoxManage的`modifyvm`的命令,設(shè)置VM的名稱為`astaxie`,內(nèi)存為512MB。你可以類似的通過定制其它VM屬性來定制你自己的VM。
-
網(wǎng)絡(luò)設(shè)置
Vagrant有兩種方式來進(jìn)行網(wǎng)絡(luò)連接,一種是host-only(主機(jī)模式),意思是主機(jī)和虛擬機(jī)之間的網(wǎng)絡(luò)互訪,而不是虛擬機(jī)訪問internet的技術(shù),也就是只有你一個(gè)人自High,其他人訪問不到你的虛擬機(jī)。另一種是Bridge(橋接模式),該模式下的VM就像是局域網(wǎng)中的一臺(tái)獨(dú)立的主機(jī),也就是說需要VM到你的路由器要IP,這樣的話局域網(wǎng)里面其他機(jī)器就可以訪問它了,一般我們?cè)O(shè)置虛擬機(jī)都是自high為主,所以我們的設(shè)置一般如下:
config.vm.network :private_network, ip: "11.11.11.11"這里我們虛擬機(jī)設(shè)置為hostonly,并且指定了一個(gè)IP,IP的話建議最好不要用
192.168..這個(gè)網(wǎng)段,因?yàn)楹苡锌赡芎湍憔钟蚓W(wǎng)里面的其它機(jī)器IP沖突,所以最好使用類似11.11..這樣的IP地址。 -
hostname設(shè)置
hostname的設(shè)置非常簡單,Vagrantfile中加入下面這行就可以了:config.vm.hostname = "go-app"設(shè)置
hostname非常重要,因?yàn)楫?dāng)我們有很多臺(tái)虛擬服務(wù)器的時(shí)候,都是依靠hostname來做識(shí)別的,例如Puppet或是Chef,都是通過hostname來做識(shí)別的,既然設(shè)置那么簡單,所以我們就別偷懶,設(shè)置一個(gè)。 -
同步目錄
我們上面介紹過
/vagrant目錄默認(rèn)就是當(dāng)前的開發(fā)目錄,這是在虛擬機(jī)開啟的時(shí)候默認(rèn)掛載同步的。我們還可以通過配置來設(shè)置額外的同步目錄:config.vm.synced_folder "/Users/astaxie/data", "/vagrant_data"上面這個(gè)設(shè)定,第一個(gè)參數(shù)是主機(jī)的目錄,第二個(gè)參數(shù)是虛擬機(jī)掛載的目錄
-
端口轉(zhuǎn)發(fā)
config.vm.network :forwarded_port, guest: 80, host: 8080上面這句配置可厲害了,這一行的意思是把對(duì)host機(jī)器上8080端口的訪問請(qǐng)求forward到虛擬機(jī)的80端口的服務(wù)上,例如你在你的虛擬機(jī)上使用nginx跑了一個(gè)Go應(yīng)用,那么你在host機(jī)器上的瀏覽器中打開
http://localhost:8080時(shí),Vagrant就會(huì)把這個(gè)請(qǐng)求轉(zhuǎn)發(fā)到VM里面跑在80端口的nginx服務(wù)上,因此我們可以通過這個(gè)設(shè)置來幫助我們?nèi)ピO(shè)定host和VM之間,或是VM和VM之間的信息交互。
修改完Vagrantfile的配置后,記得要用
vagrant reload命令來重啟VM之后才能使用VM更新后的配置
3 Vgrant使用入門
前面我們已經(jīng)學(xué)會(huì)了如何安裝并配置Vagrant,而且也已經(jīng)按照默認(rèn)的方式開啟了,那么這一小節(jié)就給大家介紹一下Vagrant的高級(jí)應(yīng)用。
Vagrant常用命令
前面講了Vagrant的幾個(gè)命令:
-
vagrant box add添加box的操作 -
vagrant init初始化box的操作 -
vagrant up啟動(dòng)虛擬機(jī)的操作 -
vagrant ssh登錄虛擬機(jī)的操作
Vagrant還包括如下一些操作:
-
vagrant box list顯示當(dāng)前已經(jīng)添加的box列表
$ vagrant box list base (virtualbox) -
vagrant box remove刪除相應(yīng)的box
$ vagrant box remove base virtualbox Removing box 'base' with provider 'virtualbox'... -
vagrant destroy停止當(dāng)前正在運(yùn)行的虛擬機(jī)并銷毀所有創(chuàng)建的資源
$ vagrant destroy Are you sure you want to destroy the 'default' VM? [y/N] y [default] Destroying VM and associated drives... -
vagrant halt關(guān)機(jī)
$ vagrant halt [default] Attempting graceful shutdown of VM... -
vagrant package打包命令,可以把當(dāng)前的運(yùn)行的虛擬機(jī)環(huán)境進(jìn)行打包
$ vagrant package [default] Attempting graceful shutdown of VM... [default] Clearing any previously set forwarded ports... [default] Creating temporary directory for export... [default] Exporting VM... [default] Compressing package to: /Users/astaxie/vagrant/package.box -
vagrant plugin用于安裝卸載插件
-
vagrant provision通常情況下Box只做最基本的設(shè)置,而不是設(shè)置好所有的環(huán)境,因此Vagrant通常使用Chef或者Puppet來做進(jìn)一步的環(huán)境搭建。那么Chef或者Puppet稱為provisioning,而該命令就是指定開啟相應(yīng)的provisioning。按照Vagrant作者的說法,所謂的provisioning就是"The problem of installing software on a booted system"的意思。除了Chef和Puppet這些主流的配置管理工具之外,我們還可以使用Shell來編寫安裝腳本。
例如:
vagrant provision --provision-with chef -
vagrant reload重新啟動(dòng)虛擬機(jī),主要用于重新載入配置文件
$ vagrant reload [default] Attempting graceful shutdown of VM... [default] Setting the name of the VM... [default] Clearing any previously set forwarded ports... [default] Creating shared folders metadata... [default] Clearing any previously set network interfaces... [default] Preparing network interfaces based on configuration... [default] Forwarding ports... [default] -- 22 => 2222 (adapter 1) [default] Booting VM... [default] Waiting for VM to boot. This can take a few minutes. [default] VM booted and ready for use! [default] Setting hostname... [default] Mounting shared folders... [default] -- /vagrant -
vagrant resume恢復(fù)前面被掛起的狀態(tài)
$ vagrant resume [default] Resuming suspended VM... [default] Booting VM... [default] Waiting for VM to boot. This can take a few minutes. [default] VM booted and ready for use! -
vagrant ssh-config輸出用于ssh連接的一些信息
$ vagrant ssh-config Host default HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile "/Users/astaxie/.vagrant.d/insecure_private_key" IdentitiesOnly yes LogLevel FATAL -
vagrant status獲取當(dāng)前虛擬機(jī)的狀態(tài)
$vagrant status Current machine states: default running (virtualbox) The VM is running. To stop this VM, you can run `vagrant halt` to shut it down forcefully, or you can run `vagrant suspend` to simply suspend the virtual machine. In either case, to restart it again, simply run `vagrant up`. -
vagrant suspend掛起當(dāng)前的虛擬機(jī)
$ vagrant suspend [default] Saving VM state and suspending execution...
模擬打造多機(jī)器的分布式系統(tǒng)
前面這些單主機(jī)單虛擬機(jī)主要是用來自己做開發(fā)機(jī),從這部分開始的內(nèi)容主要將向大家介紹如何在單機(jī)上通過虛擬機(jī)來打造分布式造集群系統(tǒng)。這種多機(jī)器模式特別適合以下幾種人:
- 快速建立產(chǎn)品網(wǎng)絡(luò)的多機(jī)器環(huán)境,例如web服務(wù)器、db服務(wù)器
- 建立一個(gè)分布式系統(tǒng),學(xué)習(xí)他們是如何交互的
- 測(cè)試API和其他組件的通信
- 容災(zāi)模擬,網(wǎng)絡(luò)斷網(wǎng)、機(jī)器死機(jī)、連接超時(shí)等情況
Vagrant支持單機(jī)模擬多臺(tái)機(jī)器,而且支持一個(gè)配置文件Vagrntfile就可以跑分布式系統(tǒng)。
現(xiàn)在我們來建立多臺(tái)VM跑起來,並且讓他們之間能夠相通信,假設(shè)一臺(tái)是應(yīng)用服務(wù)器、一臺(tái)是DB服務(wù)器,那么這個(gè)結(jié)構(gòu)在Vagrant中非常簡單,其實(shí)和單臺(tái)的配置差不多,你只需要通過config.vm.define來定義不同的角色就可以了,現(xiàn)在我們打開配置文件進(jìn)行如下設(shè)置:
Vagrant.configure("2") do |config|
config.vm.define :web do |web|
web.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", "web", "--memory", "512"]
end
web.vm.box = "base"
web.vm.hostname = "web"
web.vm.network :private_network, ip: "11.11.1.1"
end
config.vm.define :db do |db|
db.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--name", "db", "--memory", "512"]
end
db.vm.box = "base"
db.vm.hostname = "db"
db.vm.network :private_network, ip: "11.11.1.2"
end
end
這里的設(shè)置和前面我們單機(jī)設(shè)置配置類似,只是我們使用了:web以及:db分別做了兩個(gè)VM的設(shè)置,并且給每個(gè)VM設(shè)置了不同的hostname和IP,設(shè)置好之后再使用vagrant up將虛擬機(jī)跑起來:
$ vagrant up
Bringing machine 'web' up with 'virtualbox' provider...
Bringing machine 'db' up with 'virtualbox' provider...
[web] Setting the name of the VM...
[web] Clearing any previously set forwarded ports...
[web] Creating shared folders metadata...
[web] Clearing any previously set network interfaces...
[web] Preparing network interfaces based on configuration...
[web] Forwarding ports...
[web] -- 22 => 2222 (adapter 1)
[web] Running any VM customizations...
[web] Booting VM...
[web] Waiting for VM to boot. This can take a few minutes.
[web] VM booted and ready for use!
[web] Setting hostname...
[web] Configuring and enabling network interfaces...
[web] Mounting shared folders...
[web] -- /vagrant
[db] Setting the name of the VM...
[db] Clearing any previously set forwarded ports...
[db] Fixed port collision for 22 => 2222. Now on port 2200.
[db] Creating shared folders metadata...
[db] Clearing any previously set network interfaces...
[db] Preparing network interfaces based on configuration...
[db] Forwarding ports...
[db] -- 22 => 2200 (adapter 1)
[db] Running any VM customizations...
[db] Booting VM...
[db] Waiting for VM to boot. This can take a few minutes.
[db] VM booted and ready for use!
[db] Setting hostname...
[db] Configuring and enabling network interfaces...
[db] Mounting shared folders...
[db] -- /vagrant
看到上面的信息輸出后,我們就可以通過vagrant ssh登錄虛擬機(jī)了,但是這次和上次使用的不一樣了,這次我們需要指定相應(yīng)的角色,用來告訴ssh你期望連接的是哪一臺(tái):
$ vagrant ssh web
vagrant@web:~$
$ vagrant ssh db
vagrant@db:~$
是不是很酷!現(xiàn)在接下來我們?cè)賮眚?yàn)證一下虛擬機(jī)之間的通信,讓我們先使用ssh登錄web虛擬機(jī),然后在web虛擬機(jī)上使用ssh登錄db虛擬機(jī)(默認(rèn)密碼是vagrant):
$ vagrant ssh web
Linux web 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS
Welcome to the Ubuntu Server!
* Documentation: http://www.ubuntu.com/server/doc
New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.
Welcome to your Vagrant-built virtual machine.
Last login: Thu Aug 8 18:55:44 2013 from 10.0.2.2
vagrant@web:~$ ssh 11.11.1.2
The authenticity of host '11.11.1.2 (11.11.1.2)' can't be established.
RSA key fingerprint is e7:8f:07:57:69:08:6e:fa:82:bc:1c:f6:53:3f:12:9e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '11.11.1.2' (RSA) to the list of known hosts.
vagrant@11.11.1.2's password:
Linux db 2.6.32-38-server #83-Ubuntu SMP Wed Jan 4 11:26:59 UTC 2012 x86_64 GNU/Linux
Ubuntu 10.04.4 LTS
Welcome to the Ubuntu Server!
* Documentation: http://www.ubuntu.com/server/doc
New release 'precise' available.
Run 'do-release-upgrade' to upgrade to it.
Welcome to your Vagrant-built virtual machine.
Last login: Thu Aug 8 18:58:50 2013 from 10.0.2.2
vagrant@db:~$
通過上面的信息我們可以看到虛擬機(jī)之間通信是暢通的,所以現(xiàn)在開始你偉大的架構(gòu)設(shè)計(jì)吧,你想設(shè)計(jì)怎么樣的架構(gòu)都可以,唯一限制你的就是你主機(jī)的硬件配置了。