Linux學習之使用RHCS套件搭建HA高可用叢集

luashin發表於2016-03-21

作業系統: rhel 6.5
 
真機:192.168.2.42 ankse.example.com
節點1:192.168.2.109 server109.example.com
節點2:192.168.2.205 server205.example.com
過程中注意各個結點解析,時間同步

1、兩個結點配置yum
[root@server205 ~]# vim /etc/yum.repos.d/rhel-source.repo 
# repos on instructor for classroom use
# Main rhel6.5 server
[base]
name=Instructor Server Repository
baseurl=http://192.168.2.251/pub/rhel6.5
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
 
# HighAvailability rhel6.5
[HighAvailability]
name=Instructor HighAvailability Repository
baseurl=http://192.168.2.251/pub/rhel6.5/HighAvailability
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
 
# LoadBalancer packages
 [LoadBalancer]
 name=Instructor LoadBalancer Repository
 baseurl=http://192.168.2.251/pub/rhel6.5/LoadBalancer
 gpgcheck=1
 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
 
# ResilientStorage
 [ResilientStorage]
 name=Instructor ResilientStorage Repository
 baseurl=http://192.168.2.251/pub/rhel6.5/ResilientStorage
 gpgcheck=1
 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
 
# ScalableFileSystem
 [ScalableFileSystem]
 name=Instructor ScalableFileSystem Repository
 baseurl=http://192.168.2.251/pub/rhel6.5/ScalableFileSystem
 gpgcheck=1
 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[root@server205 ~]# yum clearn all

 真機yum新增
 # HighAvailability rhel6.5
 [HighAvailability]
 name=Instructor HighAvailability Repository
 baseurl=http://192.168.2.251/pub/rhel6.5/HighAvailability
 gpgcheck=1
 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
 

2、安裝管理軟體luci和ricci
 真機安裝luci
 [root@ankse ~]# yum  -y install luci
 [root@ankse ~]# /etc/init.d/luci start
 
虛擬機器結點分別
 [root@server205 ~]# yum -y install ricci
 [root@server205 ~]# passwd ricci
 Changing password for user ricci.
 New password: 修改密碼為root
 passwd: all authentication tokens updated successfully.
 [root@server205 ~]# /etc/init.d/ricci start
 [root@server205 ~]# chkconfig ricci on

