- 構成概要と事前準備
- VMを作成してOracle Linux 8をインストールする
- iSCSI共有ストレージとBIND DNSサーバを構築する(この記事)
- GIインストール前準備
- Grid Infrastructureのインストール
- Oracleデータベースのインストールとデータベース作成
目次
この記事でやること
第3回では、Oracle RACに必要な2つのインフラ基盤を構築します。
| 作業 | 対象 |
|---|---|
| iSCSIイニシエータのインストール・接続設定 | ol8-rac19-21 / ol8-rac19-22 |
| iSCSIターゲットの設定 | ol8-iscsi-23 |
| BIND DNSサーバ構築 | ol8-iscsi-23 |
| DNSクライアント設定(dns-search追加) | ol8-rac19-21 / ol8-rac19-22 |
リブート後の注意: 第2回末尾のreboot後は
/dev/cdromのマウントが解除されています。dnf installを実行する前に各ノードで再マウントしてください。mount /dev/cdrom /media
事前準備:スナップショットの取得
作業開始前に、3台全VMのスナップショットを取得しておきます。article-02完了時点(OS初期設定済み)は、万が一の際に戻りたいクリーンな状態です。
Proxmox管理画面で各VMを選択し、「スナップショット」→「スナップショットを取る」から取得します。
| VM | スナップショット名(例) |
|---|---|
| ol8-rac19-21 | after-os-setup |
| ol8-rac19-22 | after-os-setup |
| ol8-iscsi-23 | after-os-setup |
スナップショット取得時はVMを停止する必要はありません。実行中のまま取得できます(メモリ状態も含めて保存したい場合は「RAMの状態を含む」にチェックを入れますが、通常はディスクのみで十分です)。
iSCSI設定
iSCSIネットワークの選定
本環境では3つのVLANがあります。iSCSIに使用するVLANは以下の理由でVLAN10(Public)を選択しています。
| VLAN | 用途 | iSCSIに使うと |
|---|---|---|
| VLAN10(10.0.10.0/24) | Oracle Public / データ通信 | 適切(データ系ネットワーク) |
| VLAN20(172.16.20.0/24) | RACインターコネクト | NG(Cache Fusion専用) |
| VLAN30(192.168.30.0/24) | 管理(SSH) | 非推奨 |
本来は専用のストレージVLANを用意するのがベストプラクティスですが、本環境は3VLAN構成のためVLAN10を使用します。Management LAN(VLAN30)をiSCSIに使うと、ストレージI/Oが大量に流れた際にSSHの管理接続が影響を受けるリスクがあります。
iSCSIイニシエータのインストール(ノード1・2)
iSCSIイニシエータとは、iSCSIストレージ(ターゲット)にネットワーク経由で接続するクライアント側のコンポーネントです。RACノード2台にインストールします。
# ホストとユーザの確認
hostname && whoami
# インストール済みか確認(インストール済みの場合はスキップ可)
rpm -q iscsi-initiator-utils
# iSCSIイニシエータパッケージをインストール
dnf install -y iscsi-initiator-utils
# iscsidデーモンを起動(iSCSI接続の維持・再接続を管理するバックグラウンドプロセス)
systemctl start iscsid
# システム起動時にiscsidが自動起動するよう設定
systemctl enable iscsid
# 起動状態の確認(Active: active (running) になっていること)
systemctl status iscsid --no-pager
インストール後、このノードのiSCSIイニシエータ名(IQN)を確認します。IQNはiSCSIターゲット側でACL登録する際に必要になります。
cat /etc/iscsi/initiatorname.iscsi
実行例:
root@ol8-rac19-21:~# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1988-12.com.oracle:cbea25b36a28
root@ol8-rac19-22:~# cat /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1988-12.com.oracle:c28044598d3c
確認したIQNは次の手順(ターゲット設定のACL登録)で使用するため、メモしておいてください。
ノード イニシエータIQN ol8-rac19-21 (確認した値を記入) ol8-rac19-22 (確認した値を記入)
iSCSIターゲットの設定(ストレージノード)
iSCSIターゲットとは、ディスクをネットワーク経由で提供するサーバ側のコンポーネントです。ストレージノード(ol8-iscsi-23)に設定します。
# ホストとユーザの確認
hostname && whoami
# iSCSIターゲット設定ツール targetcli をインストール
dnf install -y targetcli
# targetサービスを起動(targetcliで定義した設定を有効化する)
systemctl start target
# システム起動時にtargetが自動起動するよう設定(再起動後も共有ディスクが公開され続ける)
systemctl enable target
# 起動状態の確認(Active: active (exited) になっていること)
systemctl status target --no-pager
targetcliで共有ディスクを定義します。/dev/sdb(ASM DATA用)と /dev/sdc(ASM RECO用)をRACノードに公開します。
# バックストアの作成(iSCSIで公開するディスクを登録)
targetcli /backstores/block create name=lun0 dev=/dev/sdb
targetcli /backstores/block create name=lun1 dev=/dev/sdc
# ターゲットIQNの定義(このストレージノードのiSCSI識別名)
targetcli /iscsi create iqn.2026-04.lab.internal:ol8-iscsi-23
# LUNとバックストアの紐づけ
targetcli /iscsi/iqn.2026-04.lab.internal:ol8-iscsi-23/tpg1/luns create /backstores/block/lun0
targetcli /iscsi/iqn.2026-04.lab.internal:ol8-iscsi-23/tpg1/luns create /backstores/block/lun1
# ACL登録(接続を許可するイニシエータIQNを登録)
# ↓ 前の手順で確認したIQNに書き換えてから実行する
INIT_IQN_NODE1="iqn.1988-12.com.oracle:cbea25b36a28" # ol8-rac19-21
INIT_IQN_NODE2="iqn.1988-12.com.oracle:c28044598d3c" # ol8-rac19-22
targetcli /iscsi/iqn.2026-04.lab.internal:ol8-iscsi-23/tpg1/acls create ${INIT_IQN_NODE1}
targetcli /iscsi/iqn.2026-04.lab.internal:ol8-iscsi-23/tpg1/acls create ${INIT_IQN_NODE2}
# ACL登録確認
targetcli /iscsi/iqn.2026-04.lab.internal:ol8-iscsi-23/tpg1/acls ls
# 設定を保存(保存しないと再起動後に設定が消える)
targetcli saveconfig
設定全体を確認します。
targetcli ls /
iSCSIイニシエータの接続(ノード1・2)
ストレージノードのターゲット設定が完了したら、RACノードからiSCSI接続します。
# ホストとユーザの確認
hostname && whoami
# ターゲットを検出(ストレージノードのPublic IPを指定)
iscsiadm -m discovery -t st -p 10.0.10.23:3260
# ターゲットにログイン
iscsiadm -m node -T iqn.2026-04.lab.internal:ol8-iscsi-23 -p 10.0.10.23:3260 -l
# ディスクが認識されていることを確認(sdb・sdcが追加されていること)
lsblk
実行例(ノード1):
root@ol8-rac19-21:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 150G 0 disk
...
sdb 8:16 0 100G 0 disk
sdc 8:32 0 100G 0 disk
sdb(100 GB)と sdc(100 GB)が追加されていればiSCSI接続成功です。ノード1・2の両方で確認してください。
BIND DNSサーバ構築
なぜDNSが必要か
Oracle RACでは以下の理由からDNSが必須です。
- SCAN(Single Client Access Name) は3つのIPアドレスをラウンドロビンで解決する必要があり、
/etc/hostsでは実現できません - GIインストーラー(gridSetup.sh)はインストール前にSCAN名のDNS解決チェックを実施します。DNSが正しく設定されていないとインストールが進みません
BINDはストレージノード(ol8-iscsi-23)に構築します。
BINDインストール
# ホストとユーザの確認
hostname && whoami
# bind・bind-utilsをインストール
dnf install -y bind bind-utils
# インストール確認
rpm -q bind bind-utils
named.confの作成
デフォルトの /etc/named.conf をバックアップして置き換えます。
設定のポイントは以下のとおりです。
| 設定項目 | 内容 |
|---|---|
acl internal-network | クエリを受け付けるネットワーク範囲を定義。3つのVLAN(VLAN10/20/30)を対象とし、外部からのクエリは受け付けない |
listen-on port 53 { any; } | 全NICでDNSクエリを受信(VLAN10・20・30いずれからも応答できる) |
listen-on-v6 { none; } | IPv6は使用しないため無効化 |
allow-query | localhost と internal-network からのクエリのみ受け付ける |
recursion yes | 自ゾーン以外のドメイン(例: google.com)への問い合わせも外部に転送して解決する |
| ゾーン定義 | 正引き1件(internal)と逆引き3件(VLAN10/20/30)を定義。ゾーンファイルは次の手順で作成する |
# ホストとユーザの確認
hostname && whoami
# バックアップ取得
work_date=$(date +%Y%m%d)
cp -p /etc/named.conf{,.${work_date}}
# named.confを作成
cat > /etc/named.conf << 'EOF'
# 内部ネットワークのACL定義(クエリを受け付けるネットワーク範囲)
acl internal-network {
10.0.10.0/24;
172.16.20.0/24;
192.168.30.0/24;
};
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { none; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { localhost; internal-network; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
include "/etc/crypto-policies/back-ends/bind.config";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
# ゾーン定義
zone "internal" IN {
type master;
file "internal.zone";
allow-update { none; };
};
zone "10.0.10.in-addr.arpa" IN {
type master;
file "10.0.10.db";
allow-update { none; };
};
zone "20.16.172.in-addr.arpa" IN {
type master;
file "172.16.20.db";
allow-update { none; };
};
zone "30.168.192.in-addr.arpa" IN {
type master;
file "192.168.30.db";
allow-update { none; };
};
EOF
# 差分確認
diff /etc/named.conf{,.${work_date}}
# 構文チェック(何も出力されなければOK)
named-checkconf /etc/named.conf
ゾーンファイルの作成
正引き1ファイルと逆引き3ファイルを作成します。各ファイル作成後に構文チェックを実施します。
正引きゾーン(internal.zone)
ホスト名からIPアドレスを引くゾーンです。SCANの3エントリを同じホスト名で登録することでラウンドロビンを実現します。
cat > /var/named/internal.zone << 'EOF'
$TTL 86400
@ IN SOA ol8-iscsi-23.internal. root.internal. (
2025092901 ; Serial(更新時はインクリメントする)
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum
IN NS ol8-iscsi-23.internal.
IN A 10.0.10.23
; パブリックネットワーク
ol8-rac19-21 IN A 10.0.10.21
ol8-rac19-22 IN A 10.0.10.22
ol8-iscsi-23 IN A 10.0.10.23
ol8-rac19-vip-24 IN A 10.0.10.24
ol8-rac19-vip-25 IN A 10.0.10.25
ol8-rac19-scan IN A 10.0.10.26
IN A 10.0.10.27
IN A 10.0.10.28
; プライベートネットワーク(インターコネクト)
ol8-rac19-priv-21 IN A 172.16.20.21
ol8-rac19-priv-22 IN A 172.16.20.22
ol8-iscsi-priv-23 IN A 172.16.20.23
; 管理ネットワーク
ol8-rac19-mgmt-21 IN A 192.168.30.21
ol8-rac19-mgmt-22 IN A 192.168.30.22
ol8-iscsi-mgmt-23 IN A 192.168.30.23
EOF
# 構文チェック
named-checkzone internal /var/named/internal.zone
# → OK
パブリック逆引き(10.0.10.db)
IPアドレスからホスト名を引く逆引きゾーンです。
cat > /var/named/10.0.10.db << 'EOF'
$TTL 86400
@ IN SOA ol8-iscsi-23.internal. root.internal. (
2025092901 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum
IN NS ol8-iscsi-23.internal.
21 IN PTR ol8-rac19-21.internal.
22 IN PTR ol8-rac19-22.internal.
23 IN PTR ol8-iscsi-23.internal.
24 IN PTR ol8-rac19-vip-24.internal.
25 IN PTR ol8-rac19-vip-25.internal.
26 IN PTR ol8-rac19-scan.internal.
27 IN PTR ol8-rac19-scan.internal.
28 IN PTR ol8-rac19-scan.internal.
EOF
# 構文チェック
named-checkzone 10.0.10.in-addr.arpa /var/named/10.0.10.db
# → OK
プライベート逆引き(172.16.20.db)
cat > /var/named/172.16.20.db << 'EOF'
$TTL 86400
@ IN SOA ol8-iscsi-23.internal. root.internal. (
2025092901 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum
IN NS ol8-iscsi-23.internal.
21 IN PTR ol8-rac19-priv-21.internal.
22 IN PTR ol8-rac19-priv-22.internal.
23 IN PTR ol8-iscsi-priv-23.internal.
EOF
# 構文チェック
named-checkzone 20.16.172.in-addr.arpa /var/named/172.16.20.db
# → OK
管理ネットワーク逆引き(192.168.30.db)
cat > /var/named/192.168.30.db << 'EOF'
$TTL 86400
@ IN SOA ol8-iscsi-23.internal. root.internal. (
2025092901 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum
IN NS ol8-iscsi-23.internal.
21 IN PTR ol8-rac19-mgmt-21.internal.
22 IN PTR ol8-rac19-mgmt-22.internal.
23 IN PTR ol8-iscsi-mgmt-23.internal.
EOF
# 構文チェック
named-checkzone 30.168.192.in-addr.arpa /var/named/192.168.30.db
# → OK
BIND起動と動作確認
# ホストとユーザの確認
hostname && whoami
# BINDを起動・自動起動設定
systemctl start named
systemctl enable named
# 起動確認(Active: active (running) になっていること)
systemctl status named --no-pager
ストレージノード自身からDNSの動作を確認します。
# 正引きテスト(ホスト名 → IP)
dig ol8-rac19-21.internal @127.0.0.1
# 期待値:
# ol8-rac19-21.internal. 86400 IN A 10.0.10.21
# 逆引きテスト(IP → ホスト名)
dig -x 10.0.10.21 @127.0.0.1
# 期待値:
# 21.10.0.10.in-addr.arpa. 86400 IN PTR ol8-rac19-21.internal.
# SCANラウンドロビン確認(3つのIPが全て返ること)
dig ol8-rac19-scan.internal @127.0.0.1
# 期待値:
# ol8-rac19-scan.internal. 86400 IN A 10.0.10.26
# ol8-rac19-scan.internal. 86400 IN A 10.0.10.27
# ol8-rac19-scan.internal. 86400 IN A 10.0.10.28
ラウンドロビンの動作確認を行います。BINDはクエリのたびにIPの返却順序を循環させます。同じホスト名に対して繰り返しクエリを発行し、毎回先頭のIPが変わることを確認します。
for i in 1 2 3; do dig +short ol8-rac19-scan.internal @127.0.0.1; echo "---"; done
実行例(1回目は .26 から始まり、2回目は .27、3回目は .28 と先頭が循環する):
10.0.10.26
10.0.10.27
10.0.10.28
---
10.0.10.27
10.0.10.28
10.0.10.26
---
10.0.10.28
10.0.10.26
10.0.10.27
---
3つのIPが順番にローテーションしていれば、ラウンドロビンは正常に機能しています。
DNSクライアント設定(ノード1・2)
第2回でDNSサーバのIPアドレス(ipv4.dns)は設定済みです。BINDが起動したタイミングで、検索ドメイン(ipv4.dns-search)を追加します。
dns-search を設定することで、FQDNではなく短縮ホスト名(ol8-rac19-22 など)でも名前解決できるようになります。
# ホストとユーザの確認
hostname && whoami
# bind-utilsをインストール(dig・nslookupコマンドに必要)
dnf install -y bind-utils
# Public NIC(ens18)に検索ドメインを追加
nmcli connection modify ens18 ipv4.dns-search "internal"
nmcli connection up ens18
# 管理LAN NIC(ens20)に検索ドメインを追加
nmcli connection modify ens20 ipv4.dns-search "internal"
nmcli connection up ens20
# resolv.confを確認(nameserverとsearch internalが入っていること)
cat /etc/resolv.conf
RACノードからの名前解決テストを実施します。
# 正引き:ノード・VIP
dig +short ol8-rac19-21.internal # → 10.0.10.21
dig +short ol8-rac19-22.internal # → 10.0.10.22
dig +short ol8-iscsi-23.internal # → 10.0.10.23
dig +short ol8-rac19-vip-24.internal # → 10.0.10.24
dig +short ol8-rac19-vip-25.internal # → 10.0.10.25
# 正引き:SCAN(3つのIPが返ること)
dig +short ol8-rac19-scan.internal
# 正引き:インターコネクト
dig +short ol8-rac19-priv-21.internal # → 172.16.20.21
dig +short ol8-rac19-priv-22.internal # → 172.16.20.22
# 逆引き
dig +short -x 10.0.10.21 # → ol8-rac19-21.internal.
dig +short -x 10.0.10.22 # → ol8-rac19-22.internal.
# SCANラウンドロビン確認
for i in 1 2 3; do dig +short ol8-rac19-scan.internal; echo "---"; done
GIインストール前の必須確認: GIインストーラー(gridSetup.sh)はインストール前にSCAN名のDNS解決チェックを実施します。第4回に進む前に、SCANの3IPが正しく返ることを必ず確認してください。
まとめ
この記事では以下を完了しました。
- iSCSI共有ストレージの構築(ターゲット設定・イニシエータ接続)
- BIND DNSサーバの構築(正引き・逆引き4ゾーン・SCANラウンドロビン)
- RACノードへのDNSクライアント設定(dns-search追加・疎通確認)
次の記事では、GIインストール前準備(ユーザー・SSH・udev・HugePages設定)とGrid Infrastructureのインストールを行います。








