首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >『学习笔记』WebLogic Server 与 Docker 的整合与部署指南

『学习笔记』WebLogic Server 与 Docker 的整合与部署指南

原创
作者头像
二一年冬末
发布2024-11-22 11:49:37
发布2024-11-22 11:49:37
1.2K0
举报
文章被收录于专栏:活动活动

🎈今日推荐——https://cloud.tencent.com/developer/article/2469205

深入浅出JVM(十三)之垃圾回收算法细节——这篇文章深入探讨了JVM垃圾回收算法的细节,包括STW(Stop The World)、根节点枚举、安全点与安全区域、记忆集与卡表以及写屏障。文章解释了为何需要STW以确保垃圾回收的一致性,如何通过OopMap减少STW时间,以及如何使用安全点和安全区域来减少用户线程停顿。此外,还讨论了跨代引用问题及其解决方案,以及写屏障在维护卡表状态中的作用。


随着云原生技术的快速发展,使用容器化技术来部署传统中间件系统已经成为企业 IT 架构的主流趋势之一。Docker 作为容器化技术的领军者,通过其轻量化的隔离机制,使得应用程序和服务能够以更高的效率进行部署和管理。WebLogic Server 是 Oracle 提供的企业级 Java 应用服务器,与 Docker 的结合可以显著提升其在微服务架构中的灵活性和扩展性。

传统架构的挑战

企业级应用通常基于 WebLogic Server 部署在物理机或虚拟机上,面临以下问题:

序号

挑战类别

描述

1

环境不一致

开发、测试和生产环境难以完全统一。

2

资源浪费

虚拟机往往需要预分配资源,导致浪费。

3

维护成本高

升级或迁移应用时需要重新配置环境。

容器化的优势

使用 Docker 来运行 WebLogic Server,可以解决上述问题:

序号

优势类别

描述

1

环境一致性

容器内运行的环境可以完全一致。

2

高效部署

镜像化的 WebLogic Server 可以在不同主机上快速启动。

3

资源高效利用

容器支持动态分配和资源隔离,避免资源浪费。

  • WebLogic 与 Docker 的发展

时间节点

发展历程

2016

Oracle 开始支持 WebLogic Server 的 Docker 镜像。

2018

WebLogic 镜像正式支持 Kubernetes 平台。

2020

Oracle 提供官方 WebLogic 镜像构建工具。

2022

WebLogic Server 镜像支持更多 OCI 特性,如 Helm。

Docker 技术的成熟与 WebLogic Server 的整合,使得在容器化环境中运行企业级应用变得更加可靠。


WebLogic Server 与 Docker 的整合流程

在本文中,我们以 WebLogic Server 12.2.1.4 的安装为例,展示如何在 Docker 容器中构建、运行和管理 WebLogic Server。

环境准备

环境需求

描述

操作系统

支持 Docker 的 Linux/Windows/macOS 系统

Docker 版本

20.10 或更高版本

WebLogic 安装包

下载 Oracle 官方 WebLogic 安装包

Oracle JDK

安装 Oracle JDK 8 或更高版本

Dockerfile 模板

官方提供的 Dockerfile 模板

整合流程概述

序号

流程步骤

描述

1

构建 WebLogic 容器镜像

需要通过 Dockerfile 构建 WebLogic Server 的容器镜像。

2

配置 WebLogic 容器

通过配置文件(如 domain.propertiesconfig.xml)来定义 WebLogic Server 的域和实例。

3

运行 WebLogic 容器

使用 Docker 命令启动 WebLogic 容器,并验证其运行状态。


Dockerfile 与镜像构建

I. 下载必要资源

  1. 前往 Oracle 官方网站 下载 WebLogic Server 安装包。
    • 文件名示例:fmw_12.2.1.4.0_wls_lite_Disk1_1of1.zip
  2. 下载 Oracle JDK,并安装到主机上。

II. 编写 Dockerfile

以下是一个标准的 Dockerfile,用于构建 WebLogic 容器镜像:

代码语言:dockerfile
复制
# 使用官方基础镜像
FROM oraclelinux:7-slim

# 设置环境变量
ENV JAVA_HOME=/u01/java \
    PATH=$JAVA_HOME/bin:$PATH \
    DOMAIN_HOME=/u01/oracle/user_projects/domains/base_domain

