同一 Tomcat + 應用,在 OpenStack 虛擬機 (機器1-3) 正常,在 VMWare 虛擬機 (機器4) 啟動成功但功能服務加載失敗。
| 維度 | OpenStack (KVM/QEMU) | VMWare (ESXi) | 影響 |
|---|---|---|---|
| 虛擬化類型 | 完全虛擬化 | 半虛擬化/硬件輔助 | CPU 指令集暴露差異、時鐘源 |
| 網絡模型 | Neutron (OVS/Linux Bridge) | vSwitch / DVS | MTU、VLAN、安全組規則不同 |
| 存儲後端 | Ceph/RBD、LVM、NFS | VMFS、vSAN、NFS | I/O 延遲、鎖機制、磁盤調度 |
| 硬件抽象 | 模擬設備 | 準原生設備 | 驅動加載順序、設備路徑差異 |
/etc/hosts、DNS 配置是否一致,服務間調用是否依賴主機名。./logs、../conf 在不同工作目錄下解析不同。/data vs /mnt/data,配置文件硬編碼路徑失效。tomcat 在 VMWare 中 UID/GID 不同,導致文件讀寫失敗。JAVA_HOME、CATALINA_BASE、CATALINA_HOME 是否一致。setenv.sh 中 JVM 參數:-Djava.rmi.server.hostname、-Dcom.sun.management.jmxremote 等依賴 IP 的參數。application.yml 中數據庫、Redis、註冊中心地址是否為內網 IP/域名。chronyd/ntpd,時間漂移導致 Token 過期、分布式鎖失效、日誌時間混亂。timedatectl status、hwclock 對比。.so 文件是否隨應用打包,或依賴宿主機安裝(如 libfontconfig、libfreetype)。catalina.out、應用日誌 ERROR 級別堆棧跟蹤。netstat -tlnp、ss -tlnp 端口監聽情況。-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005,IDE 連接斷點調試。「程序完全相同」不代表「運行環境相同」。重點排查網絡 MTU/安全組、文件路徑掛載、時鐘同步、本地庫依賴四大隱性差異,可解決 90% 跨平台部署異常。