遷移動機:虛擬機模式痛點
- 資源浪費:每 VM 需完整 OS、TCP 棧、檔案系統,Hypervisor 開銷大
- 彈性不足:記憶體固定分配,擴容需重啟或新增 VM
- 隔離缺失:同 VM 內實例互相干擾,無法混部不同應用
- 擴容顆粒度粗:需整台 VM 為單位,無法單獨增加 Managed Server
- 可移植性差:綁定特定虛擬化平台,雲遷移困難
- CI/CD 慢:VM 模板打包、分發耗時
WebLogic 傳統架構
- Administration Server:集群管理中樞,配置分發
- Node Manager:各 VM 上的代理,負責啟動/停止 Managed Server
- Managed Server:實際運行應用(WebApp、EJB、WebService)
擴容流程:新增 VM → 啟動 Node Manager → 連接 Admin Server → 新增 Managed Server
容器化分解策略
核心原則
- 每個實例獨立容器:Admin Server、各 Managed Server 各自一個容器
- 移除 Node Manager:由容器編排平台(Kubernetes/Docker Swarm)+ WLST 腳本代管生命週期
- 共享儲存掛載 domain home,實現配置一致性
簡化後叢集架構
+------------------+
| Admin Server | (單副本,或 HA 部署)
| (容器) |
+--------+---------+
|
| WLST / REST API
v
+--------+---------+ +--------+---------+ +--------+---------+
| Managed Server 1 | | Managed Server 2 | | Managed Server N |
| (容器) | | (容器) | | (容器) |
+------------------+ +------------------+ +------------------+
遷移具體步驟
- 準備鏡像:從 Oracle 官方倉庫獲取 WebLogic 基礎鏡像,或自建含 JDK、Domain 模板的鏡像
- 定義 Domain:使用 WLST 離線模式建立 Domain 配置,輸出為映像層或 ConfigMap
- 建立叢集資源:
- Kubernetes: StatefulSet (Admin) + Deployment (Managed) + Service + PersistentVolume
- Docker Swarm: Service + Config + Secret + Volume
- 配置自動擴縮:HPA 基於 CPU/記憶體/自定義指標觸發 Managed Server 擴縮容
- 網路與服務發現:Headless Service 提供穩定 DNS,Admin Server 透過 DNS 發現 Managed Server
- 資料層外掛:資料庫、JMS、檔案儲存全部外掛為獨立服務
容器化帶來的收益
| 維度 | 虛擬機模式 | 容器模式 |
| 啟動時間 | 分鐘級 | 秒級 |
| 擴容顆粒度 | 整台 VM | 單一 Managed Server |
| 資源利用率 | 30-50% | 70-90% |
| 遷移攜帶性 | 綁定 Hypervisor | 標準 OCI 鏡像,任意平台 |
| CI/CD 速度 | 慢(模板更新) | 快(鏡像分層、並行建構) |
| 故障隔離 | VM 級 | 容器級,互不影響 |
關鍵挑戰與對策
- Session 複寫:配置 In-Memory Replication 或外掛 Redis/Database
- 授權模式:確認 Oracle 授權支援容器化部署(Named User Plus / Processor)
- 持久化儲存:Domain Home、Transaction Logs 需掛載高可用儲存(NFS/CSI)
- 網路延遲:叢集間通訊建議同可用區、啟用 Pod 親和性