【轉】虛擬機器VMware安裝OracleRAC.環境綜述

ljm0211發表於2012-06-20

一、重要提示

 構建RAC最好能有實際的硬體環境,這樣不僅能有實戰經驗,也會獲得穩定的環境!
用虛擬機器安裝是萬不得已的選擇,安裝問題比較多而且不 穩定,也不能獲得ORACLE的技術
幫助。虛擬機器的單機Oracle還可以,但是安裝RAC就差強人意了。

二、虛擬機器環境

虛擬機器VMware小常識:

VMware Workstation 用於個人桌面系統,VMware GSX Server 與 VMWare ESX Server
用於企業伺服器。VMware Workstation與VMware GSX Server需要作業系統的支援,但
VMWare ESX Server不需要作業系統支援,可以在主機無作業系統的情況下也可安裝。

VMware GSX Server界於VMware Workstation與VMWare ESX Server之間。
可以說,ESX是企業級,GSX工作組級,Workstation個人 單機級。

  VMware Workstation和VMware GSX是作業系統上(Windows/Linux)的一個應用程式,必須
先 安裝主機作業系統後才能安裝,之後再虛擬新的系統。

VMware ESX則是獨立的,可在一臺裸機上進行安裝。比VMware GSX,VMware ESX效能
有很大提升。


安裝Oracle RAC可以使用VMware GSX Server,也可使用Workstation。VMware GSX Server
並不支援share folder,這一點需要注意。

 事實表明,個人使用者不需要安裝VMware GSX Server,推薦使用VMware Workstation。VMware
GSX Server 執行速度較慢。


三、虛擬機器Linux作業系統


作業系統的安裝介質(安裝光碟等...)很重要,要盡力保證介質的可用性。

不良介質會導致如下問題:
讀 取安裝包問題發生致命錯誤
複製完安裝包不能引導
驅動裝置不能識別
其他意外問題

安裝RAC環 境,不推薦使用Red Hat Enterprise Linux AS 4安裝Oracle 9i RAC,BUG較多。  

 安裝作業系統,選擇安裝包時可根據自已需要,不必盲目全選(當然如果你空間夠大另當別論),
即便後面過程需要別的元件,也可從光碟上十分 方便地RPM。

有些情況下,正常安裝企業版,複製完所有檔案包後,系統提示重啟,然而重啟後從硬碟引導
卻無法啟動,游標停留 在左上角或者列印一些資訊再停留在左上角。這個問題是由於grub引導被
破壞,或者grub引導安裝失敗,解決方案就是手工再進行安裝(詳細方法 在《伺服器配置例項(一).
HP Prolient ML570 伺服器》也描述過,請檢視):

 即使用Red Hat Linux 啟動光碟,在boot下輸入linux rescure回車,載入完一堆鏡象,會出現提示
符,可進行 命令列操作。
注意:有時在boot下輸入linux rescure回車,載入一些東西后,不提示命令列,這時多半與引導
介質有關,請 更換可靠的安裝介質。使用不同版本的安裝介質引導後,在命令列下輸入fdisk -l 會
無任何反應,儘量使用相同版本的介質引導修復。


四、使用虛擬機器Linux作業系統

 系統啟動執行日誌記錄在/var/log/messages,對於日常問題可以檢視詳細原因。這裡列舉
一些常見問題:

 1. smart 服務啟動失敗,日誌裡顯示 Device: /dev/sda, Bad IEC (SMART) mode page,
err=-5, skip device

 解答:SMART是硬碟生產商建立的一個工業標準,這個標準就是在硬碟上儲存一些實時情況。
如讀寫情況,可靠程度,錯誤率等屬性。每個屬 性都有一個1位元組(bytes,大小1-253)的標準值,其
中還有另一個位元組儲存關鍵值,如果此時硬碟某個屬性值接近小於或達到關鍵值,那你硬 盤你就
差不多該報廢了。SMART一般用於檢視硬碟的健康情況,也還需要實際的硬碟支援。虛擬機器是沒
有任何必要去啟動這個服務的。

另 系統啟動的服務一定要篩選一些,沒有必要啟動一大堆服務佔用大量的時間與記憶體,尤其在
虛擬機器這個有限資源下,這裡列出筆者服務列表:

 gpm
network
readahead
readahead_early
rexec
rlogin
rsh
sshd
syslog
xinetd

