• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • SDS+VCSQS+Oracle構建的HA Cluster

    發表于:2007-06-08來源:作者:點擊數: 標簽:
    背景: 一般如果用VeritasClusterServerforSolaris,就會用到VxVM,但是如果環境中沒有VxVM(比如說我)但又要保證數據的 安全 ,一般人都會想到SolsticeDisksuite(SDS),它可以構建Raid,作為存儲資源。在Cluster中,最根本的就是資源,Vcs本身附帶了很多的

    背景:
    一般如果用Veritas Cluster Server for Solaris,就會用到VxVM,但是如果環境中沒有VxVM(比如說我)但又要保證數據的安全,一般人都會想到Solstice Disksuite(SDS),它可以構建Raid,作為存儲資源。在Cluster中,最根本的就是資源,Vcs本身附帶了很多的agent,用來探測這些資源的可用性,但是對于存儲,它只支持Disk,Disk-group以及Volumn等,它并不支持SDS,用SDS構建的邏輯驅動器部署在/dev/md/rdsk和/dev/md/dsk中,雖然它可以像一般磁盤一樣被系統所訪問,但vcs disk agent僅僅從/dev/rdsk/下搜索可用的物理設備,因此disk agent不能管理你的sds邏輯設備,即使你在/dev/rdsk/下建立了/dev/md/rdsk/dx的連接,也是不可以的,表面上看來,你的cluster可以啟動工作了,當你的機器重新啟動后,md(sds)的daemon會報錯,系統宕機。你能做的就是每次啟動前刪除那些symbolink,啟動后建立那些symbolink,這樣太麻煩,而且也不符合Cluster的要求,因此需要我們來寫關于sds的agent,幸好vcs提供了agent developer guide和vcsqs custom agent guide。對于雙機環境(僅高可用),SDS也提供了相應的程序,在SDS里有個叫diskset,就是為共享SDS Raid邏輯驅動器而出現的。我們的想法是用SDS的agent來控制diskset的切換,來實現高可用的目的。
    這里的VCS僅限于VCSQS-雙機高可用軟件,用它和Oracle以及SDS可以構建較經濟的高可用方案, Oracle只用Workgroup版本即可,相對企業版便宜多了。但是此方案構建的數據庫不能應付大規模的應用,一是性能不夠(I/O問題),二是沒有達到真正集群的目的(依然存在單點故障),只是沒有辦法的情況下不得已而為之,以下方法僅作為參考。
    硬件環境:
    Sun Fire 280Rx2(900,1G,36.4x1,ge,qfe),D1000(36.4x4)
    Solaris 2/02,VCSQS 3.5,Oracle 9.2,Solstice Disksuite 4.2.1
    1.連接線,D1000中間SCSI接口用自帶的SCSI線短接,兩邊的SCSI接口通過SCSI線連接到280的SCSI卡(額外買的一個)的外接口上,兩臺機器的qfe0,1用568a-568b跳線連接,ge連接到交換機上。
    2.修改其中一臺280的SCSI init ID,在ok狀態setenv scsi-initiator-id=5,就可以了。
    3.打開陣列,打開兩臺機器,分別安裝solaris,記得分區的時候在系統盤末尾留50M左右的空間,用來存metadb,裝Oracle需要大點的swap,我用了2048M,兩臺機器裝完,再安裝software 2里的SDS,然后分別打補丁,Recommended和SDS的。
    4.配置網絡和rsh,rcp等,這些都是安裝cluster基本的東西,網絡就不用說了,rhost也簡單,在/下建立.rhosts,寫上對方機器的名字就好了,前提是雙方都可以通過機器名訪問對方。
    5.兩臺機器都從系統盤里分出s7,大約10M左右,作為metadb,我的是c2t0d0s7。在陣列上的分別是:c1t0d0,c1t1d0,c1t8d0,c1t9d0。
    6.創建metadb,在兩臺機器上分別執行:metadb -a -f -c3 /dev/dsk/c2t0d0s7,創建了metadb,可以用metadb查看。
    7.創建meta diskset,一下步驟在其中的一臺機器上運行即可,沒有特殊說明,都是在一臺機器上執行,metaset -s storage -a -h dbserver1 dbserver2,這樣創建了storage的diskset
    8.將磁盤加入到diskset里,metaset -s storage -a c1t0d0 c1t1d0 c1t8d0 c1t9d0,可以用metaset查看storage的歸屬一次所包含的磁盤,應該能看到host,owner和driver等。此時如果你用format查看磁盤,你可以發現陣列上的磁盤已經被SDS自動分區了,一個s0,一個s7,s7是storage的metadb,s0是可用的??梢杂胢etadb -s storage查看diskset的metadb。
    9.創建md,我做的是raid 0+1,所以用了一下命令
    metainit -s storage d10 1 2 c1t0d0s0 c1t1d0s0
    metainit -s storage d20 1 2 c1t8d0s0 c1t9d0s0
    metainit -s storage d0 -m d10
    metattach -s storage d0 d20
    這樣d0的陣列就做完了,系統自動同步,時間比較長大約2各小時左右。這個時候diskset就可以進行release和switch的操作了,但是不要在resync的時候執行切換操作,否則要重新resync,用metaresync -s storage d0進行重新resync。
    10.同步完成后,可以newfs了,newfs /dev/md/storage/rdsk/d0,塊設備在/dev/md/storage/dsk/d0上,可以mount在某一臺機器上了。此時的storage只可以掛靠一臺機器,在mount前先看看屬于哪個機器,metaset -s storage,看owner是誰,誰才可以mount。如果要掛靠另一臺機器,先umount,用metaset -s storage -r釋放磁盤資源,另一臺機器可以用metaset -s storage -t獲得磁盤資源,然后才可以mount,是不是比較麻煩,這些動作都不需要你手工來完成,待會的VCSQS會做。
    11.假設我們把storage mount在了dbserver1的/share(dbserver2上也要建立這個目錄)上了,mount /dev/md/storage/dsk/d0 /share,我們可以安裝Oracle了,這個也不多說,建立Oracle用戶,將Oracle用戶的home放到/export/home/oracle里,只要在本機磁盤上就可以了,哪兒無所謂。配置環境變量,將$ORACLE_HOME放到/share里,兩臺機器完全一樣的變量,也沒有什么特殊的,安裝Oracle,將所有的文件安裝到/share下,也就是磁盤陣列上,注意最后運行root.sh的時候提示oraenv的路徑,記得改到/share的某個目錄就可以,不要放到/usr/local/bin里。至于那個oratab,本來是放到/etc下的,那就放那兒吧,反正也用不到,如果你不放心,你可以copy一份到對方機器上,不過我覺得奇怪的是,我安裝的Oracle居然沒有。建立的數據庫也要放到/share,不要創建spfile。
    12.在安裝的那個機器上關閉Oracle,以oracle身份:sqlplus "/ as sysdba";sql>shutdown,然后以root身份:umount /share,metaset -s storage -r,在另一個機器上以root身份:metaset -s storage -t,mount /dev/md/storage/dsk/d0 /share,然后以oracle身份:sqlplus "/ as sysdba";sql>startup,如果上面的操作沒有問題,那么你應該可以啟動你的oracle了。
    13.安裝VCSQS,這個好像以前有個帖子也說了,比較簡單,保證rsh能用就可以了,能做到這一步,我想你的rsh早就可以用了,任意一臺機器上放上光盤,自動會mount,installvcs就可以了,其中會問幾個啥問題,比如什么ip,hostname,clustername,license什么的,想好了自己添。安裝文檔光盤里有,比較簡單。安裝順利完成后,你可以通過一個漂浮IP(安裝vcsqs的時候讓你添的,一般是你的公用網絡的網卡的一個additional ip,我的dbserver1上ge0的ip是172.16.1.2,dbserver2上ge0的ip是172.16.1.3,我把172.16.1.4作為漂浮IP)的http://IP:8181/vcsqs來訪問你的cluster,不過現在那里面啥都沒有,因為你還沒有添加資源組。
    14.添加資源組的準備工作,在vcsqs的安裝文檔里也有,
    1)在你的Oracle數據庫里添加一個用戶,在這個用戶下建立一個表,叫啥都行,表里就有一個字段,tstamp,date格式的,用來記錄時間戳。
    2)為你的網卡再綁定一個IP地址,我的是ge0,如果你的oracle運行在dbserver1上,那么你在dbserver1上執行以下的操作,ifconfig -a,看看ge0都有幾個ip,如果有了一個ge0:1的話,那我們就用
    ifconfig ge0:2 plumb
    ifconfig ge0:2 172.16.1.5 netmask 255.255.255.0
    ifconfig ge0:2 up
    然后看看ifconfig -a是不是多了一個ip地址,那就對了,然后用這個IP地址為Oracle配置一個監聽器,在listener.ora里,host寫上剛配的IP,我的是172.16.1.5,然后用oracle用戶執行lsnrctl stop,lsnrctl start,lsnrctl status看看狀態是否正常,正常的話,下一步。
    15.用root在CDE下運行/opt/VRTSvcs/qsbin/vcsqs-oracle-wizard,出來個java得配置工具,所填寫得信息都是以上告訴你的,什么數據庫里建立的用戶名,密碼,表名,然后是什么磁盤,mount點,ip什么的,它都能自動找到,你要做的就是填寫一個NLS_LANG,寫成SIMPLIFIED CHINESE_CHINA.ZHS16GBK,如果你有特殊要求可以自己改。好了,這就算配置完了。vcsqs會自動啟動那些個服務,但是你要做的是停止它,因為現在還起不起來,找不到disk資源,用root在兩臺機器上分別執行/opt/VRTSvcs/qsbin/vcsqs -stop。
    16.接下來的是和SDS以及vcsqs agent有關,因為vcsqs沒有sds的agent,而且,vcsqs還不能像vcs那樣自己寫agent加入到resource type里,所以,我們要自己改一個,vcsqs提供了一個叫Application的agent,可以online/offline/monitor一些資源,我們的SDS恰巧也是在其中,但必須是diskset。我們采用比較常用的shell。有以下幾個步驟:
    1)為你的diskset建立online,offline,monitor的腳本,我們在/usr/sbin下建立三個腳本文件,分別如下:
    第一個,online腳本,獲得diskset的訪問權限,名字隨便,例如getstorage,很簡單,一句話
    #!/bin/sh
    /usr/sbin/metaset -s storage -t #這里的storage是先前建立的diskset的名字。
    第二個,offline腳本,釋放diskset的訪問權限,和online差不多,例如relsstorage,
    #!/bin/sh
    /usr/sbin/metaset -s storage -r
    第三個,monitor腳本,獲得diskset的owner,在metaset里,-o表示探測diskset是否在當前主機,如果是返回一個0,我們可以通過它寫一個腳本,monstorage
    #!/bin/sh
    /usr/sbin/metaset -s storage -o >/dev/null 2>&1
    if [ $? -eq 0 ] ; then
        exit 110 #vcsqs里110表示online
    else
        exit 100 #vcsqs里100表示offline
    fi
    別忘了chmod +x
    2)修改vcsqs的住配置文件,在/etc/VRTSvcs/conf/config里,叫main.cf,里面一定有個type叫Disk,這個就是sds和vcsqs沖突的地方,我們把它改掉,將Disk改成Application,我在安裝的時候把d0改成了diskset-storage,如果不改也沒有關系,個人習慣,如下:
            Application diskset-storage (
                    User = root
                    StartProgram = "/usr/sbin/getstorage"
                    StopProgram = "/usr/sbin/relsstorage"
                    MonitorProgram = "/usr/sbin/monstorage"
                    
    然后將里面有關Disk(下面還有一個)的,統統改成Application。
    最后用root在兩臺機器上分別運行/opt/VRTSvcs/qsbin/vcsqs -start。不出意外的話,你可以從http://IP:8181/vcsqs來管理你的cluster了,試試切換等操作是否能成功。

    有關vcsqs的管理,軟件附帶的document寫的很詳細,也很清楚,我就不多說了。
    順便提個醒,記得修改/opt/VRTSvcs/bin/Oracle/Testsql.pl,將里面的'/ as sysdba'改成'system/xxxxxx',原因我以前也說過,SDS構建的MD對大量的小文件管理很吃力,特別是非正常reboot以后,fsck速度極慢,而且容易出錯。修改腳本是為了不讓vcsqs產生大量的audit文件。
    其中有幾個問題一直不好處理,在D1000上做Raid 0+1據說不是很好,不知道有什么辦法解決。而且不知道為什么,要resync兩次,具體在什么時候resync我也忘了。

     iamark 回復于:2003-09-24 17:56:32
    精華,鼓掌

     williamw2000 回復于:2003-09-29 00:30:39
    learning about it right now.

     sunmarmot 回復于:2003-09-29 01:28:08
    我還是認為用VXVM做比較保險,用DISKSUITE  metaset做了之后如果不能正常釋放資源,就必須用強制切換,切換幾次后會發生整個陣列數據丟失的情況,比較危險。

     chinesecai 回復于:2003-09-29 09:07:49
    我現在的設備情況是D1000,一臺ultra5 和ultra10,該如何做,給個建議?我想用vx。

     procrus 回復于:2003-09-29 10:47:44
    ultra5 和ultra10還要配scsi卡!

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>