Docker企业版2.0上运行Oracle WebLogic和Oracle Database 应用

[TOC]

概述

这篇文章描述了如何使用Docker EE来部署使用Oracle数据库运行在Oracle WebLogic Server上的MedRec实例应用.

Oracle WebLogic 概述

架构

下图是运行在Docker EE上的Oracle WebLogic, Oracle Database 和 MedRec(这个是Oracle WebLogic官方的sample应用)应用的架构图:

Oracle-WebLogic-Database-MedRec.png

测试环境和组件

你需要以下组件来实现向导中的架构:

安装和配置

  1. 安装Git套件. 在终端窗口, 跳转到你将要存放仓库的位置(或者新建一个), 运行如下命令:

    $ git clone https://github.com/docker/docker-for-oracle-weblogic

  2. 下载Oracle WebLogic Server 12.2.1.2 Supplemental Quick Installer(fmw_12.2.1.2.0_wls_supplemental_quick_Disk1_1of1.zip), 把这个zip文件(不用解压)放到当前目录.

  3. 下载 Oracle SQL Developer command-line (SQLcl) tool (sqlcl-17.4.0.354.2224-no-jre.zip), 把该zip文件(不用解压)放到当前目录.

  4. 使用WebLogic和Database镜像的Dockerfile来自Docker Store. 无需进行修改.

  5. (可选)如果DB 用户名/密码有更改, 编辑 docker-for-oracle-weblogic/container-scripts/oradatasource.properties文件,设置要连接的Oracle Database容器对应的Oracle Thin XA驱动, 数据库URL, 用户名, 密码, DB name.

    domainname=medrec
    domainhome=/u01/oracle/wlserver/samples/domains/medrec
    admin_name=MedRecServer
    dsname=MedRecGlobalDataSourceXA
    dsdbname=ORCLCDB
    dsjndiname=jdbc/MedRecGlobalDataSourceXA
    dsdriver=oracle.jdbc.xa.client.OracleXADataSource
    dsurl=jdbc:oracle:thin:@orcldb:1521:ORCLCDB
    dsusername=sys as sysdba
    dspassword=Oradoc_db1
    dstestquery=SELECT * FROM DUAL
    dsmaxcapacity=1
    

创建MedRec Docker Image

  1. 打开浏览器, 登陆Docker Store.

  2. 通过点击Proceed to Checkout来购买Oracle WebLogic Server (就是个官方镜像) and Oracle Database Enterprise Edition (就是个官方镜像)的订阅.

  3. 回到命令行, 确保你已经登陆了Docker Store/Hub:

    $ docker login

  4. 构建 MedRec 镜像(扩展WebLogic镜像):

    ./build.sh

  5. 打标签

    $ docker tag 1221-oradb-medrec:latest 1221-oradb-medrec:1.0

build.sh内容:

#!/bin/sh
docker build -t 1221-oradb-medrec .

Swarm上验证该部署

如果使用Kubernetes, 请看下一章节内容.

要使用Swarm orchestrator部署, 执行:

$ docker compose up -d
  Creating docker-for-oracle-weblogic_orcldb_1 ... done
  Creating docker-for-oracle-weblogic_wls_1    ... done

启动进程可以通过查看日志来监控. 应用要准备好(可用于测试)会花费5到6分钟:disappointed:(取决于CPU/内存的配置).

$ docker ps
CONTAINER ID   IMAGE                                       COMMAND                  CREATED             STATUS
1b934b0f140c   1221-oradb-medrec:1.0                       "startSample.sh"         2 minutes ago       Up 2 minutes
dc9a4f123bcf   store/oracle/database-enterprise:12.2.0.1   "/bin/sh -c '/bin/ba…"   2 minutes ago       Up 2 minutes (healthy)

Kubernetes上验证该部署

如果Kubernetes没启用, 先启用.

例如, 在Docker for Mac中, 访问Docker for Mac的top menu bar, 点击Preferences. 点击Kubernetes, 确保Enable Kubernetes checkbox被选中. 点击Apply. Docker for Mac然后会重启, Kubernetes会启用.

要使用Kubernetes orchestrator 来部署, 执行:

kubectl create -f weblogic-oracledb-kubernetes.yaml
service "wls" created
deployment "wls" created
service "orcldb" created
deployment "orcldb" created

会启动2个叫做medrecorcldb的services和2个deployments. 使用kubectl get命令来验证Kubernetes部署. 输出类似这样:

kubectl get pods
NAME                      READY     STATUS    RESTARTS   AGE
orcldb-575b6d95d9-n5f4r   1/1       Running   0          42s
wls-fdddbfcb8-997fg       1/1       Running   0          42s
kubectl get deployments
NAME      DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
orcldb    1         1         1            1           11m
wls       1         1         1            1           11m
kubectl get services
NAME         TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
kubernetes   ClusterIP      10.96.0.1        <none>        443/TCP             7d
orcldb       ClusterIP      10.97.195.134    <none>        1521/TCP,5500/TCP   10m
wls          LoadBalancer   10.111.246.133   localhost     7011:30035/TCP      10m

weblogic-oracledb-kubernetes.yaml内容如下:

apiVersion: v1
kind: Service
metadata:
  name: wls
