Edited at

Oralce RAC on IBM Cloud


IBM CloudのBMS(ベアメタルサーバ)に Oracle DBサーバーを導入し、RAC構成を構築してみた。


RAC構成によるHigh Availability構成


データ格納用の外部StorageはASM管理


▼ 必要な資源の調達


  • ベアメタル RHEL v7.4 x 2 -- Oracle RAC用

  • Endurance Storage 4IOPS/GB 100GB x 5 -- Oracle DBのASMで利用

  • Portable Private Subnet 8IP (Routed to VLAN) -- Oracle RAC用

  • 仮想サーバー CentOS v7.3 x 1 -- DNSサーバー用


▼ DB構成(ASM使用)

ベアメタル+RHEL v7.4でOracle RAC環境を構築

OS : RHEL 7.4 

DBMS : Oracle E.E. 11.2.0.4
( 2ノード RAC構成 )
サーバ : racdb01.test.local と racdb02.test.local

データベース)
SID接頭辞 : orcl
インスタンス : orcl1 と orcl2
グローバルデータベース名 : orcl.test.local
管理者管理型

racdb01 racdb02 (host名)
+---------+ +---------+
| orcl1 | | orcl2 | (インスタンス名)
+---------+ +---------+
| |
+-----+-----+
|
+----------+
| orcl | (DB名)
+----------+ (ASMを使用)


▼ サーバーネットワーク

サーバー        NIC         host name                   備考

------------ -------- ------------------------- -------------------------------
ベアメタル 1 Private racdb01.test.local Portable IPを設定
Private bms01.test.local Primary IPをAlias追加
Public (racdb01-priv.test.local) HW FWでInbound遮断
Securityを考慮して変更
Oracle RACのInterconnectに利用
------------ -------- ------------------------- -------------------------------
ベアメタル 2 Private racdb02.test.local Portable IPを設定
Private bms02.test.local Primary IPをAlias追加
Public (racdb01-priv.test.local) HW FWでInbound遮断
Securityを考慮して変更
Oracle RACのInterconnectに利用
------------ -------- ------------------------- -------------------------------
Oracle VIP Private (racdb01-vip.test.local) dnsには登録しない
Private (racdb02-vip.test.local) dnsには登録しない
------------ -------- ------------------------- -------------------------------
Oracle RAC Private cluster0-scan.test.local dnsでroud robin応答する
(SCAN) Private cluster0-scan.test.local dnsでroud robin応答する
Private cluster0-scan.test.local dnsでroud robin応答する
------------ -------- ------------------------- -------------------------------
仮想サーバー Private test01.test.local dnsの問合せ受けのNIC
Public N/A HW FWでInbound遮断


▼ ネットワーク構成

                   パブリックVLAN側(遮断)

------+-------------+------ RACプライベートIP(インターコネクト)※1
| |
+---------+ +---------+
| racdb01 | | racdb02 |
+---------+ +---------+
| |
-------+-------------+------ RACパブリックIP ※2

ユーザ毎のプライベートVLAN側

※1 IBM Cloudは物理的に個別のSwitchを採用する事は出来ないため、VLANを利用して構築し、

アドレスはPublicNICのIPアドレスを付け替えて利用している。

IPアドレスを付け替えているので、インターネット側からの接続はされない。

※2 RACの仮想ネットワーク(VIP)で利用するIPアドレスについては、

IBM Cloudで提供されるPortable Private IPを採用し、

それらの名前解決の為には、別の仮想サーバーにDNSを作って対応している。

よって、SCAN(SCANリスナー、SCAN VIP)も利用している。


▼ ストレージ構成

                         racdb01      racdb02    (ホスト)

+---------+ +---------+
| orcl1 | | orcl2 | (インスタンス)
+---------+ +---------+
+-------------------+ | | | | +-------------------+
| Oracleモジュール |---+ +-----+-----+ +----| Oracleモジュール |
+-------------------+ | +-------------------+
(ローカルストレージ) +----------+ (ローカルストレージ)
| orcl |
+----------+
(クラスターデータベース)
(共有ストレージ:ASMを使用)
→ ASMによる多重化が可能

