RHEL5實現高可用HA集羣+GFS+EnterpriseDB

近日發現有網站開始轉載我的文章,這個我非常高興,非常感謝大家支持!但是我發現好多網站轉載時連我的原文出處都沒有,文章題目還經常寫着“原創”,這個 太不厚道了,對於每一個寫原創文章的作者這種做法都是不可取的!借鳥哥的一句話:“原創文章都是作者一個字一個字打出來了,也經過自己一步一步的測試,希 望大家給於尊重”!別外我當然是一個”槍手“寫的東東大都是公司的產品啦,哈哈!好了,進入正文:

版權所有,轉載請註明出處!
作者:蕭少聰 RHCE/CI
BLOG:scottsiu.cublog.cn或blog.csdn.net/scottsiu

前言:
    幾個大家要注意的地方:
    1、做Cluster應該要有Fence設備,當一臺機器出現問題時處於正常狀態的機器會通過Fence將其重啓或關機以釋放IP、磁盤等資源。
    2、做HA要對服務的啓動腳本做一點修改以符合Cluster的要求。
    3、GFS要建立在Cluster之上。
    4、RHEL5 AP(高級平臺版)已經帶有Cluster組件,當中包括GFS、Cluster Suite、LVS等,不像RHEL4那樣用另外安裝。


1、網絡
我的IP爲
iscsi: 192.168.122.1
edb1: 192.168.122.21
edb2: 192.168.122.22

2.1、Linux中安裝iscsi-target
到sf.net下載最新的iscsi-target
# tar zxvf iscsi-target.xxxxx.tar.gz
# cd iscsi-target.xxxxx
# make
# make install
# mkdir /iscsidisk
# dd if=/dev/zero of=/iscsidisk/sharedisk1.img bs=1k count=1 seek=2000K
    (以上這句是用dd建立了一個2G大小的映像文件,也就是我們的一個iscsi映像磁盤)
# vim /etc/ietd.conf
    找到"Target iqn",注意這行Target後的一串字符,是iscsi的標記
    找到"Lun 0"一行,改爲
    Lun 0 Path=/iscsidisk/sharedisk1.img,Type=fileio
# chkconfig iscsi-target on
# /etc/init.d/iscsi-target start

2.2、在edb1、edb2中連接iscsi
# rpm -ivh iscsi-initiator-utils-6.2.0.742-0.5.el5.rpm
    (RHEL5的光盤中有這個文件)
# chkconfig iscsid start
# /etc/init.d/iscsid start
# iscsiadm -m discovery -t sendtargets -p 192.168.122.1:3260
    172.16.122.1:3260,1 iqn.2001-04.com.example:storage.disk2.sys1.xyz
    (iqn.2001..........這部份應該和iscsi服務器中ietd.conf中的標記一樣)
# iscsiadm -m node -T iqn.2001-04.com.example:storage.disk2.sys1.xyz -p 172.16.122.1:3260 -l
    (以上兩個iscsiadm的操作只在第一次連接iscsi服務器時要執行,以後每當iscsid啓動都會自動連接)
# fdisk -l
    (應該可以看到多出來一個/dev/sdx的分區)

3、在edb1、edb2中安裝EnterpriseDB
在EnterpriseDB的官方網站下載到其最新版本:http://www.enterprisedb.com
EnterpriseDB(以下我簡寫爲EDB)是一個基於PostgreSQL並與Oracle語法兼容的數據庫在OLTP的多併發性事務處理中比PostgreSQL有了很大的提高!
下載軟件包進行解壓(安裝要有root權限):
#tar zxvf edb-linux-x86_82412.tar.gz
#cd edb-linux-x86_82412
#./pre-Install.sh
    如果出現You may now install EnterpriseDB就可以正常安裝了,這裏主要是針對不同的LINUX版本生成EDB所要的連接的
#./edb-linux-x86_82412.bin -console
    安裝過程中會要求序列號
    Select License Type:

    [X] 1 - Install Full or Evaluation License
    [ ] 2 - Install Express License

    To select an item enter its number, or 0 when you are finished: [0]
    這裏如果你有在EDB官網上註冊的話會收到一個30天無限制試用的SN,如果沒有的話可以選2安裝限制爲1 CPU/1G RAM/6G Data的版本。
    其它的選項默認就好了!

4、雙節點HA集羣
    4.1 Fence
       做HA的話就要有fence設備,這是什麼東東,如APC、HP ilo、IPMI等等
       這裏以HP ilo爲列,當前edb1、edb2的ilo IP分別是10.11.0.1、10.11.0.2用戶名密碼爲redhat,在edb1中測試:
       # fence_ilo -a 10.11.0.2 -l redhat -p redhat -o status
       在edb2中測試:
       # fence_ilo -a 10.11.0.1 -l redhat -p redhat -o status
       如果返回正確,證明fence已經正常

    4.2 HA Cluster
       在REDHAT中配置Cluster可以通過GUI下的Cluster Manager進行非常簡單以下我只給出配置文件
       以下文件CP到每個節點上
       /etc/cluster/cluster.conf