spec:
  type: LoadBalancer
  ports:
  - port: 7011
  selector:
    app: wls
---
apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: wls
spec:
  selector:
    matchLabels:
      app: wls
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: wls
    spec:
      containers:
      - image: 1221-oradb-medrec:1.0
        name: wls
        ports:
        - containerPort: 7011
          name: wls
---
apiVersion: v1
kind: Service
metadata:
  name: orcldb
spec:
  ports:
  - port: 1521
    name: sqlnet
  - port: 5500
    name: oraclexml
  selector:
    app: orcldb
---

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: orcldb
spec:
  selector:
    matchLabels:
      app: orcldb
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: orcldb
    spec:
      containers:
      - image: store/oracle/database-enterprise:12.2.0.1
        name: orcldb
        ports:
        - containerPort: 1521
          name: sqlnet
        - containerPort: 5500
          name: oraclexml

验证应用

访问WebLogic控制台:

http://localhost:7011/console

Oracle-Weblogic-Console-Login.png

使用账号密码登陆: weblogic/welcome1

Oracle-Weblogic-Console.png

测试MedRec 应用

访问MedRec应用:

http://localhost:7011/medrec

MedRecSplash.png

停止应用

使用Swarm 停止应用

要停止应用容器, 执行:

$ docker-compose down
Stopping wls-medrec ... done
Stopping orcldb     ... done
Removing wls-medrec ... done
Removing orcldb     ... odone

接下来请查看在Docker EE上配置和部署章节.

使用Kubernetes 停止应用

要停止应用, 执行:

kubectl delete svc orcldb wls
service "orcldb" deleted
service "wls" deleted
kubectl delete deployments
deployment "orcldb" deleted
deployment "wls" deleted

Docker EE相关内容

可以看看怎么配置PV, 其他都可以忽略.

Docker EE上的配置和部署

要在Docker EE 2.0上跟着这篇应用向导部署Oracle WebLogic和Oracle Database, 首先要分配几个合适配置的节点做高可用. 在本例中, 分配了4个实例: 1个UCP管理节点和3个worker容器. UCP可以管理Kubernetes和Swarm编排.

Docker Trusted Registry(DTR) 也安装在其中一个worker容器中. 这篇向导假设UCP和DTR已经安装和配置好, 可以使用"admin" 账号和密码来访问.

Docker EE Swarm 配置

MedRec applications on Weblogic with Oracle Database.

docker-compose-EE.yml

定义 PV(持久化卷)

要在本地卷上部署WebLogic和Oracle Database, 点击Verifying the Install. 如果出现service被移除或失败, 本地卷不能持久化.

要安装PV, 从store.docker.com上订阅一个合适的经过Docker认证过的卷插件. 本例中使用EMC’s Rex-Ray for AWS EBS.

要使用AWS EBS, 请按照docs.aws.amazon.com这篇文章来从AWS IAM服务上获取一个访问id和密钥.

使用下列命令安装该插件, EBS_ACCESSKEY就是刚刚获取的:

docker plugin install rexray/ebs EBS_ACCESSKEY=<mykey> EBS_SECRETKEY=<mysecretkey>

下表列出了需要定义的PV:

Volume Name Service Container Mount point
db-oracle orcldb /ORCL

在UCP上, 点击在左手边栏上的Volumes 选项. 点击Create Volumes, 并输入上表的信息:

Name: db-oracle
Driver: rexray/ebs

把以下内容加到docker-compose-EE.yml中:

    volumes:
      - db-oracle:/ORCL

volumes:
  db-oracle:
    driver: rexray/ebs

修改{dtr-registry-address} 为真实的DTR或Docker Hub地址.

复制完整内容到剪贴板. 确保缩进格式没问题.

通过UCP UI Swarm验证部署(Docker EE)

  1. 访问UCP管理节点的URL并用admin登陆;

  2. 在UCP上, 点击出现在左手边侧边栏的Stacks 选项

  3. 点击Create Stack. 为该Stack输入个名称(如: demo)和模式(选择Swarm Services)

  4. 从剪贴板粘贴编辑好的docker-compose-EE.yml

  5. 最后, 点击Create 按钮来部署该stack.

    UCP-Swarm-deploy.png
  6. 要验证容器是否成功运行, 点击在UCP主页左侧边栏的Services. 这2个服务demo_wls, demo_orcldb应该显示绿色的状态并且没有错误.

    UCP-Swarm-Services.png
  7. 要启动该应用, 点击左手边侧边栏的Swarm部分的Services. 选择load balances中的demo_wls. 点击地址Published Endpoints来跳转到Oracle WebLogic 和 Medrec 界面. 添加"/console/"来跳转到WebLogic界面, 添加"/medrec/"来跳转到MedRec应用.

    UCP-SwarmVerify.png

通过客户端套件来验证该部署(Docker EE)

通过UCP UI Kubernetes 来验证部署(Docker EE)

使用Swarm停止Docker EE上的应用

使用Kubernetes停止Docker EE上的应用

Troubleshooting

Further Reading

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,723评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,080评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,604评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,440评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,431评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,499评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,893评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,541评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,751评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,547评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,619评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,320评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,890评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,896评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,137评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,796评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,335评论 2 342

推荐阅读更多精彩内容