RHEL 6.7+Oracle 11gR2 RACのテスト環境を構築しよう。③クラスタ用の設定

ドーモ、読者=サン。さくらい(@sakutomo0615)です。

それではサクサクとOS周りの設定を進めて行きましょう。

  1. RHEL 6.7+Oracle 11gR2 RACのテスト環境を構築しよう。①事前準備編
  2. RHEL 6.7+Oracle 11gR2 RACのテスト環境を構築しよう。②OSインストール編
  3. RHEL 6.7+Oracle 11gR2 RACのテスト環境を構築しよう。③クラスタ用の設定
  4. RHEL 6.7+Oracle 11gR2 RACのテスト環境を構築しよう。④2号機側と共有ディスクの設定
  5. RHEL 6.7+Oracle 11gR2 RACのテスト環境を構築しよう。⑤Oracle Gridのインストール
  6. RHEL 6.7+Oracle 11gR2 RACのテスト環境を構築しよう。⑥Oracle Databaseのインストールと作成

 

内部ネットワーク用NICの追加

Oracle RACのインターコネクト(内部通信)用のNICを追加する作業です。

rhel67_setting_09

VirtualBox内のDB1号機(rac11g1)を右クリックして、設定を開きます。

 

rhel67_setting_091

アダプター1(外部通信用)をブリッジアダプターに変更します。

 

rhel67_setting_10

アダプター2のタブを開き、『ネットワークアダプターを有効化』にチェックを入れて、割り当てを『内部ネットワーク』に設定します。

設定が終わったら、OKボタンでウィンドウが閉じます。

 

クラスタ用共有ディスクの追加

クラスタ構成なので、DB1号機とDB2号機の双方からアクセスできる共有ディスクが必要ですので、ここで作成します。

ディスク容量仮想ディスクの名前用途
/dev/sdc10GB(固定)oradata_disk01Oracle DATA用
/dev/sdd10GB(固定)oradata_disk02Oracle DATA用

ここではこれら2つのディスクを共有ディスクとして作成します。

 

shareddisk_01

仮想ディスクファイルを格納するフォルダを作ります。今回は共有ディスク用にshareddiskと言うフォルダを作りました。

 

shareddisk_02

Virtual Box上で仮想ホストのDB1号機(rac11g1)を選択して、設定を開きます。ストレージメニューを開くとコントローラーが2つありますので、コントローラーSATAのところの+ボタンをクリックしましょう。

 

shareddisk_03

『新規ディスクの作成』をクリック

 

shareddisk_04

仮想HDDのファイルタイプはVDI(Virtualbox Disk Image)を選んで次へ

 

shareddisk_05

まずはoradata_disk01を作りますので、固定サイズを選択します。

 

shareddisk_07

 

仮想ディスクのファイルパスとファイル名を指定してサイズを10GBにします。

 

 

shareddisk_061

あとはこの手順を繰り返して、共有ディスクを2つ作成します。

 

shareddisk_08a

必要な共有ディスクが作成されているのを確認したら、OKをクリックします。

 

shareddisk_09

Virtual Boxを開き、上部メニューの【ファイル】→【仮想メディアマネージャー】を開きます。

 

shareddisk_10a

作成したディスクを選択して、右クリック→変更をします。

 

shareddisk_11

メディア属性を【共有可能】に変えて、OKをクリックします。

 

 

shareddisk_12a

ストレージメニューで共有ディスクを見た時にタイプ形式は共有可能になっている事を確認します。

 

ネットワーク関連の設定

デバイスの追加が終わったら、再度OSを起動してみます。(rootでログイン)

サービス用・内部通信用NICのIP設定

shareddisk_13

#fdisk -l  でディスク一覧を見ると、新たにディスクが追加されている事がわかります。

 

pregrid01

続いて、2枚のネットワークカードにIPアドレスを付与します。デスクトップを開いて、上部メニューの【システム】→【設定】→【ネットワーク接続】を開きます。

 

pregrid02

サービス用NICから設定します。System eth0を選択して『編集』をクリック。何気にeth1が追加されている点もチェックしましょう。

 

pregrid03

方式を【手動】に変更し、IPアドレスとサブネットマスク、ゲートウェイ、DNSサーバーを入力します。

 

pregrid04

先ほど追加した内部通信用のeth1も設定します。『自動接続する』にチェックを入れ、IPアドレス・サブネットマスクを設定します。(※ゲートウェイは設定しないように!)

 

