背景動機
企業部門數百台 PC 長期閒置 (CPU 使用率 1-2%),卻採購昂貴多 CPU 伺服器編譯/模擬。利用現有閒置算力組建叢集,實現負載智能遷移,極大提升資源利用率。
叢集分類與適用性
| 類型 | 特徵 | 適用場景 |
| 容錯叢集 | 雙機熱備 + 心跳線,單機故障秒級切換 | 關鍵業務 (雷達追蹤、金融核心) |
| 負載平衡叢集 | 多節點分發 Web/Proxy 請求,檢查節點忙閒 | 高併發 Web 服務 |
| 高效能運算叢集 (HPC) | 大規模平行運算,資料/程式可分 | 科學計算、渲染、基因分析、編譯加速 |
本文採用 **HPC 模式**,選用 **MOSIX** (核心層行程遷移、對用戶透明、無需修改程式) + **LTSP** (無盤節點快速部署)。
硬體規劃 (24 節點範例)
- 49U 機櫃:1U 24埠 100Mbps 交換器 + 24x 2U 機架伺服器
- 節點:P4 2GHz / 1GB DDR / Intel 845D / 軟碟 / 3C905B 網卡
- 閘道器:雙網卡 (外網 10.193.15.169 / 內網 192.168.0.254) + 光碟 + 80GB 硬碟
- 5 類線 3m x 24
軟體環境 (Red Hat 7.2 基準)
- 核心套件:kernel-source, glibc-devel, gcc, make, ncurses-devel 等 (安裝時勾選「軟體開發」與「核心開發」)
- MOSIX 1.6.0 / MOSIX 核心補丁 / openMosix 分支 (rpm 版更簡單)
- LTSP 核心套件:ltsp_core, ltsp_kernel, ltsp_floppyd, ltsp_initrd_kit
- DHCP 3.0.1+ (支援 PXE/BOOTP)、mknbi (啟動映像製作)
網路拓撲
- 閘道外網卡:10.193.15.169/24 (接企業 LAN)
- 閘道內網卡:192.168.0.254/24 (叢集專用網段)
- DHCP 範圍:192.168.0.100-253 (動態) + 靜態保留 .1-.99
- 閘道同時為:DHCP Server、NFS Server (根檔案系統)、LTSP Server、MOSIX 節點 #1
關鍵部署里程碑
- **安裝 Red Hat 7.2 閘道器** → 升級修補 (勿升級核心) → 驗證雙網卡路由。
- **編譯 MOSIX 核心** (或安裝 openMosix rpm):
- 套用補丁 →
make menuconfig 勾選 MOSIX 選項 (行程遷移、DFS、MFS) + RAM disk + initrd + 網路自動配置 (DHCP/BOOTP) + NFS 根檔案系統 → 移除 SCSI/音效 → 編譯安裝 → 修正 grub.conf 核心路徑 → 重啟驗證。
- **配置 mosix.map**:節點 IP 對應編號 (閘道=1, 節點 2-254)。
- **建立 LTSP 無盤啟動映像**:
ltsp_initrd_kit 製作 initrd → vmlinuz-openmosix → dhcpd.conf 指定啟動核心 + 動態主機名 nodeXXX。
- **客戶端根檔案系統準備** (
/opt/ltsp/i386):
- 複製模組、工具 (
setpe, mosrun, mosmon, migrate)、hosts、fstab (掛載 /mfs)、rc.local (啟動 openmosix + 掛載 mfs)。
- **啟用關鍵服務**:
tftp, dhcpd, nfs, xinetd。
- **節點啟動驗證**:PXE/軟碟啟動 → 取得 IP → 載入核心 → 掛載根檔案系統 → 自動主機名 → openmosix 初始化 → 加入叢集。
- **測試行程遷移**:
mosrun -j1-3 /mfs/1/dw/setiathome -nolock 分發計算到節點 1-3。
核心配置檔範本
/etc/mosix.map
1 192.168.0.254
2 192.168.0.1
...
253 192.168.0.253
/etc/dhcpd.conf 關鍵段
filename "/lts/vmlinuz-openmosix";
option host-name = concat("node", binary-to-ascii(10, 8, "", substring(reverse(1, leased-address), 0, 1)));
/etc/exports
/opt/ltsp/i386 192.168.0.0/24 (ro,no_root_squash)
/var/opt/ltsp/swapfiles 192.168.0.0/24 (rw,no_root_squash)
常見問題排查
- 核心編譯失敗 → 移除 SCSI/SiS 支援、
make mrproper 清理中間檔。
- DHCP 不讀配置 → 確認版本 ≥ 3.0.1、語法正確。
- sshd 載入失敗 → 啟用
sshd.pre-mosix。
- Host name lookup failure → 修正
/etc/hosts。
- setpe 錯誤 "my IP not in table" →
hosts 分開 127.0.0.1 localhost 與實際 IP。
- LTSP 啟動映像製作失敗 → 使用
ltsp_initrd_kit-3.0.1 + mknbi-1.2-6。
現代替代方案 (2024+): Kubernetes + KubeVirt / Slurm + Munge / Apache YARN / Ray / Dask 等容器化/排程器方案取代 MOSIX/LTSP;硬體層面採用 PXE + iPXE + systemd-networkd + NFS/overlayfs 無盤啟動;網路升級至 10/25/100GbE + RDMA/RoCE。