rexec rlogin rsh,這三個屬於rsh相關服務,如服務列表沒有顯示,可以去安裝光碟裡查詢
rsh-server RPM包進行安裝。這個服務的作用以後會提到。

 第四張光碟上 rsh-server-0.17-25.3.i386.rpm

[root@linuxrac6 RPMS]# rpm -ivh rsh-server-0.17-25.3.i386.rpm 
[root@linuxrac6 RPMS]# chkconfig rsh on
[root@linuxrac6 RPMS]# chkconfig rlogin on
[root@linuxrac6 RPMS]# chkconfig rexec on

[oracle@linuxrac9 ~]$ rpm -qa | grep rsh
rsh-0.17-25.3
rsh-server-0.17-25.3

[root@linuxrac6 RPMS]# chkconfig --list

...
xinetd based services:
rsh:    on
chargen-udp:    off
finger: off
rlogin: on
chargen:        off
krb5-telnet:    off
rexec:  on
rsync:  off

 安裝其他服務方面,方法相似。

 2. 在Linux環境下點選選單項(如teminal),不能彈出視窗

解答:圖省事的話重啟就能解決,沒有小bug的操作 系統是不存在的。


五、配置兩臺虛擬機器

 安裝好一臺虛擬機器作業系統後,可以透過複製方法,構建另一臺環境。

示例:

LinuxRac6.vmdk
LinuxRac6-s001.vmdk 
LinuxRac6-s002.vmdk 
LinuxRac6-s003.vmdk 
LinuxRac6-s004.vmdk 
LinuxRac6-s005.vmdk 
nvram
rhel4.vmx

LinuxRac6 是虛擬機器的名稱,全部複製完成後,不要修改檔名,只需要單機啟動修改
主機名和IP地址即可,複製後網路卡會有衝突,可從VM -> VM Setttings -> 刪除並重新新增
網路卡即可。


六、配置雙機環境

 這裡假設有兩臺主機 linuxrac9 與 linuxrac6。

---A.雙網路卡

 RAC裡每個節點機都需要兩塊網路卡並使用固定IP,其中一個作為兩個節點機內部互相通訊之用,
另外一個網路卡作為外部網路連線之用。
添 加多個網路卡,可從虛擬機器軟體選單 VM -> VM Setttings -> 新增,要選擇 Ethernet Adapter,
然 後一直預設並點選NEXT直到結束。

兩臺節點機全部新增完成後,分別啟動兩臺節點機,在System Setting -> Network 配置網路。
具體配置示例如下(因為是複製的,虛擬機器名稱一樣是沒有關係的):

 虛擬機器1名:LinuxRac6

主機名:linuxrac9
eth0:134.98.105.70  
eth1:192.168.0.6

虛擬機器2名:LinuxRac6

主 機名:linuxrac6
eth0:134.98.105.71 
eth1:192.168.0.9

---B.節點間hosts檔案配置

RAC節點機互相不能透過IP來訪問,而必須使用 主機名。因此需要設定hosts內容。另外
需要確保RAC節點名沒有出現在回送地址中。
即在 /etc/hosts 檔案的回送地址中不包含節點名(linuxrac9 或 linuxrac6)。

如下所示:
127.0.0.1     linuxrac9 localhost.localdomain localhost
在 RAC 安裝期間將接收到以下錯誤資訊:
ORA-00603:ORACLE server session terminated by fatal error
ORA-29702:error occurred in Cluster Group Service operation

 下面是兩臺節點機的 /etc/hosts 內容:

 $ cat /etc/hosts
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain   localhost
134.98.105.170  linuxrac9
134.98.105.171  linuxrac6
192.168.0.9     linuxrac9-priv
192.168.0.6     linuxrac6-priv

設定完成後,可在多個節點上ping linuxrac9 ,ping linuxrac6, ping linuxrac9-priv ... 來測試是否
正確。

---C.節點間訪問配置

 在節點上執行Oracle Universal Installer進行RAC安裝時,它會使用 rsh(或 ssh)命令將
Oracle 軟體複製到RAC叢集的其他節點上。執行Oracle Installer (runInstaller) 的節點必須為
RAC叢集的其他節點所 信任。
即你可以在任一臺節點,透過rsh(或ssh)訪問其他所有節點,而不需要輸入密碼。

(1) 配置(rsh)

