Ubuntu环境下的WebLogic集群负载均衡策略
一、策略总览
- 面向不同对象,WebLogic在集群中的负载均衡可分为以下几类:
- HTTP 层(Servlets/JSP):由WebLogic Proxy Plug-in或外部硬件/软件负载均衡器分发请求。
- EJB 与 RMI 对象:由WebLogic RMI/T3 客户端路由与集群的负载算法决定目标实例。
- JMS 消息:通过连接工厂目标与JMS 服务器/目标的负载均衡策略实现。
- JDBC 连接:由多数据源与连接池目标的负载均衡策略实现。
- 说明:操作系统为Ubuntu并不影响策略类型与行为,策略由WebLogic与所配负载均衡器决定。
二、HTTP 层策略
- WebLogic Proxy Plug-in(如 Apache httpd、IIS、Netscape 插件或内置的 HttpClusterServlet)
- 分发方式:默认采用**轮询(Round Robin)**将请求分发到集群中的托管服务器。
- 会话亲和:插件具备会话故障转移能力,可在实例失效时定位到会话副本,保障可用性。
- 外部负载均衡器(硬件或软件如 F5、Nginx、HAProxy)
- 分发方式:可使用轮询、加权轮询、最少连接、基于响应时间/权重等算法。
- 会话亲和:需支持被动/主动 Cookie 持久化与SSL 持久化,以确保同一会话的请求落到同一实例,避免会话撕裂。
三、EJB 与 RMI 对象策略
- 客户端路由:WebLogic RMI/T3 客户端通过集群地址列表解析并连接到集群成员,支持自动故障转移到可用实例。
- 负载算法(集群级配置):可为集群设置默认负载算法,常见包括:
- 轮询(Round Robin):默认算法,按顺序分发请求。
- 随机(Random):按随机策略选择实例。
- 基于权重(Weighted):按权重分配,通常倾向负载较低的实例。
- 配置入口:管理控制台中进入Clusters → 目标集群 → Default Load Algorithm进行设置。
四、JMS 与 JDBC 的负载均衡策略
- JMS
- 连接工厂目标:为JMS Connection Factory配置目标(Target)为集群或一组 JMS 服务器,客户端获取连接时按目标内的可用成员进行负载均衡。
- 消息转发与持久化:通过JMS Server/目标在多实例间分布与故障转移,具体策略取决于目标类型与配置(如分布式队列/主题)。
- JDBC
- 多数据源(Multi Data Source):配置目标为集群成员或一组 JDBC 数据源,按算法(如轮询、故障转移等)分发连接请求,实现读写或读操作的负载均衡与高可用。
五、在 Ubuntu 上的常见实现方式
- 使用 WebLogic Proxy Plug-in
- 在 Apache httpd 中启用 WebLogic 插件,或通过内置 HttpClusterServlet部署轻量代理,将 HTTP 请求按轮询分发到后端托管服务器,并配合会话复制实现故障转移。
- 使用 Nginx 作为反向代理/负载均衡器
- 示例 upstream 配置:
- upstream weblogic_cluster { server weblogic1:7001; server weblogic2:7001; }
- 在 server 段 proxy_pass 到 http://weblogic_cluster,并设置 X-Real-IP、X-Forwarded-For、X-Forwarded-Proto 等头信息;按需启用加权轮询/最少连接等算法。
- 会话保持要点
- 使用外部负载均衡器时,开启Cookie 持久化或SSL 会话持久化;使用插件时依赖其会话故障转移机制。