RHEL4 U5 + CLUSTER4.5 + GFS4.5 + Oracle10g HA調試文檔(一)

火星人 @ 2014-03-04 , reply:0


RHEL4 U5 + CLUSTER4.5 + GFS4.5 + Oracle10g HA調試文檔(一)

RHEL4 U5 + CLUSTER4.5 + GFS4.5 + Oracle10g  HA調試文檔

一、客戶需求
客戶的資料庫跑的業務是營收帳Boss系統,對數據安全要求較高,需要做oracle的HA(主備),客戶屬於經濟不發達地區,希望項目費用精簡.

二、項目分析
經過分析,本例項目解決方案,採用RedHat EL4 U5配合Cluster Suite4.5套件,實現一主一備的Oracle10g的HA高可用集群.使用GFS文件系統來格式化磁碟陣列櫃.
採用RedHat Linux系統的優點在於,成本經濟,系統穩定,技術支持較多,且包含Cluster集群套件,更有gfs全局文件系統對資料庫等使用共享存儲空間的支持優勢.
RHCS: Red Hat Cluster Suite 是一款能夠提供高性能、高可靠性、負載均衡、高可用性且經濟廉價的集群工具集,本項目使用其組件之一:高可用集群(HA). 高可用集群通過消除單一故障點和節點故障轉移功能(當一個集群節點失敗后將服務轉移到其他節點上)來提供高可用性.節點故障轉移功能對客戶端是透明的,當節點失敗后客戶端並不會看到節點之間的服務轉移.Red Hat Cluster Suite通過高可用服務管理組件來提供一個高可用集群.
    GFS: Global File System為Red Hat Cluster Suite提供一個集群文件系統,CFS允許多個節點在塊級別上共享存儲.

三、軟硬體歸檔
(1)、硬體平台:
HP DL380伺服器2台
CPU:2個Intel(R) Xeon(TM) CPU 2.80GHz;
MEM :4G ;
HardDisk: 72.8 GB
HP Modular Smart Array 500G2磁碟陣列櫃1套

(2)、軟體平台:
RHEL 4 U5、Cluster Suite4.5、GFS Suite4.5、Oracle10g、SSH客戶端、VNC客戶端、Oracle10g客戶端、PL/SQL、Oracle10g for RedHat 腳本

四、軟體獲取
(1)、RHEL 4 U5:5張CD光碟
Cluster Suite4.5 :1張CD光碟
GFS Suite4.5:1張CD光碟
以上7張光碟可向RedHa代理商索取.

(2)、以下軟體可網上下載:
Oracle10g:oracle網站下載,文件名10201_database_linux32.zip
SSH客戶端:SSHSecureShellClient-3.2.9
VNC客戶端:HA-vnc-4.0-x86_win32-KC
Oracle10g客戶端:10g_win32_db.zip
PL/SQL(oracle工具):PL/SQL Developer 7.0
Oracle10g for RedHat 腳本:內容見附件

五、IP地址、主機名規劃
伺服器1: 公網:192.168.16.201/24   私網(心跳):10.10.10.201/24 主機名smsdb01.scn.com
伺服器2: 公網:192.168.16.202/24   私網(心跳):10.10.10.202/24主機名smsdb02.scn.com
Cluster虛IP:192.168.16.203


六、安裝調試步驟一覽
Ⅰ、伺服器、磁碟櫃的硬體安裝
Ⅱ、RedHat操作系統安裝
Ⅲ、上傳軟體
Ⅳ、Cluster Suite安裝與GFS Suite安裝,自啟動服務設置,測試Cluster
Ⅴ、給磁碟櫃分區、建立邏輯卷,並以GFS文件系統格式化磁碟櫃的邏輯卷,掛載GFS分區等
Ⅵ、Oracle10g For Linux安裝
Ⅶ、Oracle10g For Linux建資料庫
Ⅷ、Oracle10g手工測試
Ⅸ、Cluster配置、虛IP測試
Ⅹ、Cluster + Oracle10g聯合測試

七、實際操作步驟

Ⅰ、伺服器、磁碟櫃的硬體安裝
伺服器上架:客戶與廠商負責
磁碟陣列上架及連接伺服器:客戶與廠商負責