rsh 使用 /etc/hosts.equiv 檔案 或 使用者目錄下 .rhosts 檔案進行驗證。

rsh安裝配置見上面< 四、使用虛擬機器Linux作業系統>一節。

 下面是兩臺節點機的 /etc/hosts.equiv  內容:
$ cat /etc/hosts.equiv
linuxrac9
linuxrac6
linuxrac9-priv
linuxrac6-priv

或 者

root使用者設定
$ cat /root/.rhosts
linuxrac9
linuxrac6
linuxrac9-priv
linuxrac6-priv
root 使用者需要使用/etc/hosts.equiv檔案,另外須修改/etc/pam.d/rsh驗證。
#%PAM-1.0
# For root login to succeed here with pam_securetty, "rsh" must be
# listed in /etc/securetty.
auth       required     pam_nologin.so
#auth       required    pam_securetty.so
auth       required     pam_env.so
auth       required     pam_rhosts_auth.so
account    required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth

 oracle使用者設定
$ cat /home/oracle/.rhosts
linuxrac9
linuxrac6
linuxrac9-priv
linuxrac6-priv

測 試:

正確效果:在linuxrac6節點透過rsh訪問linuxrac9節點(注意最後一行):
[root@linuxrac6 ~]# rsh linuxrac9 date
connect to address 134.98.105.170: Connection refused
Trying krb4 rsh...
connect to address 134.98.105.170: Connection refused
trying normal rsh (/usr/bin/rsh)
Fri Mar 14 18:40:12 CST 2008

錯誤效果:在linuxrac9節點透過rsh訪問linuxrac6節點(注 意最後一行):
[root@linuxrac9 ~]# rsh linuxrac6 date
connect to address 134.98.105.171: Connection refused
Trying krb4 rsh...
connect to address 134.98.105.171: Connection refused
trying normal rsh (/usr/bin/rsh)
Permission denied.

(2) 配置(ssh)

但在實際 安裝Oracle10g過程中,發現rsh系列的rcp操作會失敗,Oracle10g還是最好配置ssh
方式。Oracle9i還沒有發現這個 問題。

 設定oracle使用者的互相信任機制,分別在所有節點機下以oracle使用者執行:

$ /usr/bin/ssh-keygen -t rsa
命令會
將公共金鑰寫入 ~/.ssh/id_rsa.pub 檔案
將 私有金鑰寫入 ~/.ssh/id_rsa 檔案

$ /usr/bin/ssh-keygen -t dsa
命令會
將公共金鑰寫入 ~/.ssh/id_dsa.pub 檔案
將私有金鑰寫入 ~/.ssh/id_dsa 檔案

 兩個命令都會提示確認生成檔案的路徑和密碼,密碼可為空。這些金鑰不能隨意傳遞給其它
機器。

 [oracle@linuxrac9 .ssh]$ /usr/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
99:0d:1e:cb:7c:12:09:02:15:78:3e:f9:55:e7:12:38
[oracle@linuxrac9 .ssh]$ /usr/bin/ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_dsa.
Your public key has been saved in /home/oracle/.ssh/id_dsa.pub.
The key fingerprint is:
3e:43:04:7e:23:1c:87:25:74:9b:ef:53:42:17:af:79


確定所有節點上是否已經存在授權金鑰檔案 (~/.ssh/authorized_keys),我們將在所有節點機上
重新創 建,同樣在某臺節點機(如linuxrac9)的oracle使用者下執行:

 $ touch ~/.ssh/authorized_keys
$ ssh linuxrac9 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ ssh linuxrac9 cat ~/.ssh/id_dsa.pub  >> ~/.ssh/authorized_keys
$ ssh linuxrac6 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ ssh linuxrac6 cat ~/.ssh/id_dsa.pub  >> ~/.ssh/authorized_keys

 命令執行會提示一些資訊,按提示執行即可。

在linuxrac9上,我們在授權金鑰檔案 (~/.ssh/authorized_keys) 中已經獲得了來自叢集中各個節點
的 RSA 和 DSA 公共金鑰內容。現在將其複製到叢集中的其餘節點。雙節點叢集中,剩下的節點就是
linuxrac6。使用 scp 命令將授權金鑰檔案複製到叢集中的其餘所有節點:

$ scp ~/.ssh/authorized_keys linuxrac6:~/.ssh/authorized_keys

