VM 環境搭建
前置要求
| 項目 | 需求 |
|---|---|
| Mac mini | Apple Silicon 或 Intel 皆可 |
| Multipass | 已安裝(brew install multipass) |
| 家用路由器 | 能設定 DHCP 保留或支援靜態 IP |
| 網段 | 192.168.50.0/24(你的家用網路) |
網路說明:VMs 需要使用橋接模式(Bridged Network)才能取得與 Mac 同網段的 IP(192.168.50.x),這樣 VIP
192.168.50.250才能在家用網路上被存取。
Step 1:確認 Mac mini 的網路介面
# 找出你的實體網路介面名稱
networksetup -listallhardwareports
輸出範例:
Hardware Port: Ethernet
Device: en0
...
Hardware Port: Wi-Fi
Device: en1
記下你的介面名稱(通常有線是
en0,Wi-Fi 是en1)。
Step 2:建立 Multipass 橋接網路
Multipass 在 macOS 需要指定網路介面才能做橋接。
# 查看 Multipass 可用的網路
multipass networks
輸出範例:
Name Type Description
en0 ethernet Ethernet Adapter (en0)
en1 wifi Wi-Fi (en1)
Step 3:建立 lb-master VM
multipass launch 22.04 \
--name lb-master \
--cpus 1 \
--memory 512M \
--disk 5G \
--network name=en0,mode=manual
mode=manual表示我們自己用 netplan 設定 IP,Multipass 不會自動分配。
Step 4:建立 lb-slave VM
multipass launch 22.04 \
--name lb-slave \
--cpus 1 \
--memory 512M \
--disk 5G \
--network name=en0,mode=manual
Step 5:設定 lb-master 固定 IP
# 進入 lb-master
multipass shell lb-master
在 VM 內執行:
# 查看目前的網路介面
ip addr show
輸出範例(找到第二張網卡,通常是 ens4 或 enp0s2):
1: lo: ...
2: ens3: ... ← 這是 Multipass 預設的 NAT 網卡
3: ens4: ... ← 這是我們加的橋接網卡(MAC 顯示但無 IP)
# 建立 netplan 設定
sudo nano /etc/netplan/60-static.yaml
貼入以下內容(ens4 請換成你實際看到的介面名稱):
network:
version: 2
ethernets:
ens4:
dhcp4: false
addresses:
- 192.168.50.211/24
routes:
- to: default
via: 192.168.50.1
nameservers:
addresses:
- 8.8.8.8
- 1.1.1.1
套用設定:
sudo netplan apply
# 驗證
ip addr show ens4
# 應該看到 192.168.50.211/24
Step 6:設定 lb-slave 固定 IP
# 在另一個終端進入 lb-slave
multipass shell lb-slave
在 VM 內執行:
sudo nano /etc/netplan/60-static.yaml
貼入(IP 改為 .212):
network:
version: 2
ethernets:
ens4:
dhcp4: false
addresses:
- 192.168.50.212/24
routes:
- to: default
via: 192.168.50.1
nameservers:
addresses:
- 8.8.8.8
- 1.1.1.1
sudo netplan apply
ip addr show ens4
# 應該看到 192.168.50.212/24
Step 7:驗證兩台 VM 互通
從 lb-master ping lb-slave:
# 在 lb-master 內
ping -c 3 192.168.50.212
從 lb-slave ping lb-master:
# 在 lb-slave 內
ping -c 3 192.168.50.211
從 Mac mini ping 兩台 VM:
# 在 Mac 終端
ping -c 3 192.168.50.211
ping -c 3 192.168.50.212
Step 8:安裝 Keepalived 和 HAProxy
在兩台 VM 都執行以下步驟:
sudo apt-get update
sudo apt-get install -y keepalived haproxy
確認版本:
keepalived --version
# Keepalived v2.x.x
haproxy -v
# HAProxy version 2.x.x
環境狀態確認
完成後的狀態應如下:
graph LR
subgraph MAC["Mac mini"]
subgraph NET["橋接網路 en0"]
M["lb-master<br/>192.168.50.211<br/>✅ keepalived 已裝<br/>✅ haproxy 已裝"]
S["lb-slave<br/>192.168.50.212<br/>✅ keepalived 已裝<br/>✅ haproxy 已裝"]
end
end
Router["家用路由器<br/>192.168.50.1"]
MAC --- Router