Ⅱ、RedHat操作系統安裝
兩台伺服器要完全一致,除IP地址、主機名等;
選擇中文與英文2種語言支持,默認英文;
硬碟72G,劃分三個區 / 根分區25G,SWAP分區2G,剩餘空間給/home分區;
把識別出來的HP Modular Smart Array 500G2磁碟櫃,全部都劃分為LVM邏輯卷,或者不劃分,等操作系統裝好之後再用fdisk劃分;
2塊網卡分別設置靜態IP地址,具體見「第五節」;
默認時區:亞洲/上海
不裝防火牆;使用SELINUX;
軟體安裝要求:xwindows 、Gnome、開發包、administartor tools 、system tools(加裝vnc服務)等;

Ⅲ、上傳軟體
在本地筆記本電腦中安裝SSHSecureShellClient-3.2.9
(順便安裝VNC客戶端HA-vnc-4.0-x86_win32-KC、Oracle10g客戶端10g_win32_db.zip、PL/SQL(oracle工具):PL/SQL Developer 7.0)
打開SSHSecureShell,以root用戶分別SSH連接到伺服器1與伺服器2,在每台伺服器的root根目錄下建立如下目錄:
/root/ cluster4.5
/root/GFS4.5
/root/oracle10g
利用SSHSecureShell的FTP工具
將cluster4.5光碟中的全部文件,分別上傳到伺服器1與伺服器2的/root/ cluster4.5目錄;
將GFS4.5光碟中的全部文件,分別上傳到伺服器1與伺服器2的/root/ GFS4.5目錄;
將10g_win32_db.zip,分別上傳到伺服器1與伺服器2的/root/ oracle10g目錄;

Ⅳ、Cluster Suite安裝與GFS Suite安裝
(1)、啟動遠程桌面服務連接(本項目遠程連接桌面使用vnc,未使用xmanger)
在伺服器1與伺服器2上,分別以root用戶執行以下命令,目的是啟動vnc伺服器端,使得可以遠程打開redhat的gnome桌面
#vncserver :1
#vncserver :1
提示配置vnc服務的密碼,本項目中密碼為******
說明:此舉將在當前用戶root的目錄下創建了.vnc目錄,以及xstartup配置文件.在這裡要說明一下,第一次執行vncserver命令啟動vnc伺服器端,用vnc客戶端連接遠程桌面時,因一些vnc伺服器端的配置參數未配置,登陸遠程桌面色彩等達不到使用要求,因此:
#vi ~/.vnc/xstartup
把下列2句前的#號的註釋去掉
#unset SESSION_MANAGER
#exec /etc/X11/xinit/xinitrc

twm &
句前加上#號註釋掉,並加上以下一句
startx &
保存退出
查詢vnc進程號,殺掉當前vncsever進程,重新啟動vnc服務
#ps –ef |grep vnc
#vncserver -kill :1
# vncserver :1
說明:因linux屬於多進程服務的操作系統,因此linux下的vnc服務進程,後面有一個進程號.
現在可以用vnc客戶端遠程連接兩台伺服器了.

(2)、:安裝Cluster Suite與GFS Suite

A、安裝Cluster Suite
Vnc連接到伺服器1與伺服器2,打開終端,進入Cluster的目錄,
#cd /root/cluster4.5
執行以下命令,給當前的目錄下及子目錄下所有文件可執行許可權
#chmod +x –R *
或者
#chmod 755 –R *
執行安裝
#./autorun
將彈出cluster安裝的對話窗口,一步一步按提示往下走,把所有cluster套件(32個包)全部裝上.
注:安裝過程中,將提示分別插入redhat linuxAS4 U5的第4張和第2張盤(各2次).