# 复制必要文件
COPY jdk-8u281-linux-x64.tar.gz /u01/
COPY fmw_12.2.1.4.0_wls_lite_Disk1_1of1.zip /u01/

# 安装 JDK 和 WebLogic
RUN mkdir -p /u01 && \
    tar -xzf /u01/jdk-8u281-linux-x64.tar.gz -C /u01 && \
    unzip -q /u01/fmw_12.2.1.4.0_wls_lite_Disk1_1of1.zip -d /u01 && \
    java -jar /u01/fmw_12.2.1.4.0_wls_lite.jar -silent -responseFile /u01/response.txt

# 暴露 WebLogic 管理端口
EXPOSE 7001 9001

# 启动 WebLogic 服务
CMD ["/u01/oracle/startWebLogic.sh"]

III. 构建镜像

使用以下命令构建 WebLogic 容器镜像:

代码语言:bash
复制
$ docker build -t weblogic:12.2.1.4 .

配置与运行 WebLogic 容器

I. 配置域和服务

为了在容器中运行 WebLogic Server,需要创建域并配置管理服务器和受管服务器。

  • 配置域属性文件

创建 domain.properties 文件,内容如下:

代码语言:properties
复制
username=weblogic
password=weblogic123
domainName=base_domain
  • 配置 WebLogic 域

通过容器运行时脚本(如 createDomain.sh)自动化创建域:

代码语言:bash
复制
#!/bin/bash
# 创建 WebLogic 域的脚本

/u01/oracle/oracle_common/common/bin/wlst.sh <<EOF
readTemplate('/u01/oracle/wlserver/common/templates/wls/wls.jar')
cd('Servers/AdminServer')
set('ListenAddress','')
set('ListenPort',7001)
cd('/')
cd('Security/base_domain/User/weblogic')
cmo.setPassword('weblogic123')
writeDomain('/u01/oracle/user_projects/domains/base_domain')
closeTemplate()
exit()
EOF

将此脚本保存为 createDomain.sh 并添加到镜像中。

II. 运行 WebLogic 容器

通过以下命令运行 WebLogic 容器:

代码语言:bash
复制
$ docker run -d --name weblogic_server \
    -p 7001:7001 -p 9001:9001 \
    -v /path/to/domain.properties:/u01/oracle/domain.properties \
    weblogic:12.2.1.4

实例分析与优化建议

在容器化 WebLogic Server 的实际应用场景中,通过合理的部署架构和优化配置,可以显著提升系统的稳定性和运行效率。本节通过实际案例,深入展示如何在容器化环境中配置多容器架构实现负载均衡,以及集中化日志管理的最佳实践。

I. 多容器部署与负载均衡

背景:企业应用需要高可用性和扩展性,为此可以部署多个 WebLogic Server 实例,通过负载均衡器分发请求,确保在某个实例出现故障时其他实例能够无缝接管流量。Docker Compose 是一种便捷的工具,可以用来定义和运行多个容器服务,适合用于快速搭建 WebLogic 多实例架构。

  • Docker Compose 配置示例

以下 docker-compose.yml 文件定义了一个 WebLogic 管理服务器(Admin Server)和两个受管服务器(Managed Servers)的集群架构:

代码语言:yaml
复制
version: '3.7'
services:
  admin_server:
    image: weblogic:12.2.1.4
    container_name: admin_server
    ports:
      - "7001:7001"
    environment:
      - DOMAIN_NAME=base_domain
      - ADMIN_USERNAME=weblogic
      - ADMIN_PASSWORD=weblogic123
    volumes:
      - ./admin_server_logs:/u01/oracle/logs
    networks:
      - weblogic_network

  managed_server1:
    image: weblogic:12.2.1.4
    container_name: managed_server1
    environment:
      - DOMAIN_NAME=base_domain
      - MANAGED_SERVER_NAME=ms1
    ports:
      - "8001:8001"
    depends_on:
      - admin_server
    networks:
      - weblogic_network

  managed_server2:
    image: weblogic:12.2.1.4
    container_name: managed_server2
    environment:
      - DOMAIN_NAME=base_domain
      - MANAGED_SERVER_NAME=ms2
    ports:
      - "8002:8002"
    depends_on:
      - admin_server
    networks:
      - weblogic_network

networks:
  weblogic_network:
    driver: bridge
  • 配置说明

