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 などのより速いストレージを使用してテストしてみたくなった。
2020/10追記)
IBM Cloudデータセンターでは、Oracle DB及びOracleアプリケーションの全世界共通の標準運⽤サービス(ベストプラクティス)を提供するManaged Oracleサービスも提供しています。
Oracle DB及びOracleアプリケーションの専⽤ “運⽤付きPaaSサービス”です。
特徴としては、
- 仮想化ソフトウェア(ハイパーバイザー)に Oracle VM が利⽤可能
- VM上で稼働するOracle製品のライセンス費⽤を最適化
- Oracle RACをサポート(最大4ノードまでサポート)
- 仮想サーバーとベアメタルサーバーを提供。
- Oracleサーバーと⾮Oracleサーバーを全てManaged Oracleの契約で⼀括提供可能
以上