B、安裝GFS Suite
Vnc連接到伺服器1與伺服器2,打開終端,進入Cluster的目錄,
#cd /root/GFS4.5
執行以下命令,給當前的目錄下及子目錄下所有文件可執行許可權
[#chmod +x –R *
或者
#chmod 755 –R *
執行安裝
#./autorun
將彈出GFS安裝的對話窗口,一步一步按提示往下走,把所有GFS套件(16個包)全部裝上.

(3)、將cluster與GFS的各項服務設置開機自啟動
在兩台伺服器上分別執行以下命令
#chkconfig --add cman
#chkconfig --add ccsd
#chkconfig --add clvmd
#chkconfig --add rgmanager
#chkconfig --add gfs
#chkconfig --add fenced

#chkconfig ccsd on
#chkconfig cman on
#chkconfig clvmd on
#chkconfig rgmanager on
#chkconfig gfs on
#chkconfig fenced on

Ⅴ、給磁碟陣列櫃LVM分區、建立邏輯卷

(1)、檢查當前伺服器的硬碟與磁碟陣列掛接(在伺服器1上執行)
# fdisk -l
Disk /dev/cciss/c0d0: 72.8 GB, 72833679360 bytes
255 heads, 32 sectors/track, 17433 cylinders
Units = cylinders of 8160 * 512 = 4177920 bytes
Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c0d0p1   *           1        6275    25601984   83  Linux
/dev/cciss/c0d0p2            6276        6776     2044080   82  Linux swap
/dev/cciss/c0d0p3            6777       17433    43480560   83  Linux

Disk /dev/cciss/c1d0: 599.9 GB, 599998871552 bytes
255 heads, 63 sectors/track, 72945 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot      Start         End      Blocks   Id  System

(2)、發現/dev/cciss/c1d0(容量600G)磁碟陣列,給/dev/cciss/c1d0分區
# fdisk /dev/cciss/c1d0

The number of cylinders for this disk is set to 72945.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
   (e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):

輸入m查看當前可用命令,輸入p可查看當前磁碟分區情況,輸入n可建立新的分區,等等
我們輸入p
Command (m for help): p

Disk /dev/cciss/c1d0: 599.9 GB, 599998871552 bytes
255 heads, 63 sectors/track, 72945 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

           Device Boot      Start         End      Blocks   Id  System
可以看到,當前沒有分區,我們輸入n,建立一個新的分區

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
輸入e建立擴展分區,輸入p建立主分區,由於我們要把oracle的資料庫建立在共享磁碟上,沒有其他用途,所以,我們只建立一個主分區即可,輸入p
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4):
輸入主分區號,值為1-4,我們輸入1
Partition number (1-4): 1   
Partition 1 is already defined.  Delete it before re-adding it.
注意:主分區我已經事先建立好了,這裡只是演示一下
輸入p,查看一下
Command (m for help): p

Disk /dev/cciss/c1d0: 599.9 GB, 599998871552 bytes
255 heads, 63 sectors/track, 72945 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c1d0p1   *           1       72945   585930681   83  Linux

注意:因為要建立動態磁碟系統,以使GFS格式化磁碟陣列櫃后可以動態調整分區大小,因此需要將剛建立的主分區類型更改為8e,即lvm類型的動態磁碟分區.
輸入t
Command (m for help): t
Selected partition 1
Hex code (type L to list codes):
輸入8e
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): 8e
檢查一下,輸入p,見下面的紅色字體
Disk /dev/cciss/c1d0: 599.9 GB, 599998871552 bytes
255 heads, 63 sectors/track, 72945 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c1d0p1   *           1       72945   585930681   8e  Linux LVM
輸入w,保存一下,OK
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

激活剛創建好的分區
#partprobe

(3)、在伺服器2上檢查自動識別的LVM分區(伺服器1上的分區操作,伺服器2應可以自動識別)
#service clvmd status
#service clvmd start
說明:因為我們已經安裝了cluster與GFS服務,所以,伺服器1的分區操作,在伺服器2檢查時,建議重新啟動一下clvmd服務.
# fdisk -l

Disk /dev/cciss/c0d0: 72.8 GB, 72833679360 bytes
255 heads, 32 sectors/track, 17433 cylinders
Units = cylinders of 8160 * 512 = 4177920 bytes

           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c0d0p1   *           1        6275    25601984   83  Linux
/dev/cciss/c0d0p2            6276        6777     2048160   82  Linux swap
/dev/cciss/c0d0p3            6778       17433    43476480   83  Linux

Disk /dev/cciss/c1d0: 599.9 GB, 599998871552 bytes
255 heads, 63 sectors/track, 72945 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

           Device Boot      Start         End      Blocks   Id  System
/dev/cciss/c1d0p1   *           1       72945   585930681   8e  Linux LVM

注:應該也可以看到磁碟陣列櫃,以及分區類型.

