天天看點

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

點選檢視第一章 點選檢視第二章

第3章

使用Vagrant管理虛拟機

本章主要介紹如何使用Vagrant管理虛拟機,為了保持實驗環境的一緻性,并能快速建立恢複實驗環境,本章會介紹Vagrant的簡單使用方式,并模拟實驗時的操作步驟來使用Vagrant。借助Vagrant,我們可以更友善地管理Istio實驗環境,這種快速建立實驗環境的能力大大地減少了我們實驗前的環境準備時間。

3.1 Vagrant簡介

Vagrant是一款用于建構及配置管理虛拟機環境的開源軟體,使用Ruby語言開發,主要以指令行的方式運作。Vagrant使用Oracle的開源VirtualBox虛拟化系統,與Chef、Salt、Puppet等環境配置管理軟體搭配使用,使用友善且自動化程度很高。使用Vagrant可以快速建構出虛拟機環境,這将大大降低開發者建立新開發環境的難度,并減少開發時間。Vagrant還支援建立虛拟機叢集,可以快速搭建出一個用于開發和實驗的虛拟機叢集環境。雖然Vagrant可用于雲環境的虛拟機管理,但是生産環境應用不多,仍以開發環境使用場景居多。

使用Vagrant很簡單,隻需要配置好檔案,就可以快速重建出一個可移植的工作環境,而這個功能正好可以幫助我們快速重建出一個虛拟機實作環境,幫助我們快速上手Istio,而不用于陷于實驗前期的環境準備過程中可能遇到的各種棘手問題。基于這個理由,本書選擇了使用Vagrant和Virtualbox快速搭建實驗環境。當然,如果你對Vagrant感興趣,想進一步了解Vagrant的使用方法,可以查閱Vagrant的官方文檔。

3.2 Vagrant常用指令

注意事項:由于預設情況下,Vagrant會把臨時檔案和Box檔案存放在使用者主目錄裡。如果Box檔案過大,會導緻占用過大空間,可以通過設定環境變量VAGRANT_HOME來設定Vagrant的主目錄路徑。Vagrant預設設定的主目錄為使用者主目錄的.vagrant.d檔案夾。本次實驗時把此環境變量設定為D:vagranthome,關于各個作業系統的環境變量的設定,請查閱相關文檔。

1. 基本指令

基礎指令總覽:

  • box add:導入box
  • box list:檢視box
  • box remove:删除box
  • init:初始化
  • up:啟動
  • status:檢視狀态
  • ssh:SSH連接配接
  • reload:重載
  • halt:關閉
  • suspend:暫停
  • destroy:删除

下面舉例說明這些指令的使用方法。

(1)導入Box

導入已經下載下傳的Box指令如下:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

/f/vagrant/box/centos-7.4-base.box表示Box的路徑位址,這是由于使用了Git Bash的路徑表示方法。如果使用CMD指令行,使用F:/vagrant/box/centos-7.4-base.box即可。此處使用的Box從第2章“實驗說明”中提供的百度雲盤連結上下載下傳。

(2)檢視Box

檢視可用的Box如下所示:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

(3)删除Box

删除不再使用的Box如下所示:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

(4)初始化

初始化虛拟機如下所示:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

檢視未被注釋配置檔案内容:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

(5)啟動

啟動虛拟機如下所示:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章
帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

(6)檢視狀态

檢視虛拟機狀态如下所示:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

(7)SSH連接配接

注意,如果Windows下使用Git Bash時無法使用SSH連接配接虛拟機,可以嘗試使用系統自己帶的指令行工具CMD連接配接虛拟機:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章
帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

(8)重新

當我們編輯目前檔案夾下的虛拟機配置檔案Vagrantfile後,可以使用reload指令重載虛拟機,使配置生效。比如添加設定主機名的配置:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

重載使配置檔案生效:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章
帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

(9)關閉

關閉虛拟機如下所示:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

(10)暫停

由于上一步驟關閉虛拟機,執行本步驟時需要先啟動虛拟機,然後再暫停虛拟機:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

(11)删除

删除虛拟機的指令如下所示:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章
  1. 使用虛拟機快照指令

    虛拟機快照指令如下:

  • save:儲存虛拟機快照。
  • list:檢視虛拟機快照。
  • restore:用快照恢複虛拟機。
  • delete:删除虛拟機快照。

進行如下快照的相關操作時,需要先建立虛拟機并啟動虛拟機。

儲存虛拟機快照示例:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

檢視虛拟機快照示例:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

用快照恢複虛拟機示例:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章
帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

删除虛拟機快照示例:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

3.3 模拟實驗時的場景