<?xml version="1.0"?>
<cluster alias="edb_ha" config_version="6" name="edb_ha">
        <fence_daemon post_fail_delay="0" post_join_delay="3"/>
        <clusternodes>
                <clusternode name="edb1" nodeid="1" votes="1">
                        <fence>
                                <method name="1">
                                        <device name="ilo1"/>
                                </method>
                        </fence>
                </clusternode>
                <clusternode name="edb2" nodeid="2" votes="1">
                        <fence>
                                <method name="1">
                                        <device name="ilo2"/>
                                </method>
                        </fence>
                </clusternode>
        </clusternodes>
        <cman expected_votes="1" two_node="1">
                <multicast addr="224.0.0.1"/>
        </cman>
        <fencedevices>
                <fencedevice agent="fence_ilo" hostname="10.11.0.1" login="redhat" name="ilo1" passwd="redhat"/>

                <fencedevice agent="fence_ilo" hostname="10.11.0.2" login="redhat" name="ilo2" passwd="redhat"/>
        </fencedevices>
        <rm>
                <failoverdomains>
                        <failoverdomain name="edb_domain" ordered="0" restricted="0">
                                <failoverdomainnode name="edb1" priority="1"/>
                                <failoverdomainnode name="edb2" priority="1"/>
                        </failoverdomain>
                </failoverdomains>
                <resources>
                        <ip address="192.168.122.20" monitor_link="1"/>
                        <clusterfs device="/dev/sdx1" force_unmount="0" fsid="10617" fstype="gfs" mountpoint="/data" name="Data_GFS" options=""/>
                </resources>
                <service autostart="1" domain="edb_domain" name="enterpriseDB" recovery="relocate">
                        <script file="/etc/init.d/edb_8.2" name="edb_script"/>
                        <ip ref="192.168.122.20"/>
                        <clusterfs ref="Data_GFS"/>
                </service>
        </rm>
</cluster>

       /etc/hosts加入以下

192.168.122.21 edb1
192.168.122.22 edb2


    4.3爲了使EDB可以實現HA,我們要對EDB的啓動腳本進行一點修改,如果我們要做其它數據庫或服務的集羣也是一樣,具體隨要求爲:腳本要有start、stop、status、restart指令,並要求運行正常時返回"0",運行出錯時返回"非0"。
   
5、GFS
    上面的HA Cluster的配置文件當中已經有GFS的設定了,GFS要求建立在CLUSTER之上,所以只有在CLUSTER中的節點才能正常地掛載GFS分區,下來我們格式化一個GFS的分區
    5.1
    在edb1中執行以下操作
    把/dev/sdx分爲一個分區/dev/sdx1,如果對分區不熟請看“鳥哥”的文章
    也可以到www.redhat.com/docs下載REDHAT的官方管理手冊進行參考
    # mkfs.gfs2 -p lock_dlm -t edb_ha:gfs1 -j 3 /dev/sdx1
    -p lock_dlm    定義爲DLM鎖方式,如果不加此參數,當在兩個系統中同時掛載此分區時就會像EXT3格式一樣,兩個系統的信息不能同步
    -t edb_ha:gfs1 DLM鎖所在的表名字,edb_ha應與cluster.conf中Cluster的name相同,gfs1爲一個自定義的名字我認爲可以理解爲分區的卷標
    -j 3           GFS分區中最多支持多少個節點同時掛載,這個可以在使用中動態調整
    /dev/sdx1     要格式化的分區
    #make /data
    #mount /dev/sdx1 /data
    #cp /opt/EnterpriseDB/8.2/data/ /data/edb_data/ -rp
    #/etc/init.d/cman start
   
    5.2
    在edb2中
    # /etc/init.d/iscsid restart
    # fdisk -l (看看是否與edb1一樣)
    # mount /dev/sdx1 /data
    # ll /data (看看是否與edb1一樣)
   
    5.3測試
    在edb1、edb2中
    # /etc/init.d/cman start
    # /etc/init.d/rgmanager start
       (起動集羣)
    # clustat
       (查看集羣狀態)
    可以通過/etc/init.d/edb_8.2 stop關閉edb服務、拔網線、重啓系統等對集羣進行測試
   
    5.4
    在edb1、edb2中
    # chkconfig cman on
    # chkconfig rgmanager on
    以使系統啓動時自動開啓HA集羣

關於REDHAT的集羣,請先閱讀REDHAT官方的CLUSTER手冊,http://www.redhat.com/docs 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章