温馨提示×

centos里weblogic如何进行负载均衡

小樊
44
2025-12-11 21:10:43
栏目: 云计算

在 CentOS 上为 WebLogic 实现负载均衡

架构与准备

  • 组件与拓扑:准备至少 2 台 CentOS 7/8/9 服务器部署 WebLogic 12c/14c,建议至少 1 台管理服务器 + 2 台受管服务器 组成集群;另准备 1 台负载均衡器(Nginx/HAProxy 或硬件 F5/SLB)对外暴露 80/443
  • 基础环境:安装 JDK 8(WebLogic 14 常用),创建 weblogic 用户与目录,配置 /etc/profileJAVA_HOME/PATHsource /etc/profile 生效。
  • 网络与防火墙:开放管理端口(如 7001)、受管服务器端口(如 7002/7003)、负载均衡器端口(80/443),并放通回环与集群节点间通信。
  • 域名与证书:准备对外域名(如 app.example.com),TLS 证书用于 443 端口(可选)。

方式一 外部软件负载均衡 Nginx 或 HAProxy

  • 安装与启用
    • Nginx:sudo yum install -y epel-release && sudo yum install -y nginx && sudo systemctl enable --now nginx
    • HAProxy:sudo yum install -y haproxy && sudo systemctl enable --now haproxy
  • Nginx 示例(HTTP,轮询)
    • 配置 /etc/nginx/nginx.conf/etc/nginx/conf.d/weblogic.conf
      http {
        upstream weblogic_servers {
          server 10.0.0.11:7002;
          server 10.0.0.12:7003;
          # 可按需增加权重:server 10.0.0.13:7004 weight=2;
        }
      
        server {
          listen 80;
          server_name app.example.com;
      
          location / {
            proxy_pass http://weblogic_servers;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
          }
        }
      }
      
    • 校验并重载:sudo nginx -t && sudo systemctl reload nginx
  • HAProxy 示例(HTTP,轮询 + 健康检查)
    • 配置 /etc/haproxy/haproxy.cfg
      global
        log /dev/log local0
        log /dev/log local1 notice
        maxconn 4096
      
      defaults
        log global
        mode http
        option httplog
        option dontlognull
        retries 3
        timeout http-request 10s
        timeout connect 10s
        timeout client  1m
        timeout server  1m
      
      frontend http-in
        bind *:80
        default_backend weblogic_servers
      
      backend weblogic_servers
        balance roundrobin
        server s1 10.0.0.11:7002 check
        server s2 10.0.0.12:7003 check
      
    • 校验并重载:sudo haproxy -c -f /etc/haproxy/haproxy.cfg && sudo systemctl reload haproxy
  • 说明:Nginx/HAProxy 负责连接转发与会话保持(如基于 cookie/源地址),健康检查自动摘除异常节点。

方式二 WebLogic 集群与会话保持

  • 创建集群与受管服务器
    • 使用 WLST 或管理控制台创建域、集群与受管服务器,示例(WLST 片段):
      readTemplateForUpdate('/opt/weblogic/oracle/middleware/wlserver/common/templates/wls/wls.jar')
      cd('Servers/AdminServer')
      set('ListenAddress','')
      set('ListenPort', 7001)
      cd('/')
      cd('Security/base_domain/User/weblogic')
      cmo.setPassword('YourStrongPwd!')
      set('OverwriteDomain', 'true')
      writeDomain('/opt/weblogic/oracle/middleware/user_projects/domains/base_domain')
      closeTemplate()
      exit()
      
    • 在管理控制台将受管服务器加入同一 Cluster,分别配置各自的 ListenAddress/ListenPort(如 7002/7003)。
  • 会话保持
    • 应用启用 WebLogic Server Affinity(会话亲和):在应用的 weblogic.xml 中设置 <session-descriptor><persistent-store-type>replicated</persistent-store-type></session-descriptor><session-descriptor><url-rewriting-enabled>true</url-rewriting-enabled></session-descriptor>,确保同一会话优先落到同一受管服务器。
    • 若使用外部负载均衡器,可开启 源地址哈希基于 cookie 的会话保持 作为补充。
  • 启动顺序:先启动 AdminServer(7001),再启动各 Managed Server(7002/7003),在控制台确认集群成员 Health=OK

验证与常见问题

  • 健康检查与分发验证
    • 访问 http://app.example.com 多次,观察返回内容或后端日志,确认请求在 7002/7003 之间轮询分发。
    • 停止某台受管服务器,验证 Nginx/HAProxy 是否自动摘除并在恢复后重新加入。
  • 会话保持验证
    • 登录应用后获取 JSESSIONID,刷新或新开浏览器标签重复访问,确认会话不丢失(同一实例处理)。
  • 常见问题
    • 应用上下文路径错误:确认负载均衡器转发到受管服务器的正确 Context Root
    • 静态资源 404:若静态资源由 WebLogic 托管,保持路径一致;若由 Nginx 托管,配置静态资源 location 直接服务。
    • 防火墙/SELinux:确保放行 7001/7002/7003/80/443 与回环通信。
    • 日志排查:/var/log/nginx/access.log/var/log/haproxy.log$DOMAIN_HOME/servers/<server>/logs/*.log

0