pregrid05

設定が終わったら、インターネットに接続できるか確認しておきましょう。

合わせて、外部時刻同期も出来るか確認しておきます。

root#ntpq -p

 

hostsファイルの編集

pregrid06

/etc/hostsファイルを編集します。

 

今回設定するIPアドレス・ホスト名の一覧

IPアドレスFQDNホスト名備考
192.168.0.11rac11g1.localdomainrac11g1DB1号機サービス側の実IPアドレス
192.168.0.12rac11g2.localdomainrac11g2DB2号機サービス側の実IPアドレス
192.168.0.110rac11gSCAN.localdomainrac11gSCANSCAN用IPアドレス
192.168.0.111rac11gvip01.localdomainrac11gvip01DB1号機サービス側の仮想IPアドレス
192.168.0.112rac11gvip02.localdomainrac11gvip02DB2号機サービス側の仮想IPアドレス
10.0.0.1rac11g1priv.localdomainrac11g1privDB1号機内部通信用の実IPアドレス
10.0.0.2rac11g2priv.localdomainrac11g2privDB2号機内部通信用の実IPアドレス

 

 

pregrid07b

設定例:/etc/hostsファイルに今回割り当てたIPアドレスに対して、ホスト名を付与します。

hostsファイルを保存したら、Oracleユーザーとグループの作成に移ります。

Oracleインストールの必要パッケージの追加

何だかんだで事前にインストールされていなければならないパッケージはたくさんあります。全部を後から追加するのが面倒くさかったので、OSを『ソフトウェア開発ワークステーション』でインストールしておいたんですが、それでも追加が必要です。

★必要パッケージ

binutils-2.20.51.0.2-5.11.el6(x86_64)
glibc-devel-2.12-1.7.el6(x86_64)
libstdc++-devel-4.4.4-13.el6.i686 ←要追加
compat-libcap1-1.10-1(x86_64)  ←要追加
glibc-devel-2.12-1.7.el6.i686  ←要追加
libaio-0.3.107-10.el6(x86_64)
compat-libstdc++-33-3.2.3-69.el6 (x86_64)   ←要追加
libaio-0.3.107-10.el6.i686   ←要追加
compat-libstdc++-33-3.2.3-69.el6.i686  ←要追加
libgcc-4.4.4-13.el6 (i686)   ←要追加
libaio-devel-0.3.107-10.el6 (x86_64)   ←要追加
gcc-4.4.4-13.el6 (x86_64)
libgcc-4.4.4-13.el6 (x86_64)
libaio-devel-0.3.107-10.el6.i686   ←要追加
gcc-c++-4.4.4-13.el6 (x86_64)
libstdc++-4.4.4-13.el6(x86_64)
make-3.81-19.el6
glibc-2.12-1.7.el6 (i686)  ←要追加
libstdc++-4.4.4-13.el6.i686  ←要追加
sysstat-9.0.4-11.el6(x86_64)
glibc-2.12-1.7.el6 (x86_64)
libstdc++-devel-4.4.4-13.el6(x86_64)

★ASMLib(ASM用ライブラリ&ドライバー)

Oracle ASMLib Downloads for Red Hat Enterprise Linux 6

必要ライブラリ類の追加

package01

DVDメディアをマウントして、メディア内のパッケージをちまちまと探します。

 

package02

# cd /media/RHEL-6.7\ Server.x86_64/Packages/

 

package03

ひたすらパッケージを追加していきましょう。

今回の環境と同じに構築している人は、i686系のライブラリの依存関係でハマった場合には、このパッケージで幸せになれます。

nss-softokn-freebl-3.14.3-22.el6_6.i686.rpm

Oracle ASMLibの追加

次にこちらのサイトからRHEL6系のASMLibを入手しましょう。

Oracle ASMLib Downloads for Red Hat Enterprise Linux 6

ASMLib02

こちらの2つのファイルをダウンロードします。

んで、インストールしてみると・・・

ASMLib03

はい?(;´・ω・)

どうやらこう言う事らしい。

Oracle ASMLib の可用性およびサポート

しかも、こう言う事でもあるらしい。

6.6 カーネルで kmod-oracleasm パッケージが利用できない
と、言うワケでこちらのサイトからkmod-oracleasm-2.0.8-6.el6_7.x86_64.rpmを入手する事にします。

ASMLib04

↑ダウンロードしてインストールしてみた結果。

 

取りあえずはこれら3パッケージが追加できたので、良しとしておきましょう。