最後在所有節點下測試ssh,第一次需要密碼,以後不用,方法與 rsh相同:

$ ssh linuxrac9 date
$ ssh linuxrac6 hostname
$ ssh linuxrac9-priv date
$ ssh linuxrac6-priv hostname


---D. 節點間時間同步

 RAC不能容忍有時間不同步的現象發生,否則在安裝和執行過程會出現各類嚴重錯誤。
然而虛擬機器經常會出現每個節點機時間步調不一致的現 象,很有必要每隔一段時間同步所有節點
機的時間。筆者這裡圖省事,使用簡單的rsh linuxrac6 date -s的方法,透過crontab呼叫儲存shell進行
同步,這種方法不推薦,呼叫頻繁會產生殭屍程式。

 [root@linuxrac9 liwei]# cat setdate.sh
#!/bin/bash
SETVALUE=`date +'%H:%M:%S'`
rsh linuxrac6 date -s $SETVALUE
echo "linuxrac9:" `date`  >> /root/liwei/setdate.log
echo "linuxrac6:" `rsh linuxrac6 date` >> /root/liwei/setdate.log

 [root@linuxrac9 liwei]# crontab -e

* * * * * /root/liwei/setdate.sh


方法很多可以使用ntp之類的工具。


七、設定共享磁碟

 很多網上文章提及plainmaker.exe去建立共享磁碟,是以前的版本,新版本使用vm-diskmanager。
命令列下進行 目錄 E:\Program Files\VMware\VMware GSX Server使用vmware-vdiskmanager
建立共 享磁碟。

 如:
E:\Program Files\VMware\VMware GSX Server>vmware-vdiskmanager -c -s 4Gb -a lsilogic -t 1
"E:\LinuxRacShareDisk\LinuxShareDisk.vmdk"
Using log file C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\vdiskmanager.log
Creating a split disk 'E:\LinuxRacShareDisk\LinuxShareDisk.vmdk'
Virtual disk creation successful.
實際使用中,發現共享磁碟極不穩定,複製檔案會突然關機,後重新建立,仍然如此。試了不少
次, 這裡列出最後建立語句,也許是運氣吧,一直比較穩定:

E:\Program Files\VMware\VMware GSX Server>vmware-vdiskmanager -c -s 1Gb -a lsilogic -t 2 "E:\VMDISK\LinuxShareDisk.vmdk"
Using log file C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\vdiskmanager.log
Creating monolithic preallocated disk 'E:\VMDISK\LinuxShareDisk.vmdk'
Create: 100% done.
Virtual disk creation successful.

 筆者認為,在虛擬機器硬碟的設定中,“動態增加大小”和“分割成小檔案”兩個選項不僅降低了效能,也
是系統很不穩定的重要因素。推薦不要使 用!

 命令的具體引數含義,可以輸入vmware-vdiskmanager詳細檢視,不再說明。 
共享磁碟建立後,需要將它分別新增到兩臺 節點機上。

方法:
Edit Vitrual Machine -> Hard Disk -> Add -> Next -> 選擇Hard Disk Next ->Using an exsit virtual
disk Next-> Browse 選擇 E:\LinuxRacShareDisk\LinuxShareDisk.vmdk 注意這裡必須設定 Advance
SCSI 1:0。具體為何設定為SCSI 1:0,可以仔細研讀配置檔案rhel4.vmx,便可知曉。
確定後會 在配置檔案rhel4.vmx中體現,另一臺節點機同樣處理。

注意,新增完共享磁碟後,必須在各自rhel4.vmx檔案中新增如 下內容,不可重複新增:

disk.locking = "FALSE"
scsi1.sharedBus = "virtual"
scsi1:0.mode = "persistent"   

 這樣兩臺節點機才可以正常使用共享磁碟。
測試方法,可以在兩臺節點機上透過fdisk -l檢視。以下是已經分好區的示例:

[root@linuxrac9 ~]# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         978     7855753+  83  Linux
/dev/sda2             979        1043      522112+  82  Linux swap

Disk /dev/sdb: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         522     4192933+  83  Linux

八、最後

本文主要綜述RAC環境的基本條件,後續文章會介紹實際操作的示例。安裝配置RAC是比較複雜
的,須要有足夠的耐心一點一點的克服下去。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/11411056/viewspace-733432/,如需轉載,請註明出處,否則將追究法律責任。

相關文章