CentOS 上 WebLogic 高可用部署与配置
一 架构与前置条件
- 拓扑建议:至少准备3台 CentOS 7/8服务器(1台 AdminServer + 多台 Managed Server),同一 LAN 互通;每台服务器使用静态 IP,避免 DHCP;集群内通信依赖 IP 多播,需规划并避免地址冲突;生产环境不建议用共享文件系统 + 单一安装目录运行多机实例,避免单点竞争与故障风险;获取集群许可,并为每个实例准备唯一 IP(同一主机运行多实例时亦需多个 IP)。
- 系统与网络:更新系统(yum update -y),开放必要端口(如 7001/7002/8001 等),视情况处理 SELinux 或放行策略,确保节点间与管理端互通。
- 软件与用户:安装与 WebLogic 版本匹配的 JDK 8/11,创建 weblogic 用户与组并配置环境变量(JAVA_HOME、PATH)。
二 安装与创建域
- 安装 JDK(示例):
- rpm -ivh jdk-8u391-linux-x64.rpm
- echo ‘export JAVA_HOME=/usr/java/jdk1.8.0_391’ >> /home/weblogic/.bash_profile
- echo ‘export PATH=$JAVA_HOME/bin:$PATH’ >> /home/weblogic/.bash_profile
- source /home/weblogic/.bash_profile && java -version
- 安装 WebLogic(示例):
- su - weblogic
- mkdir -p /opt/weblogic
- unzip /tmp/wls12c_generic.jar -d /opt/weblogic
- chown -R weblogic:weblogic /opt/weblogic
- 创建域:
- cd /opt/weblogic/Oracle/Middleware/wlserver/common/bin
- ./config.sh(选择“典型配置”,设置域名称、管理员账号、JDK 路径等)
- 可选静默安装(示例):准备 oraInst.loc 与 wls.rsp,执行 java -jar fmw_14.1.1.0.0_wls_lite_generic.jar -silent -responseFile … -invPtrLoc …。
三 配置 WebLogic 集群
- 控制台创建集群与受管服务器:
- 访问 http://:7001/console,导航“环境 → 集群 → 新建”,输入集群名称(如 mycluster),选择模式(生产/开发);
- 导航“环境 → 服务器 → 新建”,添加受管服务器(如 managed1/managed2),配置监听地址与端口(如 8001),并加入集群;
- 在集群配置中设置集群地址(生产环境建议使用DNS 名称映射到各受管服务器地址,且各实例监听端口相同;开发/测试可用“DNS:port,DNS:port”列表);
- 规划多播地址与端口(范围 224.0.0.0–239.255.255.255,如 7777),确保不与其它集群/程序冲突;
- 注意:Administration Server 不应加入集群,其地址不要包含在集群 DNS 名称中。
- 会话与故障转移:
- 在受管服务器“配置 → 集群”中设置复制组,启用HTTP 会话复制(小规模可用“内存中复制”,大规模建议“JDBC 存储”);
- 对 JMS 服务器、JTA 事务恢复服务等配置可迁移目标(Migratable Targets),实现服务故障自动迁移;
- 数据层使用**共享存储(SAN/NAS)**或数据库集群(如 Oracle RAC)确保一致性。
四 负载均衡与前端接入
- 软件负载均衡(Nginx 示例):
- 安装:yum install -y epel-release && yum install -y nginx && systemctl enable --now nginx
- 配置 /etc/nginx/nginx.conf:
- upstream weblogic_cluster { server <ms1_ip>:8001; server <ms2_ip>:8001; }
- server { listen 80; server_name yourdomain.com; location / { proxy_pass http://weblogic_cluster; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }
- 重启:systemctl restart nginx;开源版 Nginx 可用外部脚本/插件实现健康检查。
- WebLogic 代理插件:在 Web 层部署 WebLogic Proxy Plug-In 或 HttpClusterServlet,将请求转发至集群;示例 web.xml 片段:
- HttpClusterServlet weblogic.servlet.proxy.HttpClusterServlet
- WebLogicCluster host1:8001|host2:8001
- 高可用增强:可用 Keepalived + Nginx 提供VIP 双机热备,主备切换后业务不中断。
五 启动与验证及运维要点
- 启动顺序:
- 管理服务器:/opt/weblogic/user_projects/domains//bin/startWebLogic.sh
- 受管服务器:/opt/weblogic/user_projects/domains//bin/startManagedWebLogic.sh <server_name> http://<admin_ip>:7001
- 或使用 Node Manager:在受管节点执行 nmEnroll 注册域,启动 Node Manager 后通过控制台/WLST 启停受管服务器。
- 验证:
- 控制台“Servers/Clusters”查看实例状态为 Running;
- 访问前端域名或 /console,多次刷新观察请求分发;
- 停止某受管服务器,验证会话保持/故障转移是否生效。
- 监控与维护:
- 控制台“监控 → 集群”查看健康与负载;集成 Prometheus + Grafana 采集指标与告警;
- 日志路径:AdminServer 日志(…/servers/AdminServer/logs/AdminServer.log),受管服务器日志(…/servers//logs/.log);使用 logrotate 归档;
- 备份恢复:定期打包域目录(tar -czvf domain_backup.tar.gz ),并演练恢复流程。