kmod-oracleasm-2.0.8-6.el6_7.x86_64.rpm

oracleasmlib-2.0.4-1.el6.x86_64.rpm

oracleasm-support-2.1.8-1.el6.x86_64.rpm

ASMLib05

rootアカウントでoracleasmコマンドが使えるのを確認できればOKです。 ※ASMディスクの初期化はもう少し後で行います。

Oracle用のユーザーとグループの追加

Oracle Grid InfrastructureとOracle Databaseをインストールするにあたり、いくつかのユーザーとグループを追加しなくてはいけません。

今回追加するユーザーとグループは以下の通りです。

ユーザー名所属グループ備考
grid(601)oinstall(501),asmdba(601),asmadmin(602),asmopeer(603)ASM管理用ユーザー
oracle(501)oinstall(501),dba(502),oper(503),asmdba(601)Oracle管理用ユーザー

 

ではグループから作成しましょう。

pregrid08

 

pregrid09

gridユーザーとoracleユーザーを追加します。

 

pregrid10

gridユーザーとoracleユーザーにパスワードを設定します。

 

Oracleソフトウェアのインストールディレクトリを作成しましょう。

ディレクトリ用途
/u01/app/gridGrid InfraのOracle Base
/u01/app/oracleOracle Base
/u01/app/11.2.0Grid Infraのホームディレクトリ
pregrid11

仕上げにoracleインストールディレクトリを作成して、オーナーを変えておきます。

 

カーネルパラメーターの設定

続いて恒例のメンドクサイ、カーネルパラメーターの設定を行います。

pregrid13

現状のカーネルパラメーター値を確認します。

#sysctl -a |grep sem  → 3番目の数値が32なので、100に修正する

#sysctl -a|grep shm  →      このままで平気

#sysctl -a |grep file-max   → 足りないので修正

#sysctl -a |grep ip_local_port  → 32768-61000なので修正

#sysctl -a |grep net.core.rmem   →  足りないので修正

#sysctl -a |grep net.core.wmem  →  足りないので修正

pregrid12

では早速これらのパラメータを修正します。

 

pregrid14

私と全く同じ手順で構築している方はこちらをコピペすればOKです。(そうでない方は手動で編集してください)

 

次にoracleユーザーが起動できるプロセス数の上限値を引き上げます。

pregrid15

/etc/security/limits.confを編集します。

 

pregrid16_1

こちらの設定をコピペしてください。(tab空白に注意!)

 

 

pregrid17

次にetc/profileも修正します。

pregrid18

以下のコードをコピペして保存して下さい。

その他OSの設定

だんだん疲れてくるんですが、まだ細かい部分でOSの設定が残っているので片付けます。

NTPをSlewモードに変更する。

NTPにはSTEPモードとSlewモードの2つのモードがあるんですが、STEPモードは不定期に時刻調整を行います。それだけなら良いんですが、何らかの理由(リブートを頻発させたetc)でサーバーの時刻がNTPサーバー(外部時刻源)よりも先に進んでしまった場合、時間を逆戻りさせる可能性があるんですね。

これがOracleのクラスタソフトウェア的に非常によろしくないんです。(1号機だけ時間が逆戻りして、インスタンス1と2の間に時刻不整合が出たりする)

Slewモードは時間の逆戻りをせずに、時間の進行を遅らせてゆっくりと同期します。なので、こちらに変更しておきます。

ntp02

#vi /etc/sysconfig/ntpd

 

ntp04

OPTIONS=”-u  ntp:ntp -p /var/run/ntpd.pid -g”

OPTIONS=”-x -u ntp:ntp -p /var/run/ntpd.pid -g”

オプションに-xを付けます。

 

NTPサービスを再起動します。

ntp05

これでOKです。

 

 

ここまで出来たら、サーバーをシャットダウンします。

次回からは1号機の仮想マシンをコピーして、2号機を作成します。

 

 

ABOUTこの記事をかいた人

櫻井智行

ネットワーク・サーバー系のフリーのインフラエンジニア。得意分野はデータベース・ネットワーク・負荷分散あたりです。30歳の頃に独立しましたが、それまでに巻き込まれた様々なデスマーチと火消しの実績からトラブルシュート案件ばかりが依頼される様に・・・。 ビットクリア設立後は趣味の炎上・デスマーチ観察を軸にデスマーチソムリエとして小田原市・東京を中心にグローバルに活動中。