Oracle RAC on Docker

JPOUG Advent Calendar( https://jpoug.doorkeeper.jp/events/53797 )と Docker Advent Calendar2 (http://qiita.com/advent-calendar/2016/docker2 )の4日目です。

Oracle RAC on Dockerの作成スクリプトgithub(https://github.com/s4ragent/rac_on_xx)で公開していますので、その紹介です

概要

  • 基本情報
- -
OS(イメージ) Oracle Linux 7.2
Storage NFS4 with Flex ASM
L2 実装方式 vxlan
DNS 各コンテナ上にdnsmasq
  • Network 情報 (3-nodes RACの場合)
hostname/container name/vip eth0 vxlan0(public) vxlan1(internal) vxlan2(asm)
storage 10.153.0.50 - - -
node001 10.153.0.51 192.168.0.51 192.168.100.51 192.168.200.51
node002 10.153.0.52 192.168.0.52 192.168.100.52 192.168.200.52
node003 10.153.0.53 192.168.0.53 192.168.100.53 192.168.200.53
node001.vip - 192.168.0.151 - -
node002.vip - 192.168.0.152 - -
node003.vip - 192.168.0.152 - -
scan1.vip - 192.168.0.31 - -
scan2.vip - 192.168.0.32 - -
scan3.vip - 192.168.0.33 - -
  • Storage 情報
Diskgroup name use asm device path redundancy size(MB) size(MB)(3-nodes RACの場合)
VOTE ocr and voting disk /u01/oradata/vote.img external 5120 + ( num_of_nodes * 1024 ) 8192
DATA Database files /u01/oradata/data.img external 5120 + ( num_of_nodes * 1024 ) 8192
FRA flash recovery area /u01/oradata/fra.img external 5120 5120

必要なもの

  • ubuntu/debian(Kernel 3.18 or later), CentOS/RHEL/OEL 7.2
  • docker 1.12
  • ansible 2.0 or later
  • Oracle 12c Release 1 (12.1) Clusterware and Database software
  • 1コンテナにつき、1core CPU および 4GB Memory

注意

各コンテナはprivilegedモードで起動するため、 検証環境でのみ使用してください

インストール方法

git clone https://github.com/s4ragent/rac_on_xx

使いかた

Oracle 12c Release 1 (12.1) Clusterware とDatabase software をdocker hostにダウンロード/展開します

#mkdir -p /media
#unzip linuxamd64_12102_database_1of2.zip -d /media
#unzip linuxamd64_12102_database_2of2.zip -d /media
#unzip linuxamd64_12102_grid_1of2.zip -d /media
#unzip linuxamd64_12102_grid_2of2.zip -d /media

#ls -al /media
total 16
drwxr-xr-x 4 root root 4096 May  1 21:56 .
drwxr-xr-x 3 root root 4096 May  1 21:53 ..
drwxr-xr-x 7 root root 4096 Jul  7  2014 database
drwxr-xr-x 7 root root 4096 Jul  7  2014 grid

dockerutil.sh runall を実行します (optionつけない場合は 3-nodes RACを作成します)

##create 3-nodes RAC#
#cd rac_on_xx/docker
#bash dockerutil.sh runall

5-nodes RACを作成したい場合は以下

##create 5-nodes RAC#
#cd rac_on_xx/docker
#bash dockerutil.sh runall 5

その後、最初のコンテナ(node001)にログインしたい場合は以下

#docker exec -ti node001 /bin/bash

最初のコンテナ(node001)でORACLEのコマンドを実行したい場合 (例. crsctl status res -t)

#docker exec -ti node001 /u01/app/12.1.0/grid/bin/crsctl status res -t

最初のコンテナ(node001)を停止したい場合

#bash dockerutil.sh stop 1

ストレージ用のコンテナ(storage)を停止したい場合

#bash dockerutil.sh stop storage

最初のコンテナ(node001)を起動したい場合

#bash dockerutil.sh start 1

コンテナを全て起動する場合

#bash dockerutil.sh startall

コンテナを全て削除する場合

#bash dockerutil.sh deleteall

制限事項

docker save非対応