はじめに
このエントリは、Sun CMT サーバー(ZFS使用)上のLogical Domain(LDom)に、Solaris 10をインストールし、Oracle database 11gR2 (11.2.0.2)のReal Application Cluster (RAC)をインストール、構成する手順をまとめたものです。LDomをご存じない方は、 "Beginners Guide to Oracle VM Server for SPARC: Understanding and Deploying Logical Domains" というドキュメントをご覧下さい。なお、他に以下の情報を参考にしました。
- Oracle Real Application Clusters
http://www.oracle.com/technetwork/database/clustering/overview/index.html - Oracle Database Online Documentation for 11gR2
http://www.oracle.com/pls/db112/portal.portal_db?selected=11&frame=#solaris_installation_guides - Supported Virtualization and Partitioning Technologies for Oracle Database and RAC Product Releases
http://www.oracle.com/technetwork/database/virtualizationmatrix-172995.html
目標
仮想化環境としてLogical Domainsを使い、Solaris 10 CMT Server上でOracle RAC DB 11gR2 (11.2.0.2) をインストール、構成します。以下のように2ノードのRACをセットアップします。- 2個のT2000サーバー
- 1個のSE3320 SCSI ディスクアレイ(T2000が使用。 Oracle ASM でストレージを管理)
準備
- クラスタ"SCAN" アドレスを取得します (Single Client Access Name (SCAN)).
- nslookup opnrac01-cluster-scan の結果、クラスタリスナーと同一のサブネット上に少なくとも3個のIPアドレスがラウンドロビンで検索できること。
例) 10.45.74.6, 10.45.74.7, 10.45.74.8 - このシナリオで、GNSが構成されていないこと
- 物理ホスト、LDomホストのホスト名とIPアドレス、Virtual IP、プライベートIPアドレスを取得します。
物理ホストIP | LDomホストIP | Virtual IP (VIP) | クラスタ Private IP |
10.35.74.24 | 10.45.74.14 | 10.45.74.10 | 10.10.10.10 |
10.35.74.25 | 10.45.74.15 | 10.45.74.11 | 10.10.10.11 |
T2000 ネットワーク構成 | IPアドレスの割り当て | 利用 | サブネット |
e1000g0 | Server Host IP | Control Domain | LAN |
e1000g1 | LDom Host IP | Guest Domain | Same as Cluster SCAN, VIP on LAN |
e1000g2 | Cluster Private IP | Guest Domain | Private |
e1000g3 | TBD | TBD |
[注意]
- 上記のIPアドレスは架空のアドレスです
- ストレージアレイの構成はこの資料の範囲外です
- T2000サーバの構成はこの資料の範囲外です
手順
LDomのコントロールドメインを構成する"Beginners Guide to Oracle VM Server for SPARC: Understanding and Deploying Logical Domains" の31~41ページの手順に従って、LDomのコントロールドメインを構成します。
LDomはT2000サーバーに構成されていることを確認しましょう。
# ldm -V
Logical Domain Manager (v 1.2)
Hypervisor control protocol v 1.3
Using Hypervisor MD v 1.1
System PROM:
Hypervisor v. 1.7.3. @(#)Hypervisor 1.7.3.c 2010/07/09 15:14
OpenBoot v. 4.30.4. @(#)OBP 4.30.4.b 2010/07/09 13:48
ネットワーク構成計画テーブルに従い、LDomのe1000g1とe1000g2を準備します。# /opt/SUNWldm/bin/ldm add-vsw net-dev=e1000g1 primary-vsw1 primary
# /opt/SUNWldm/bin/ldm add-vsw net-dev=e1000g2 primary-vsw2 primary
コントロールドメインは新しいゲストドメインを受け入れる準備ができました。サービスが有効であることを確認します。
# ldm list-services primary
VCC
NAME LDOM PORT-RANGE
primary-vcc0 primary 5000-5100
VSW
NAME LDOM MAC NET-DEV DEVICE DEFAULT-VLAN-ID PVID VID MTU MODE
primary-vsw0 primary 00:14:4f:fa:06:ae e1000g0 switch@0 1 1 1500
primary-vsw1 primary 00:14:4f:fa:77:19 e1000g1 switch@1 1 1 1500
primary-vsw2 primary 00:14:4f:fa:ff:4f e1000g2 switch@2 1 1 1500
VDS
NAME LDOM VOLUME OPTIONS MPGROUP DEVICE
primary-vds0 primary vol1boot /ldoms/opnaus14ldm/ldom.vdisk
vol1shared /dev/rdsk/c2t0d0s4
ゲストドメイン(LDom)を構成するこれは、最初のT2000サーバー上のRACノードをホストするドメインです。別のT2000サーバー上に類似のドメインを作成します。
ldm create opn1ldm
ldm set-vcpu 8 opn1ldm
ldm set-memory 8G opn1ldm
ldm add-vnet vnet1 primary-vsw1 opn1ldm
ldm add-vnet vnet2 primary-vsw2 opn1ldm
zfs create dpool/ldoms/opn1ldm
#
# Make sure the LDom's virtual disk for root device is more than 20GB for Solaris, RAC and Oracle DB binaries.
#
mkfile -nv 40G /ldoms/opn1ldm/rvol1.vdisk
ldm add-vdsdev /ldoms/opn1ldm/rvol1.vdisk vol1boot@primary-vds0
ldm add-vdisk vdisk1 vol1boot@primary-vds0 opn1ldm
#
# This shared disk is managed by ASM from both LDom nodes
#
ldm add-vdsdev /dev/rdsk/c2t0d0s4 vol1shared@primary-vds0
ldm add-vdisk sd1 vol1shared@primary-vds0 opn1ldm
ldm set-variable auto-boot\?=true opn1ldm
#
# Because we have 2 devices, we want to make sure that vdisk1 is the boot device.
# In the JumpStart Template for this domain, make sure the zfs disk is set properly.
# e.g. base_config_profile_zfs_disk="c0d0s0"
#
ldm set-variable boot-device=vdisk1 opn1ldm
ldm bind opn1ldm
ldm start opn1ldm
LDomの構成が完了したら、状態を確認しましょう。# ldm ls
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME
primary active -n-cv- SP 4 4G 2.0% 3d 19h 13m
opn1ldm active -n---- 5000 8 4G 15% 1h 36m
LDomのコンソールポート番号は5000ですので、メモしておきましょう。このポートはゲストドメインの仮想コンソールにアクセスする際に使用します。LDomの詳細情報は以下のコマンドで取得できます。MACアドレスはJumpStart サーバーの構成時に使いますので、メモしておきます。2回繰り返す# ldm ls -l opn1ldm
NAME STATE FLAGS CONS VCPU MEMORY UTIL UPTIME opn1ldm active -n---- 5000 8 4G 6.7% 1h 40m
MAC 00:14:4f:f9:ee:8c
HOSTID 0x84f9ee8c
CONTROL failure-policy=ignore
DEPENDENCY master=
VCPU VID PID UTIL STRAND 0 4 4.2% 100% 1 5 4.0% 100% 2 6 3.9% 100% 3 7 7.8% 100% 4 8 3.7% 100% 5 9 8.4% 100% 6 10 4.1% 100% 7 11 4.0% 100%
MEMORY RA PA SIZE 0x8000000 0x108000000 4G
VARIABLES boot-device=disk:a sd1:a vdisk1
NETWORK NAME SERVICE DEVICE MAC MODE PVID VID MTU vnet1 primary-vsw1@primary network@0 00:14:4f:f8:a1:56 1 1500 vnet2 primary-vsw2@primary network@1 00:14:4f:f8:45:4c 1 1500
DISK NAME VOLUME TOUT DEVICE SERVER MPGROUP vdisk1 vol1boot@primary-vds0 disk@0 primary sd1 vol1shared@primary-vds0 disk@1 primary
VCONS NAME SERVICE PORT opn1ldm primary-vcc0@primary 5000
この資料はRAC2ノードシナリオを元にしていますので、LDomの作成および構成が各ノードあたり2回発生します。しかし、RACおよびDBのrunInstallerやrunclunfyスクリプトの実行は1回だけ実施します。この1回の実行でで意義されたノードの確認や構成を全て実施します。
ゲストドメイン(LDom)を起動する
ゲストドメインを作成したら、Solaris OSをインストールする必要があります。やり方は色々あります。
- DVDからSolaris OSをインストール
- JumpStartサーバーからSolaris OSをインストール
- 事前構成済みのSolarisイメージをbつのLDomから複製する
コントロールドメインからコンソールポートを使い、LDomの仮想コンソールにtelnetコマンドでアクセスします。
[注意]JumpStartサーバーの構成は、このドキュメントの範囲外です。詳細の情報が必要な場合は、次のJumpStart Enterprise ToolKit(JET) Wikiをご覧下さい。# telnet localhost 5000 Trying 127.0.0.1... Connected to localhost.
Escape character is '^]'.
Connecting to console "opn1ldm" in group "opn1ldm" .... Press ~? for control options ..
{0} ok
Jumpstart Enterprise Toolkit
http://wikis.sun.com/display/JET/Home
("ok"プロンプトでご存知の)Open Boot Prompt (OBP)からコマンドを入力して、JumpStartサーバーから起動するようにします。
{0} ok boot vnet1 - install -w
Solarisシステムが立ち上がったら、コントロールドメインからzfsスナップショットコマンドを使ってバックアップしておきます。# zfs snapshot /ldoms/opn1ldm@BaseSolaris10u9
ヒント: このZFSスナップショットは、LDomイメージを複製したり、復旧する際に利用できます。全てのネットワーク構成が正しく動作していることを確認しましょう。
利用可能なデバイスを調べます。
# dladm show-dev
vsw0 link: up speed: 1000 Mbps duplex: full
vsw1 link: up speed: 1000 Mbps duplex: full
vsw2 link: up speed: 100 Mbps duplex: full
e1000g0 link: up speed: 1000 Mbps duplex: full
e1000g1 link: up speed: 1000 Mbps duplex: full
e1000g2 link: up speed: 100 Mbps duplex: full
e1000g3 link: unknown speed: 0 Mbps duplex: half
ネットワークインターフェースを確認します。# ifconfig -a
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
vsw0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 3
inet 10.35.74.24 netmask ffffff00 broadcast 10.35.74.255
ether 0:14:4f:fa:06:ae
nslookupコマンドを3回叩き、Cluster SCANの確認と、それぞれ異なる3個のIPアドレスにラウンドロビンで振られることを確認します。# nslookup opnrac01-cluster-scan
NTPを使ってネットワークの時間が同期していることを確認します。# ntpq -p
remote refid st t when poll reach delay offset disp
==============================================================================
*austin8-rtr-3- root.us.oracle.co 6 u 1003 1024 377 2.27 0.708 1.11
RACインストールのためにLDomを構成する
ベースとなるSolaris 10のインストール後、RACが要求するシステムパラメータ、カーネルパラメータを設定する必要があります。
/homeの自動マウントを解除する
GridとOracleユーザーのホームディレクトリはローカルの/homeに作成されますので、/homeを自動マウントされないように設定します。
# svcs autofs disabled 13:48:39 svc:/system/filesystem/autofs:default # vi /etc/auto_master #/home auto_home -nobrowse <<<< この行をコメントにする
# svcadm enable system/filesystem/autofs
グループ、ユーザーを作成し、リソース制御を設定する
groupadd oinstall groupadd dba groupadd asmadmin groupadd asmdba groupadd asmoper # # Solaris 10 Project based Resource Control instead of the use of /etc/system # No reboot required. User just need to log back in to inherit changes # projadd group.dba projmod -sK "project.max-shm-memory=(privileged,4G,deny)" group.dba projmod -sK "project.max-sem-ids=(privileged,100,deny)" group.dba projmod -sK "project.max-shm-ids=(privileged,100,deny)" group.dba projmod -sK "project.max-sem-nsems=(privileged,256,deny)" group.dba projmod -sK "process.max-file-descriptor=(privileged,65536,deny)" group.dba projects -l group.dba
echo "*** Make sure you have commented out /home in /etc/auto_master ****"
useradd -g oinstall -G dba,asmadmin,asmdba,asmoper -d /home/grid -s /bin/bash -K project=group.dba -m grid useradd -g oinstall -G dba,asmdba -d /home/oracle -s /bin/bash -K project=group.dba -m oracle
passwd oracle # Enter password for oracle user passwd grid # Enter password for grid user
mkdir -p /u01/app/oraInventory chown -R grid:oinstall /u01/app/oraInventory chmod -R 775 /u01/app/oraInventory/ mkdir -p /u01/11.2.0/grid chown -R grid:oinstall /u01/11.2.0/grid chmod -R 775 /u01/11.2.0/grid mkdir -p /u01/app/oracle mkdir /u01/app/oracle/cfgtoollogs chown -R oracle:oinstall /u01/app/oracle chmod -R 775 /u01/app/oracle mkdir -p /u01/app/oracle/product/11.2.0/db_1 chown -R oracle:oinstall /u01/app/oracle/product/11.2.0/db_1 chmod -R 775 /u01/app/oracle/product/11.2.0/db_1/ chown grid:asmadmin /dev/rdsk/c2t0d0s4 chmod 660 /dev/rdsk/c2t0d0s4
クラスタのプライベートネットワーク用にネットマスクを設定する
LDomのネットワークインターフェースを構成する# vi /etc/netmasks
10.10.10.0 255.255.255.0 # <<< この行を追加
SSHのタイムアウトを設定する# ifconfig -a # vi /etc/hosts
### プライベートホストのエントリを追加 # # Private Network for RAC Heartbeat # 10.10.10.10 opn1ldm-priv 10.10.10.11 opn2ldm-priv # echo "opn1ldm-priv" > /etc/hostname.vnet2 # ifconfig vnet2 plumb # ifconfig vnet2 11.11.11.10 netmask 255.255.255.0 up
# vi /etc/ssh/ssd_config
#### LoginGraceTimeを探し、値を600から0に変更する
LoginGraceTime 0
Oracle推奨のTCP/UDP設定を構成する/etc/init.d/nddconfig を作成し、以下のエントリを追加します。
#!/bin/sh
/usr/sbin/ndd -set /dev/tcp tcp_smallest_anon_port 9000
/usr/sbin/ndd -set /dev/tcp tcp_largest_anon_port 65500
/usr/sbin/ndd -set /dev/udp udp_smallest_anon_port 9000
/usr/sbin/ndd -set /dev/udp udp_largest_anon_port 65500
/usr/sbin/ndd -set /dev/udp udp_xmit_hiwat 65536
/usr/sbin/ndd -set /dev/udp udp_recv_hiwat 65536
LDomを再起動してもnddの設定を保存するように、ファイルのシンボリックリンクを作成します。.# ln -s /etc/init.d/nddconfig /etc/rc2.d/S31nddconfig
NTPを設定するクラスタノードの時間を同期するためにNTPを設定します。/etc/inet/ntp.conf にNTPサーバーのIPアドレスを含む、以下のエントリを追加します。
# Some of the devices have tuning parameters, called "fudge" factors,
# that can be set on the server line. See the ntpd documentation.
restrict default ignore
restrict 127.0.0.1
broadcastdelay 0.008
authenticate no
fudge 127.127.1.0 stratum 10
fudge 127.127.1.0 # localhost timeserver
driftfile /var/ntp/ntp.drift
# statsdir /var/ntp/ntpstats/
# filegen peerstats file peerstats type day enable
# filegen loopstats file loopstats type day enable
# filegen clockstats file clockstats type day enable
restrict 10.135.247.1 nomodify notrap
server 10.135.247.1
# Oracle RAC requirements
disable pll
slewalways yes
# End Oracle RAC requirements
NTPサービスをSMF経由で有効にします。# svcadm enable network/ntp
DNS構成の確認$ cat /etc/resolv.conf
nameserver 192.168.54.86
nameserver 192.168.54.89
search us.oracle.com, oraclecorp.com
domainとsearchエントリに複数存在することが理由で、runInstallerで問題が発生するようであれば、どちらかのエントリだけを残して下さい。[解決策]
domainもしくはsearchのどちらかを全てのクラスタノード中のresolv.confから削除して下さい。通常はsearchを残すほうがよいですが、状況に応じて対応して下さい。
resolv.confは全てのノードで一致することが重要ですので、全ノードのファイルから同じ行を削除して下さい。
SSHログインのセットアップ
SSHを手でセットアップする手順です。そうでない場合は、runInstaller.sh スクリプトが手順を自動的に管理します。
# su - grid
grid: ssh-keygen -t rsa (Press <RETURN> to take default values. Run this on both nodes)
grid: cd ~/.ssh
grid: cat > authorized_keys
(copy the key from id_rsa.pub LDom1 to LDom2 and vice versa)
(also copy the key of its own on the same machine i.e. the authorized_keys)
grid: ssh date (to test it out from both nodes.. no more password prompting)
oracleユーザーで同じことをします。RACのインストール
RACをインストールする前に、クラスタの確認コマンドを使って状態を確認しておくことをお勧めします。
${GRID_BINARIES}/runcluvfy.sh stage -pre crsinst -n opn1ldm,opn2ldm -r 11gR2 -verbose
GridインストーラのSSHが間違ったディレクトリ (/usr/local/bin)を指す問題次のような回避策を適用します。
あるコマンドがパスセットの間違いによって失敗する場合、以下のようにファイルをローカルにコピーし、編集してrunInstallerに渡すことができます。
1) インストーラのtarからファイルを取り出し、ローカルディレクトリにコピーします。
$ cp Disk1/stage/properties /tmp/properties
2) /tmp/properties/ssPaths_sol.properties中のSSH公開鍵の場所と、ssh-keygenバイナリの場所を、正しいパスに更新します。
$ cat /tmp/ssPaths_sol.properties
... SSH_HOST_KEY_LOC=/etc/ssh SSH_KEYGEN_PATH=/usr/bin/ssh-keygen ...
3) 次のオプションを付けて、再度インストーラ(runInstaller)を起動します。
# su - grid
$ ./runInstaller -J-Doracle.sysman.prov.PathsPropertiesLoc=/tmp/properties
Gridインストール時のバグについて"PRVF-5149 Error"が発生した場合は、以下の記載にあるように無視して下さい。
http://download.oracle.com/docs/cd/E16338_01/readmes.112/b56292/db_readme.htm#sthref505 (Nov 2010).
以下引用です。
Oracle Bug#10041397Oracle Virtual Machine(Oracle VM)でのクラスタ用Oracle Grid Infrastructureのインストールで、仮想共有ディスクがOracle ASMデバイスとして使用される場合、Oracle ASMデバイスの前提条件チェックで、これらのデバイスが共有されてないことを示す警告が表示されます。次に例を示します。
PRVF-5149 : WARNING: Storage "/dev/xvde1" is not shared on all nodes回避策: この警告は無視しても問題ありません。
データベースのインストール
su - oracle
runInstaller ...
でOKです。
まとめ
LDomはRAC環境に適しています。その理由をあげてみると…- 仮想環境
- システムリソースを動的に再割り当て、解除するのが簡単
- 物理サーバーを複数のLDomでパーティショニングして、セキュアで分離されたOS環境にてアプリケーションをホストできる
- システムの利用率とスペース/ユーティリティの利用に合わせて最適化できる
- LDomとZFSの組み合わせで、維持管理性が向上する
- Agility gained -- i.e. can be migrated from one physical server to another
原文はこちら。
http://blogs.oracle.com/sunabl/entry/deploying_oracle_rac_db_11
0 件のコメント:
コメントを投稿