Linux 上搭建 WebLogic 集群的标准流程
一 架构与前置条件
- 许可与版本:集群功能需要WebLogic Server 集群许可;各节点需安装相同版本的 WebLogic。生产环境建议使用受管服务器(Managed Server)分布在不同主机,管理服务器(AdminServer)可独立或与应用同机。
- 网络要求:所有节点需有静态 IP,并位于同一LAN;集群依赖**IP 多播(UDP)**进行发现与通信,尽量避免跨防火墙部署;跨子网/WAN 场景需额外网络设计与验证。
- 共享存储:为简化配置与一致性,建议使用共享文件系统(如 NFS)存放域与共享对象;若使用共享存储,需配置冗余/RAID等机制避免单点故障。
- 负载均衡:可选择 WebLogic 内置负载均衡、第三方硬件/软件负载均衡器,或在 Web 层部署 HTTP Server + WebLogic 代理插件进行转发。
二 环境准备与安装
- 主机与用户:准备两台及以上 Linux 主机(示例:server1、server2),创建专用用户(如 weblogic)与目录(如 /app/weblogic),并统一 JDK(建议 JDK 8 或受支持版本)。
- 安装 WebLogic(静默安装示例):
- 准备响应文件与清单文件(如 wls.rsp、oraInst.loc),执行:
java -jar fmw_12.2.1.3.0_wls.jar -silent -responseFile /app/weblogic/wls.rsp -invPtrLoc /app/weblogic/oraInst.loc
- 目录与权限:确保安装目录与域目录归属 weblogic 用户,便于后续启停与自动登录。
三 创建域与集群(WLST 示例)
- 在主控机进入 WLST:
$WL_HOME/common/bin/wlst.sh
- 典型脚本(按实际 IP/端口调整):
readTemplate(‘/u01/oracle/wlserver/common/templates/wls/wls.jar’)
set(‘AdminServerName’,‘AdminServer’)
set(‘Name’,‘my_domain’)
set(‘ProductionModeEnabled’,‘true’)
cd(‘/Server/AdminServer’)
set(‘ListenAddress’,‘192.168.1.10’)
set(‘ListenPort’,7001)
cd(‘/’)
创建集群
create(‘my_cluster’,‘Cluster’)
在 server1 上创建受管服务器 ms1
create(‘ms1’,‘Server’)
cd(‘/Server/ms1’)
set(‘ListenAddress’,‘192.168.1.10’)
set(‘ListenPort’,7003)
assign(‘Server’,‘ms1’,‘my_cluster’)
在 server2 上创建受管服务器 ms2
create(‘ms2’,‘Server’)
cd(‘/Server/ms2’)
set(‘ListenAddress’,‘192.168.1.11’)
set(‘ListenPort’,7003)
assign(‘Server’,‘ms2’,‘my_cluster’)
可选:创建计算机对象(便于按主机管理)
create(‘machine1’,‘Machine’)
assign(‘Server’,‘ms1’,‘machine1’)
create(‘machine2’,‘Machine’)
assign(‘Server’,‘ms2’,‘machine2’)
写入域并退出
writeDomain(‘/app/weblogic/user_projects/domains/my_domain’)
exit()
- 将生成的域目录同步到 server2(如使用 rsync/scp),保持 域目录结构一致。
四 启动与组网
- 启动顺序建议:先启动 AdminServer,再启动各受管服务器。
- 方式一(命令行,推荐):
- server1:
nohup ./startWebLogic.sh &
nohup ./startManagedWebLogic.sh ms1 http://192.168.1.10:7001 &
- server2:
nohup ./startManagedWebLogic.sh ms2 http://192.168.1.10:7001 &
- 方式二(节点管理器 Node Manager,可选):
- 在各节点启动 NM:
./startNodeManager.sh
- 通过控制台或 WLST 将 ms1/ms2 的“节点管理器”配置为对应主机与端口,然后在控制台远程启动受管服务器。
- 验证:
- 控制台查看:环境 > 服务器 状态为 RUNNING;集群页显示 ms1、ms2 已加入 my_cluster。
- 日志:检查 AdminServer.log、ms1.log、ms2.log 无异常。
五 负载均衡与会话保持
- 前置检查:确保集群内各实例间网络互通,且未被防火墙阻断多播;跨机房/跨域需评估多播可达性与延迟。
- 方案 A(Web 层代理 + 插件):在 DMZ 部署 Apache HTTP Server + WebLogic Proxy Plug-In,将应用以“集群目标”发布,由插件完成负载分发与会话粘滞(Sticky Session)。
- 方案 B(内置/第三方负载均衡):使用 WebLogic 内置负载均衡或 F5/NGINX 等,将请求分发至各受管服务器。
- 会话保持策略:
- 无状态应用:优先使用无状态会话复制(如应用层无状态设计)。
- 有状态应用:启用 In-Memory Session Replication(需确保会话可序列化),或使用 JDBC Session Persistence(数据库存储会话,可靠性更高但性能略低)。
- 部署与测试:将应用以“集群部署”方式发布,使用压力工具与故障演练(停一台受管服务器)验证会话保持与故障转移。