技術ブログ
Oracle VM上にOracle Database 12c のVMテンプレートを活用して、Oracle Database 12c 8ノード RACを作成してみました。
Oracle VM 3環境を使用している場合、VMテンプレートを用いたVMの構成は、通常 DeployClusterを使用します。しかし、いくつかの理由により、Dom-0のコマンド操作ならびに自作のシェルスクリプトでVMを構成しました。
一部の作業をシェルスクリプト化していることから、再現可能なレベルでの手順をお伝えすることは難しいですが、大枠の流れは以下の通りになりました。
VMテンプレートに含まれるVMをsingleモードで起動(xm create -c vm.cfg extra=" console=hvc0 single")、するか、仮想ディスクのファイルをkpartxコマンドでマウントするなどして、VM内の初期構成サービス用の設定ファイルを編集および配置する。ランレベル3,5でVMを起動(いわゆる通常の起動)すると、ブート時に初期構成サービスが起動して、初期構成作業が始まってしまうので注意。
VM共通に追加したい作業を、VMの複製前にあらかじめ実施しておくと、VMを複製してからそれぞれのVMに実行する手間を省けます。
singleモードで起動して、以下のコマンドを実行して、一旦 VMテンプレート 初期構成サービスを無効化します。
chkconfig boot-line-dbracovm-template-bypass off chkconfig ovmd off chkconfig dbracovm-template.init off
この状態で、VM共通に追加したい作業をあらかじめ実施します。私の場合は、以下の作業を実行しました。
VMテンプレート(1台分の仮想ディスクファイル)を VMの数だけ、Thin Cloneでコピーします。Thin Cloneであるため、使用するディスク容量を節約できます。
ddコマンドで共有ディスクを追加し、vm.cfgに共有ディスクの接続情報を記載します
VMテンプレートにより若干の違いはあるはずですが、このVMテンプレートを用いてRACを構成する場合、/dev/xvc, /dev/xvd, /dev/xve, /dev/xvf, /dev/xvgの5つの共有ディスクを構成することが原則的に必須になるはずです。
kernelに渡されるパラメータとして template-reconfig-args=... を指定して、ノード1以外の全ノードを起動します。このtemplate-reconfig-argsの指定は、boot-line-dbracovm-template-bypassサービスを経由して、ovmdサービスに渡され、オプションに応じて初期構成スクリプトが実行するためのものです。オプションを指定しないと、ブート時に指定項目の入力を求められる点に注意が必要です。
-n? オプションは、VM起動時に -n? オプションを指定して /u01/racovm/netconfig.sh コマンドを実行することを指定するものです。下記のようにVMを起動すると、ノード2では/u01/racovm/netconfig.sh -n2が実行されます。 他のノードについても同様です。netconfig.shはnetconfig.iniにしたがい、各VMのネットワーク設定を行うコマンドです。
xm create vm.cfg.2 extra=" console=hvc0 template-reconfig-args='-n2'" : xm create vm.cfg.8 extra=" console=hvc0 template-reconfig-args='-n8'"
ノード1以外の全ノードが起動し、ネットワーク設定が完了していることをpingコマンドなどで確認したら、ノード1を起動します。
xm create -c vm.cfg.1 extra=" console=hvc0 template-reconfig-args='-n1 -b'"
template-reconfig-argsに -n1 に加えて-b を指定し、以下の処理が実行されるようにします。
buildcluster.shは/u01/racovm/params.iniの設定に従い、Oracle Grid Infrastructure, Oracle Databaseの構成を行うスクリプトです。
6コア+HTの物理サーバ上に、各VMに1CPU, メモリ2Gを割り当てる構成として、1時間10分ほどで buildcluster.shの実行が完了しました。(本来であれば、VM起動時に自動的にbuildcluster.shが実行されますが、以下では手動でbuildcluster.shを実行しています)
[root@lc101ru1 ~]# /u01/racovm/buildcluster.sh Are you sure you want to install RAC Cluster? Do not run if software is already installed and/or running.. [yes|no]? yes Invoking on lc101ru1 as root... Oracle DB/RAC 12c/11gR2 OneCommand (v2.0.11) for Oracle VM - (c) 2010-2013 Oracle Corporation Cksum: [2018127693 489500 racovm.sh] at Fri Aug 23 03:25:41 EDT 2013 Kernel: 2.6.39-400.109.1.el6uek.x86_64 (x86_64) [1 processor(s)] 1997 MB | xen Kit Version: 12.1.0.1.0 (RAC Mode, 8 nodes) Step(s): buildcluster INFO (node:lc101ru1): Skipping confirmation, flag (-s) supplied on command line 2013-08-23 03:25:41:[buildcluster:Start:lc101ru1] Building 12c RAC Cluster 2013-08-23 03:25:42:[setsshroot:Start:lc101ru1] SSH Setup for the root user... : INFO (node:lc101ru1): Running on: lc101ru1 as root: /u01/app/12.1.0/grid/bin/crsctl status resource -t -------------------------------------------------------------------------------- Name Target State Server State details -------------------------------------------------------------------------------- Local Resources -------------------------------------------------------------------------------- ora.DATA.dg ONLINE ONLINE lc101ru1 STABLE ONLINE ONLINE lc101ru2 STABLE ONLINE ONLINE lc101ru3 STABLE ONLINE ONLINE lc101ru4 STABLE ONLINE ONLINE lc101ru5 STABLE ONLINE ONLINE lc101ru6 STABLE ONLINE ONLINE lc101ru7 STABLE ONLINE ONLINE lc101ru8 STABLE ora.LISTENER.lsnr ONLINE ONLINE lc101ru1 STABLE ONLINE ONLINE lc101ru2 STABLE ONLINE ONLINE lc101ru3 STABLE ONLINE ONLINE lc101ru4 STABLE ONLINE ONLINE lc101ru5 STABLE ONLINE ONLINE lc101ru6 STABLE ONLINE ONLINE lc101ru7 STABLE ONLINE ONLINE lc101ru8 STABLE ora.asm ONLINE ONLINE lc101ru1 STABLE ONLINE ONLINE lc101ru2 Started,STABLE ONLINE ONLINE lc101ru3 Started,STABLE ONLINE ONLINE lc101ru4 Started,STABLE ONLINE ONLINE lc101ru5 Started,STABLE ONLINE ONLINE lc101ru6 Started,STABLE ONLINE ONLINE lc101ru7 Started,STABLE ONLINE ONLINE lc101ru8 Started,STABLE ora.net1.network ONLINE ONLINE lc101ru1 STABLE ONLINE ONLINE lc101ru2 STABLE ONLINE ONLINE lc101ru3 STABLE ONLINE ONLINE lc101ru4 STABLE ONLINE ONLINE lc101ru5 STABLE ONLINE ONLINE lc101ru6 STABLE ONLINE ONLINE lc101ru7 STABLE ONLINE ONLINE lc101ru8 STABLE ora.ons ONLINE ONLINE lc101ru1 STABLE ONLINE ONLINE lc101ru2 STABLE ONLINE ONLINE lc101ru3 STABLE ONLINE ONLINE lc101ru4 STABLE ONLINE ONLINE lc101ru5 STABLE ONLINE ONLINE lc101ru6 STABLE ONLINE ONLINE lc101ru7 STABLE ONLINE ONLINE lc101ru8 STABLE -------------------------------------------------------------------------------- Cluster Resources -------------------------------------------------------------------------------- ora.LISTENER_SCAN1.lsnr 1 ONLINE ONLINE lc101ru1 STABLE ora.c101ru.db 1 ONLINE ONLINE lc101ru1 Open,STABLE 2 ONLINE ONLINE lc101ru2 Open,STABLE 3 ONLINE ONLINE lc101ru3 Open,STABLE 4 ONLINE ONLINE lc101ru4 Open,STABLE 5 ONLINE ONLINE lc101ru5 Open,STABLE 6 ONLINE ONLINE lc101ru6 Open,STABLE 7 ONLINE ONLINE lc101ru7 Open,STABLE 8 ONLINE ONLINE lc101ru8 Open,STABLE ora.cvu 1 ONLINE ONLINE lc101ru1 STABLE ora.lc101ru1.vip 1 ONLINE ONLINE lc101ru1 STABLE ora.lc101ru2.vip 1 ONLINE ONLINE lc101ru2 STABLE ora.lc101ru3.vip 1 ONLINE ONLINE lc101ru3 STABLE ora.lc101ru4.vip 1 ONLINE ONLINE lc101ru4 STABLE ora.lc101ru5.vip 1 ONLINE ONLINE lc101ru5 STABLE ora.lc101ru6.vip 1 ONLINE ONLINE lc101ru6 STABLE ora.lc101ru7.vip 1 ONLINE ONLINE lc101ru7 STABLE ora.lc101ru8.vip 1 ONLINE ONLINE lc101ru8 STABLE ora.oc4j 1 OFFLINE OFFLINE STABLE ora.scan1.vip 1 ONLINE ONLINE lc101ru1 STABLE -------------------------------------------------------------------------------- INFO (node:lc101ru1): For an explanation on resources in OFFLINE state, see Note:1068835.1 2013-08-23 04:35:55:[clusterstate:Time :lc101ru1] Completed successfully in 5 seconds (0h:00m:05s) 2013-08-23 04:35:55:[buildcluster:Done :lc101ru1] Building 12c RAC Cluster 2013-08-23 04:35:56:[buildcluster:Time :lc101ru1] Completed successfully in 4214 seconds (1h:10m:14s) INFO (node:lc101ru1): This entire build was logged in logfile: /u01/racovm/buildcluster1.log [root@lc101ru1 ~]#
なかなか壮観でしょ 😉
仮想環境での多ノードRACといえば、JPOUGの大島さんです。 Amazon EC2上で16ノード構成のRACを構築されたこともある、多ノードRAC構築の達人です。
いつかOracle VMでも16ノードRACを構成してみたいですね!