vSphere Lab - Part 1 - 規畫及前置準備

Ⅰ. 虛擬機及網路規畫

在參考了這一系列的 Virtual Lab 文章後,作者很詳細的將自己的 Home Lab 規畫列表如下:

1. Virtual Machines:
    - Windows Server 2016 – Domain Controller
	- 2 x ESXi 6.5 Servers
	- VCSA Appliance
	- 2 x Server 2016 Hyper-V Hosts
	- FreeNAS (To provide Shared Storage)

2. Network Overview:
    - 192.168.100.x:VM Network
	- 192.168.101.x:Management
	- 192.168.102.x:Storage
	- 192.168.103.x:FT
	- 192.168.104.x:vMotion

覺得他的規劃相檔清楚有序,於是決定就以其規劃為藍本來建置自己的 MBP Lab。我的 MBP 是年初剛好在 Apple 官網上看到一批整修品,正好也要換機就直接敗一台的。基本配備如下:

  • MacBook Pro 15" 2017
  • 16GB RAM
  • Intel Core i7
  • 1TB SSD

不過在評估各 VM(虛擬機)的記憶體使用量時:

  • Windows Server 2016: 2GB
  • 2 x ESXi 6.5 Servers: 4GB x 2
  • VCSA Appliance: 10GB(這是官網上列出的最低需求)
  • 2 x Server 2016 Hyper-V Hosts: 2GB x 2
  • FreeNAS: 8GB(官網最新版列出的最低需求)

這麼一算下來,總共就需要至少 32GB 的實體記憶體才能同時啟動這些虛擬機?!

這可是有點麻煩了。畢竟我的 MBP 實體記憶體只有 16GB(事實上,目前 Apple 提供的 MBP 最高也只有到 16GB,更沒辦法自行擴充)。不過,後來倒是找到了可以讓虛擬機在超過的情形下仍能順利執行啟動的技巧(下述),所以最終還是決定依循這個架構為藍本來實作。

另外,在網段上的安排,考慮到須連外做 Update 或 Patch 的需要,所以我將 VM Network 這個網段再多設定了 NAT 的功能以便連通 Internet。餘則維持不變。

網域名稱(Domain Name)則訂為:vmlab.local

Ⅱ. 前置準備

VMware Fusion 設定

前面提到 VMware Fusion 如果同時執行多個虛擬機,但設定的加總量超過主機上的實體記憶體時,是會出現錯誤的警示訊息,並拒絕執行啟動。後來在上網搜尋後還是找到了可以克服的小技巧(VMware Fusion memory overcommit | Network Inferno),就是手動新增設定檔並設定一個參數值:

sudo vi /Library/Preferences/VMware\ Fusion/config

加上如下參數值:

prefvmx.minVmMemPct = 25

最後的數字代表可以保留在 Mac 主機上的記憶體百分比(%),餘則可以 swap 到硬碟上。例如我這邊設定 25 就是設定所有正在執行中的虛擬機可以保留 25% 在主記憶䯤,其餘 75% 則是有必要時就 swap 到硬碟上。這樣一來,就可以同時執行多個虛擬機,即使設定上的加總量超過了主機上的實體記憶體。當然,這是以空間換取效能的,代價就是可能導致 MBP 運作上頻繁的硬碟 I/O 及效能低落。

新增虛擬網路卡裝置

因為後面的虛擬機建置會用到五個獨立的網段,所以必須先在 VMware Fusion 上預先新增好五張虛擬網路卡裝置

  • 由 VMware Fusion 的功能表打開 Preference,選擇上方的 Network,點按左下方的鎖頭圖示開啟編輯權限。

新增虛擬網卡裝置

  • 再點選上方的 + 號按鈕新增虛擬網卡裝置。第一張虛擬網卡除了輸入網段資料外,因為要能 NAT 連外,所以還須多勾選上方的 Using NAT 選項。

新增第一張虛擬網卡裝置

  • 重覆上述過程,分別再新增另外四張虛擬網卡:
    • vmnet4 (192.168.101.0/24)
    • vmnet5 (192.168.102.0/24)
    • vmnet6 (192.168.103.0/24)
    • vmnet7 (192.168.104.0/24)

新增更多虛擬網卡裝置

■ 後記:

期間曾一度考慮將此架構做一些簡化及調整,雖然最終還是放棄,但還是留個簡單的思考過程記錄:
	
在閱讀完這系列的文章後,發現作者的 Windows Server 2016 – Domain Controller 似乎只是單純拿來當 DNS Server 用,並非是用到或整合 AD 的功能(或是我個人技術知識不足理解上有漏失)?所以有考慮先簡化成一個 DNS 的小 docker 來取代。

至於另外二台 Server 2016 Hyper-V Hosts,由於用途不明,所以我也暫先捨棄,日後若有需要再另作規畫實作。
	
在網段的規畫,我也再簡化成四個網段,就是所有虛擬機的主網卡(VM Network)都是採用 Bridged 的方式與 MBP Host 位於同網段:因為不管在公司或家裡,本來就都是 private network 在 Gateway(分享器)NAT 之後,即使啟動 VM 也不至於影響原本區網的正常運作,所以應該不須要再獨立切另一個 sub network 出來。不過後續如果在實作上發現真有必要,也是可以再做一次調整。

但原規畫的 Storage、FT(Fault Tolerance)以及 vMotion 等三個獨立的 sub network 就仍維持不變。