ホストは、ベアメタルを採用

共有ストレージは、ブロックストレージをオーダーしiSCSIでASMを構成。Endurance Storage(4IOPS/GB 100GB x 10)を採用。

ローカルストレージは、ベアメタルにHDDを追加して、そこにファイルシステムを作成。

共有ストレージのiSCSIネットワークは、RACパブリックIPネットワークと共有している。


▼ IBM Cloud環境での考慮事項


  • Oracle RACに必要なInterconnectには、ベアメタルのPublic NICを利用し、Public Primary IPアドレスを変更する

  • Oracle RACに必要なサービスIPアドレスには、Portable Private Subnetを利用し、Private Primary IPアドレスを変更する

  • Oracle製品(GIソフトウエアとDBソフトウエア共に)は、共有できる外部ストレージには導入しない


▼ 実施内容


- 設定、導入


  • ベアメタルのRHEL v7.4の設定

  • ベアメタルにOracle DB 11.2.0.4を導入


    • RAC環境導入のためのシステム調整

    • Grid Infrastructure のインストール

    • データベースソフトウエア のインストール

    • RACデータベースの作成




- Oracle RACの稼動確認

db、vip、scanリソース等の状況

[grid@racdb01 ~]$ crsctl status resource -t

--------------------------------------------------------------------------------
NAME TARGET STATE SERVER STATE_DETAILS
--------------------------------------------------------------------------------
Local Resources
--------------------------------------------------------------------------------
ora.DATA.dg
ONLINE ONLINE racdb01
ONLINE ONLINE racdb02
ora.LISTENER.lsnr
ONLINE ONLINE racdb01
ONLINE ONLINE racdb02
ora.asm
ONLINE ONLINE racdb01 Started
ONLINE ONLINE racdb02 Started
ora.gsd
OFFLINE OFFLINE racdb01
OFFLINE OFFLINE racdb02
ora.net1.network
ONLINE ONLINE racdb01
ONLINE ONLINE racdb02
ora.ons
ONLINE ONLINE racdb01
ONLINE ONLINE racdb02
--------------------------------------------------------------------------------
Cluster Resources
--------------------------------------------------------------------------------
ora.LISTENER_SCAN1.lsnr
1 ONLINE ONLINE racdb02
ora.LISTENER_SCAN2.lsnr
1 ONLINE ONLINE racdb01
ora.LISTENER_SCAN3.lsnr
1 ONLINE ONLINE racdb01
ora.cvu
1 ONLINE ONLINE racdb01
ora.mrcl.db
1 OFFLINE OFFLINE Instance Shutdown
2 OFFLINE OFFLINE Instance Shutdown
ora.oc4j
1 ONLINE ONLINE racdb01
ora.orcl.db
1 ONLINE ONLINE racdb01 Open
2 ONLINE ONLINE racdb02 Open
ora.racdb01.vip
1 ONLINE ONLINE racdb01
ora.racdb02.vip
1 ONLINE ONLINE racdb02
ora.scan1.vip
1 ONLINE ONLINE racdb02
ora.scan2.vip
1 ONLINE ONLINE racdb01
ora.scan3.vip
1 ONLINE ONLINE racdb01
[grid@racdb01 ~]$


- Oracle RACのパフォーマンステスト

*TBL2表にPL/SQLを使用して100万行をINSERTする時間を測定

データサイズは、16,384blocks x 8KB/block = 131MB

SEGMENT_NA SEGMENT_TYPE TABLESPACE_NAME EXTENTS BLOCKS
---------- ------------------ ------------------ ---------- ------------
TBL2 TABLE TBS_BIG 87 16,384

-- 約21秒で完了

SQL> begin
2 for i in 1..1000000 loop
3 insert into TBL2 values(i, rpad(to_char(i),100,'A'));
4 end loop;
5 commit;
6 end;
7 /

PL/SQLプロシージャが正常に完了しました。

経過: 00:00:21.35

Endurance Storage 4IOPS/GB という最速ではないストレージを使用したが十分な速度が出たので、

機会があれば、Endurance Storage 10IOPS/GB などのより速いストレージを使用してテストしてみたくなった。

以上