3、配置叢集
 真機瀏覽器訪問
 首先使用真機root登入,之後在admin授權給一普通使用者許可權,避免使用root
 使用ankse登入,creat,建立叢集名稱,加入主機,密碼是ricci的密碼,選擇下載包,加入叢集重啟,支援分享儲存,建立;
 在結點上clustat命令檢視叢集狀態。
 安裝fence,當一臺裝置故障時,直接斷掉它的電源,避免瞬間故障導致腦裂;
 [root@ankse ~]# yum -y install fence-virt fence-virtd fence-virtd-libvirt fence-virtd-multicast
 [root@ankse ~]# fence_virtd -c 生成配置檔案
 Module search path [/usr/lib64/fence-virt]: 
 Listener module [multicast]: 
 Multicast IP Address [225.0.0.12]: 
 Multicast IP Port [1229]: 
 Interface [none]: br0
 Key File [/etc/cluster/fence_xvm.key]: 
 Backend module [checkpoint]: libvirt
 Libvirt URI [qemu:///system]: 
 Replace /etc/fence_virt.conf with the above [y/N]? y
 [root@ankse ~]# mkdir /etc/cluster
 [root@ankse ~]# cd /etc/cluster/
 [root@ankse cluster]# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
 [root@ankse cluster]# scp fence_xvm.key 192.168.2.109:/etc/cluster/
 [root@ankse cluster]# scp fence_xvm.key 192.168.2.205:/etc/cluster/
 [root@ankse cluster]# /etc/init.d/fence_virtd start
 [root@ankse ~]# chkconfig fence_virtd on
 [root@ankse cluster]# netstat -anulp | grep fence
 udp        0      0 0.0.0.0:1229                0.0.0.0:*                              17405/fence_virtd  
 之後在網頁上的叢集中新增fence裝置,選擇裝置為fence virt多波模式,name為vmfence,然後在每個結點上新增fence method,name為vmfence-1,再新增fence instance,domain寫入從虛擬機器管理器中得到的UUID。
 在cluster2:192.168.2.205上測試fence功能
 [root@server205 ~]# fence_xvm -H cluster1,之後cluster1就會重啟
 
新增failover domains
 輸入name為web,prioritized優先順序,restricted服務獨佔,no failback恢復不再接管。
 新增resource資源,IP地址192.168.2.208,向外部展示的虛擬ip,監控主機,不更新靜態路由,時間間隔。
 script指令碼,name為apache,Full Path to Script File /etc/init.d/httpd
 兩個結點安裝httpd,echo `hostname` > index.html。
 
新增服務組,name為www,自動開啟服務,恢復選擇重新定位,再新增上邊的兩個資源。測試,訪問192.168.2.208,關閉優先順序高的httpd,會跳轉到另一各結點;關閉執行httpd的結點eth0,該結點會被fence重啟,httpd將執行到另一個結點上。核心崩潰測試echo c > /proc/sysrq-trigger.
 如果www為紅色獲取狀態失敗,在一個結點上檢視狀態clustat,如果一直recover,則關閉再啟用clusvcamd -d www關閉  clusvcadm -e www啟用
 
新增裝置資源
 在42真機上建立裝置
 [root@ankse ~]# lvcreate -L 2G -n iscsi VolGroup
 [root@ankse ~]# yum -y install scsi-*
 [root@ankse ~]# vim /etc/tgt/targets.conf 
 <target iqn.2014-05.com.example:server.target1>
    backing-store /dev/VolGroup/iscsi
    initiator-address 192.168.2.109
    initiator-address 192.168.2.205
 </target>
 [root@ankse ~]# /etc/init.d/tgtd start
 [root@ankse ~]# chkconfig tgtd on
 [root@ankse ~]# tgt-admin -s 檢視
 
結點安裝iscsi-initiator-utils
 [root@server109 ~]# iscsiadm -m discovery -t st -p 192.168.2.42
 [root@server109 ~]# iscsiadm -m node -l 登入到裝置
 [root@server109 ~]# fdisk -cu /dev/sda 分割槽
 [root@server109 ~]# mkfs.ext4 /dev/sda1 格式化
 
在網頁中recources為叢集新增裝置,資源透過叢集管理
 選擇檔案系統裝置,name為wwwdata,掛載點選擇/var/www/html,裝置/dev/sda1,選擇force unmount,快速狀態檢測,解除安裝裝置失敗重啟結點,提交。服務組www裡重新新增ip,裝置,apache,提交。之後會自動掛在在某一結點上。
 
selinux
 [root@server109 html]# ll -Z
 -rw-r--r--. root root unconfined_u:object_r:file_t:s0  index.html
 drwx------. root root system_u:object_r:file_t:s0      lost+found
 [root@server109 html]# restorecon -Rv .
 [root@server109 html]# ll -Z
 -rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html
 drwx------. root root system_u:object_r:httpd_sys_content_t:s0 lost+found
 之後正常訪問,一邊httpd停止,則服務和磁碟轉至另一結點。

4、新增GFS2資源
 [root@server109 ~]# clusvcadm -d www
 網頁上先刪除服務組的磁碟。再在資源刪除wwwdata,在某結點修改sda1為8e,常常使用LVM。
 [root@server109 ~]# fdisk -cu /dev/sda
 Command (m for help): t
 Hex code (type L to list codes): 8e
 Command (m for help): w
 [root@server109 ~]# pvcreate /dev/sda1
 [root@server109 ~]# lvmconf --enable-cluster 使lvm支援叢集
 [root@server109 ~]# /etc/init.d/clvmd restart
 [root@server109 ~]# vgcreate -cy clustervg /dev/sda1 
 [root@server109 ~]# lvcreate -L 1G -n gfs2demo clustervg 在另一個結點上使用pvs、vgs、lvs可以檢視到
 [root@server109 ~]# mkfs.gfs2 -p lock_dlm -t ankse:mygfs2 -j 3 /dev/clustervg/gfs2demo 格式化為gfs2檔案系統,使用分散式鎖,指定叢集標籤,日誌記錄結點個數,以後還可以新增。
 [root@server109 ~]# mount /dev/clustervg/gfs2demo /var/www/html/
 [root@server109 ~]# cd /var/www/html/ 建立index檔案
 [root@server109 html]# restorecon -Rv . 重新整理selinux上下文,如果沒開就不用做了
 然後在另一個結點上掛載,檢視selinux上下文以及index檔案同步情況。
 
設定開機自動掛載,所有結點都做同樣操作。
 [root@server109 html]# blkid 找出裝置的UUID
 [root@server109 ~]# vim /etc/fstab 
 UUID="71d573d1-fead-36b2-ab50-1e62286525b7"    /var/www/html  gfs2    _netdev,defaults        0 0
 [root@server109 ~]# umount /var/www/html/ 結點上解除安裝
 [root@server109 ~]# mount -a 然後df檢視
 [root@server109 ~]# clusvcadm -e www 開啟叢集服務,訪問網站測試
 [root@server109 ~]# clusvcadm -r www -m server205.example.com
 重定位服務結點,訪問測試。
 
使用叢集管理網頁新增gfs2檔案系統
 [root@server109 ~]# clusvcadm -d www 停止服務
 [root@server109 ~]# vim /etc/fstab 去掉自動掛載
 [root@server109 ~]# umount /var/www/html/ 解除安裝檔案系統
 網頁管理上新增資源,選擇GFS2,使用裝置名、標籤、UUID均可作為掛載標識,強制解除安裝,卸不了重啟,提交。
 服務組裡邊新增GFS2裝置,apache服務。開啟www,訪問測試。測試結果只有新增裝置名/dev/mapper/clustervg-gfs2demo可以,UUID,標籤都不能成功。
 [root@server109 ~]# clusvcadm -d www
 Local machine disabling service:
 [root@server109 ~]# clusvcadm -e www
 Local machine trying to enable service:
 
新增日誌記錄結點數
 [root@server109 ~]# gfs2_tool journals /dev/clustervg/gfs2demo 檢視結點日誌數
 [root@server109 ~]# lvextend -l +255 /dev/clustervg/gfs2demo 
 [root@server109 ~]# gfs2_grow /dev/clustervg/gfs2demo 擴大檔案系統容量,每個日誌佔用128M
 [root@server109 ~]# gfs2_jadd -j 2 /dev/clustervg/gfs2demo 新增兩個結點日誌
 [root@server109 ~]# gfs2_tool journals /dev/clustervg/gfs2demo 再次檢視
 
掛載分散式鎖檔案系統
 當叢集出現問題,由於鎖機制的存在,不允許掛載,所以使用
 [root@server109 ~]# gfs2_tool sb /dev/clustervg/gfs2demo all 檢視裝置所屬叢集資訊
 lftp i:/pub> get gfs2.img 下載hacluster叢集的檔案系統測試,可由dd命令得到
 [root@server109 ~]# gfs2_tool sb gfs2.img all
  sb_lockproto = lock_dlm
  sb_locktable = hacluster:mygfs
 [root@server109 ~]# mount -t gfs2 -o lockproto=lock_nolock,loop gfs2.img /mnt/ 掛載檔案,使用loop引數
 [root@server109 ~]# ls /mnt/good\ luck
 就可以檢視該檔案系統的檔案了。

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

相關文章