(4)、動態磁碟的建立
提醒:以下A、B、C、D步驟只在伺服器1上操作,步驟E需要在伺服器1與2上都做.

A:建立物理卷
# pvcreate /dev/cciss/c1d0p1
查看一下建立的物理卷,注意PV Name以及PV size
# pvdisplay
  --- Physical volume ---
  PV Name               /dev/cciss/c1d0p1
  VG Name               oracle10g
  PV Size               558.79 GB / not usable 1.93 MB
  Allocatable           yes
  PE Size (KByte)       4096
  Total PE              143049
  Free PE               21
  Allocated PE          143028
  PV UUID               v1Ff6t-BCYh-hoeb-Jij7-Yujg-uklx-taTUk3

B:建立邏輯卷組,組名為oracle10g
#vgcreate oracle10g /dev/cciss/c1d0p1
檢查一下建立的邏輯卷組
# vgdisplay

C:建立邏輯卷
注意,邏輯卷大小要小於物理卷的大小(下面有說明),名字是oracle,邏輯卷組名是剛才建立的oracle10g
#lvcreate -L  558.7G  -noracle oracle10g
檢查一下建立的邏輯卷
# lvdisplay

說明:
1、建立邏輯卷時,大小要小於上面建立物理卷的大小,我是這麼理解的,至於小多少可以建立成功,要試驗一下,如果建立不成功,就將容量減小一點.物理卷與邏輯卷大小的關係,因為時間問題,沒完全弄清楚.
2、在伺服器1建立的物理卷、邏輯卷組以及邏輯卷,在伺服器2上都應該自動識別.因為我們已經安裝了cluster與GFS服務,所以,伺服器1的分區操作,在伺服器2檢查時,建議先重新啟動一下clvm服務.在伺服器1與伺服器2上,pvdisplay、vgdisplay、lvdisplay看到的應該一致,如果伺服器2上無法看到與伺服器1上相同的信息,或者報錯,那麼大多是因為clvmd服務沒有啟動,關於clvmd服務,實際上就是基於cluster(集群)的lvm服務,lvm是什麼,大致意思是動態磁碟管理吧!使用命令 service clvmd status檢查clvm狀態,使用service clvmd restart重新啟動clvmd服務.

D:用GFS協議格式化剛才建立的邏輯卷oracle
#mkfs.gfs -p lock_dlm -t SCN:oracle -j 2 /dev/oracle10g/oracle
說明:
-p lock_dlm 定義為DLM鎖方式,如果不加此參數,當在兩個系統中同時掛載此分區時就會像ext3格式一樣,兩個系統的信息不能同步;
-t SCN:oracle :DLM鎖所在的表名字,SCN應與cluster.conf中Cluster的name相同;oracle,按Redhat售前工程師的說法,GFS格式化的要是靜態磁碟,可以是任意名字,而要是lvm的動態磁碟,則必須是邏輯卷名,我個人經過實驗,覺得可以隨便寫,一個標誌而已;
-j 2 :GFS分區中最多支持多少個節點同時掛載,本例就2個oracle資料庫,所以值為2.
/dev/oracle10g/oracle :準備要格式化的邏輯卷分區

E:將邏輯卷分區/dev/oracle10g/oracle mount到某個目錄
本項目的oracle安裝在/usr/local/oracle10g/,而庫建在/usr/local/oracle10g/oracle10g_db上,所以,建立相關目錄(此步驟需要在伺服器1與伺服器2上都做)
#mkdir –p  /usr/local/oracle10g/oracle10g_db
#mount -t gfs /dev/oracle10g/oracle /usr/local/oracle10g/oracle10g_db
查看掛載的分區
#df –h

注意:如果出現下面的錯誤,無法mount
mount: permission denied
檢查/etc/cluster/cluster.conf文件,尤其是cluster configure工具里的service management里的Faildomain Domain是不是選擇了定義的Faildomain Domain的名字,如smsdbHP.
另外,可以用demsg命令以及tail –f /var/log/messages檢查系統錯誤消息與監控日誌,幫助查錯.
《解決方案》

好文,收藏先。。。。



[火星人 via ] RHEL4 U5 + CLUSTER4.5 + GFS4.5 + Oracle10g HA調試文檔(一)已經有128次圍觀

http://www.coctec.com/docs/service/show-post-7235.html