配置项

说明

admin_server

定义 WebLogic 管理服务器实例,监听端口为 7001,用于管理域及受管服务器。

managed_server1/2

定义两个受管服务器实例,分别监听端口 80018002,用于处理业务流量。

volumes

将日志文件挂载到主机路径,便于集中化管理和分析。

networks

定义服务间的网络,确保容器能够通过内网互相通信。

depends_on

确保受管服务器在管理服务器启动后再启动。

  • 启动容器

使用以下命令启动服务:

代码语言:bash
复制
$ docker-compose up -d

运行后,您可以通过以下 URL 访问不同服务器的服务:

  • 管理服务器:http://<主机IP>:7001/console
  • 受管服务器1:http://<主机IP>:8001
  • 受管服务器2:http://<主机IP>:8002
  • 添加负载均衡器

为了实现流量的分发,可以在容器化环境中添加一个负载均衡器,如 NGINX 或 Traefik。以下是基于 NGINX 的负载均衡配置:

代码语言:nginx
复制
http {
    upstream weblogic_cluster {
        server managed_server1:8001;
        server managed_server2:8002;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://weblogic_cluster;
        }
    }
}

将该配置保存为 nginx.conf 并启动 NGINX 容器:

代码语言:bash
复制
$ docker run -d -p 80:80 \
    -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf \
    --network weblogic_network \
    --name nginx_lb nginx

访问 http://<主机IP> 即可通过负载均衡器访问 WebLogic 集群。

II. 日志分析与性能监控

背景:在复杂的企业环境中,监控日志和系统性能是排查故障、优化应用性能的重要手段。通过挂载日志目录和引入集中化管理工具(如 ELK 堆栈),可以实现对 WebLogic 日志的全面分析。

  • 日志挂载

在运行 WebLogic 容器时,通过挂载日志目录可以将日志文件保存到宿主机或共享存储中:

代码语言:bash
复制
$ docker run -d --name weblogic_server \
    -v /var/log/weblogic:/u01/oracle/logs \
    weblogic:12.2.1.4
  • 使用 Filebeat 收集日志

将日志集成到 ELK 堆栈(Elasticsearch + Logstash + Kibana)中,便于可视化分析。以下是使用 Filebeat 收集日志的配置示例:

filebeat.yml 配置文件:

代码语言:yaml
复制
filebeat.inputs:
  - type: log
    paths:
      - /var/log/weblogic/*.log

output.elasticsearch:
  hosts: ["http://<elasticsearch_host>:9200"]

启动 Filebeat 容器:

代码语言:bash
复制
$ docker run -d --name=filebeat \
    -v /var/log/weblogic:/var/log/weblogic \
    -v $(pwd)/filebeat.yml:/usr/share/filebeat/filebeat.yml \
    --network weblogic_network \
    docker.elastic.co/beats/filebeat:7.17.0
  • 性能监控

通过 WebLogic Server 自带的性能监控工具(如 JConsole 或 WLDF),结合 Prometheus 和 Grafana,可以实时监控容器化环境中的 WebLogic 性能。

示例 Prometheus 配置:

代码语言:yaml
复制
scrape_configs:
  - job_name: 'weblogic'
    static_configs:
      - targets: ['admin_server:7001', 'managed_server1:8001', 'managed_server2:8002']

将 Prometheus 数据通过 Grafana 可视化,创建仪表盘以监控请求延迟、线程数等性能指标。

内容

描述

多容器部署

使用 Docker Compose 搭建多实例架构,实现高可用性和扩展性。

负载均衡

添加 NGINX 等负载均衡器,优化流量分发,提升系统容错能力。

集中化日志管理

借助 Filebeat 和 ELK 堆栈,实现日志的集中收集和分析。

性能监控与可视化

通过 Prometheus 和 Grafana 实现 WebLogic 的性能监控和指标可视化。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • WebLogic Server 与 Docker 的整合流程
    • 环境准备
    • 整合流程概述
  • Dockerfile 与镜像构建
    • I. 下载必要资源
    • II. 编写 Dockerfile
    • III. 构建镜像
  • 配置与运行 WebLogic 容器
    • I. 配置域和服务
    • II. 运行 WebLogic 容器
  • 实例分析与优化建议
    • I. 多容器部署与负载均衡
    • II. 日志分析与性能监控
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档