由于後續實驗時使用三台虛拟機進行實驗,在實驗時,不可避免地會使用Vagrant管理虛拟機環境,包括初始化建立虛拟機,啟動虛拟機,連接配接并登入到虛拟機環境,儲存實驗環境,以及快速恢複實驗環境等。本節會模拟後續實驗場景用到的步驟,友善你熟悉整個實驗環境管理的流程。

1. 初始化虛拟機叢集

(1)建立虛拟機配置檔案

建立名為istio的目錄,并把如下的配置檔案寫入istio目錄的Vagrantfile檔案:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章
帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

第5行表示建立三台虛拟機。

第7行表示使用名為"centos-7.4-base"的box。

第9行表示不自動生成新的ssh key,使用Vagrant預設的ssh key注入到虛拟機中,這麼做主要是為了友善登入。不用為每台虛拟機設定ssh key登入。

第10行設定3台虛拟機主機名分别為lab1、lab2、lab3。

第12行設定3台虛拟機的私有網絡為11.11.11.111、11.11.11.112、11.11.11.113。

第14~15行表示當虛拟機啟動完成之後,執行inline中配置的shell指令,此指令用于開機之後的時間同步。

第17~18行表示當虛拟機啟動完成之後,執行inline中配置的shell指令,此指令用于輸出測試字元串。

第21~22行設定虛拟機的CPU核心數和記憶體大小,本次實驗設定為每台虛拟機2核2G記憶體,可以根據自己電腦的實際情況适當加大。

上面的虛拟機叢集配置檔案,也是我們後續實驗時所使用的虛拟機環境配置檔案。

(2)啟動虛拟機叢集

如果啟動不成功,請調整上一步驟中配置檔案時CPU和Memery相關的配置。還需要確定虛拟機目錄D:virtualbox中沒有和此次實驗中建立的同名的虛拟機目錄(lab1、lab2、lab3)存在。代碼如下:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章
帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

(3)檢視虛拟機狀态

代碼如下:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

2. 連接配接虛拟機叢集

1)使用Xshell導入vagrant的密鑰。密鑰存儲在VAGRANT_HOME環境變量裡指定目錄的insecure_private_key檔案中,添加該密鑰到Xshell中。選擇頂部菜單中“工具”菜單的“使用者密鑰管理者”,在彈出的對話框中點選“導入”按鈕,選擇insecure_private_key檔案即可完成密鑰的導入,如圖3-1所示。

2)使用Xshell建立新的會話。

選擇頂部菜單中“檔案”菜單的“建立”,建立連接配接到三台虛拟機的會話。實驗中配置的三台虛拟機IP位址分别為11.11.11.111、11.11.11.112、11.11.11.113,ssh端口為22,如圖3-2所示。

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章
帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

認證方式選擇Public Key,使用者名為vagrant,使用者密鑰選擇insecure_private_key,如圖3-3所示。

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

3)Xshell連接配接測試。

測試結果如下所示,表明實驗環境建立正确,可以在Xshell繼續添加lab2、lab3虛拟機的SSH連接配接。

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章
帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

3. 暫停實驗環境虛拟機

當我們的實驗進行到一定步驟後,可能需要暫停,換個時間再次進行實驗。這個時候我們可以直接暫停整個實驗環境中的所有虛拟機,等下次再進行實驗時,直接恢複之前的環境即可,非常友善。

暫停叢集中所有虛拟機如下所示:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

暫停叢集中單個虛拟機如下所示:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

恢複叢集中所有虛拟機如下所示:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章
帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

恢複叢集中單個虛拟機,使用resume和up都能恢複暫停的虛拟機:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

4. 儲存與恢複實驗環境

完成前面的步驟後,我們的實驗虛拟機環境就已經基本搭建完成了。之後我們可以安裝Docker、Git、Wget等基礎軟體。安裝之後儲存實驗環境,之後實驗不成功或者實驗環境被污染,可以快速恢複到目前的實驗環境。

儲存叢集中所有虛拟機快照:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

儲存叢集中單個虛拟機快照:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

删除叢集中所有虛拟機快照:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

删除叢集中單個虛拟機快照:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

檢視叢集中所有虛拟機快照:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

檢視叢集中單個虛拟機快照:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

恢複叢集中所有虛拟機快照:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

恢複叢集中單個虛拟機快照:

帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章
帶你讀《Istio入門與實戰》之三:使用Vagrant管理虛拟機第3章

在使用Vagrant時,可能會出現偶發的異常錯誤,大部分情況下,重新開機電腦即可解決。

3.4 本章小結

通過使用Vagrant,我們可以更快速地建立Istio的實驗環境,這将大大節省我們建立實驗環境的時間。當我們的實驗環境被污染時,也可以使用Vagrant快速恢複到之前的實驗環境,這也使得我們可以重複驗證Istio功能,并節省了重複準備實驗環境的時間,大大提升了實驗效率。