紅帽RHCS叢集系統配置詳解(RHEL 6.5)

luashin發表於2016-02-19
   簡單的說,叢集(cluster)就是一組計算機,它們作為一個整體向使用者提供一組網路資源。這些單個的計算機系統就是叢集的節點(node)。一個理想的 叢集是,使用者從來不會意識到叢集系統底層的節點,在他/她們看來,叢集是一個系統,而非多個計算機系統。並且叢集系統的管理員可以隨意增加和刪改叢集系統 的節點。
   透過特殊的軟體將若干伺服器連線在一起並提供故障切換功能的實體我們稱之為高可用叢集。可用性是指系統的uptime,在7x24x365的工作環境中,99%的可用性指在一年中可以有87小時36分鐘的DOWN機時間,通常在關鍵服務中這種一天多的故障時間是無法接受的,所以提出了前面提到的錯誤恢 復概念,以滿足99.999%的高可用性需求。


這裡我們先說一下幾個概念:
1、服務(Service),是HA叢集中提供的資源,包括Float IP,共享的儲存,apache等等。
2、成員伺服器(Member Server) 也叫節點(Node),是HA中實際執行服務提供資源的伺服器。
3、失效域(Failover Domain),是HA中提供資源的伺服器的集合,當內部某個成員出現故障時,可以將服務切換到其他正常的成員伺服器上。在HA中一個失效域一般包含2臺成員伺服器(未應用虛擬技術)。
4、心跳(HeartBeat)是HA中監控成員伺服器狀態的方法,一般心跳是透過網線和串列埠線來傳輸的。
5、單一故障點(Single Point Of Failuer,SPOF)是指一個系統的這樣的一個部件,當它失效或者停止執行,將導致整個系統不能工作。在HA中通常使用雙電源,多網路卡,雙交換機等來避免SPOF。
6、 仲裁(Quorum)是HA中為了準確的判斷伺服器及其提供的服務是否正常而採用的在共享磁碟中儲存成員伺服器資訊的方法。共享的狀態資訊包括群集是否活 躍。服務狀態資訊包括服務是否在執行以及哪個成員正在執行該服務。每個成員都檢查這些資訊來保證其它成員處於最新狀態。在一個只有兩個成員的群集中,每個 成員都定期把一個時間戳和群集狀態資訊寫入位於共享磁碟貯存區的兩個共享群集分割槽上。要保證正確的群集操作,如果某成員無法在啟動時寫入主共享群集分割槽和 遮蔽共享群集分割槽,它將不會被允許加入群集。此外,如果某群整合員不更新其時間戳,或者到系統的"heartbeats"(心跳)失敗了,該成員就會從群 集中刪除。
7、 Fence裝置,Fence裝置的作用時在一個節點出現問題時,另一個節點透過fence裝置把出現問題的節點重新啟動,這樣做到了非人工的干預和防止出 現問題的節點訪問共享儲存,造成檔案系統的衝突,關於Fence 裝置,有外接的比如APC的電源管理器.很多伺服器都是內建的,只不過不同廠家的叫法不 同而已。比如HP的稱為iLo,IBM的稱為BMC,Dell的稱為DRAC。

   LUCI——RHCS(RedHat Cluster Suite) 提供了多種叢集配置和管理工具,常用的有基於GUI的system-config-cluster、Conga等,也提供了基於命令列的管理工具。 system-config-cluster是一個用於建立叢集和配置叢集節點的圖形化管理工具,它有叢集節點配置和叢集管理兩個部分組成,分別用於建立 叢集節點配置檔案和維護節點執行狀態。一般用在RHCS早期的版本中。 Conga是一種新的基於網路的叢集配置工具,與system-config- cluster不同的是,Conga是透過web方式來配置和管理叢集節點的。Conga有兩部分組成,分別是luci和ricci,luci安裝在一獨 立的計算機上(即伺服器),用於配置和管理叢集,ricci安裝在每個叢集節點上,Luci透過ricci和叢集中的每個節點進行通訊。

一、HA的搭建
實驗環境:RHEL 6.5 iptables and selinux disabled
三臺主機:          IP                      hostname
                  192.168.2.60(伺服器)    server60.example.com
                  192.168.2.167(node1)    server67.example.com
                  192.168.2.168(node2)    server68.example.com
分別修改兩節點的/etc/hosts
 192.168.2.167            server67.example.com
 192.168.2.168            server68.example.com

關閉火牆    # iptables -F
          # service iptables save
關閉selinux # setenforce 0
 
將兩臺主機的系統時間與伺服器進行同步
# yum install ntpdate
# ntpdate 192.168.2.60

在兩臺節點主機上分別安裝ricci
# yum install ricci

啟動ricci服務
# service ricci start

設定為開機自啟動
# chkconfig ricci on

為ricci設定密碼
# passwd ricci

重啟伺服器的luci
# service luci restart
Stop luci...                                              [  OK  ]
 Start luci...                                              [  OK  ]
 Point your web browser to (or equivalent) to access luci
 web訪問/cluster/

進入網頁編輯
先用root登入
再用本地使用者登入 

再用root登入時點選右上角Admin,為普通使用者lee授權
這時候就可以建立叢集

這時,兩節點主機將會重啟。這就是為什麼把ricci服務設定為開機自啟動且將iptables關閉的原因。
建立完成會自動在節點上寫入檔案/etc/cluster/cluster.conf

 
       
               
               
       
       
       
       
 

二、fence device 隔離裝置 
用kvm虛擬機器來做這個隔離裝置
實驗環境:RHEL6 selinux and iptables disabled
主機:KVM虛擬機器
hostname     ip                        kvm domain name
node1        192.168.2.137             vm1
node2        192.168.2.138             vm2
192.168.2.60    伺服器

# yum install fence-virt fence-virtd fence-virtd-libvirt fence-virtd-multicast -y
# fence_virtd -c        設定隔離裝置
Module search path [/usr/lib64/fence-virt]:
Available backends:
libvirt 0.1
Available listeners:
multicast 1.0
Listener modules are responsible for accepting requests
from fencing clients.
Listener module [multicast]:
The multicast listener module is designed for use environments
where the guests and hosts may communicate over a network using
multicast.
The multicast address is the address that a client will use to
send fencing requests to fence_virtd.
Multicast IP Address [225.0.0.12]:
Using ipv4 as family.
Multicast IP Port [1229]:
Setting a preferred interface causes fence_virtd to listen only
on that interface. Normally, it listens on all interfaces.
In environments where the virtual machines are using the host
machine as a gateway, this *must* be set (typically to virbr0).
Set to ‘none‘ for no interface.
Interface [none]: br0
The key file is the shared key information which is used to
authenticate fencing requests. The contents of this file must
be distributed to each physical host and virtual machine within
a cluster.
Key File [/etc/cluster/fence_xvm.key]:
Backend modules are responsible for routing requests to
the appropriate hypervisor or management layer.
Backend module [libvirt]:
The libvirt backend module is designed for single desktops or
servers. Do not use in environments where virtual machines
may be migrated between hosts.
Libvirt URI [qemu:///system]:
Configuration complete.

=== Begin Configuration ===
backends {
libvirt {
uri = "qemu:///system";
}
}
listeners {
multicast {
key_file = "/etc/cluster/fence_xvm.key";
interface = "br0";
port = "1229";
address = "225.0.0.12";
family = "ipv4";
}
}
fence_virtd {
backend = "libvirt";
listener = "multicast";
module_path = "/usr/lib64/fence-virt";
}
=== End Configuration ===
Replace /etc/fence_virt.conf with the above [y/N]? y
注:以上設定除“Interface”處填寫虛擬機器通訊介面外,其他選項均可回車保持預設。

# dd if=/dev/urandom of=/etc/cluster/fence_xvm.key bs=128 count=1
# scp /etc/cluster/fence_xvm.key 192.168.2.138:/etc/cluster(該目錄預設是不存在的,可用mkdir來建立)
# scp /etc/cluster/fence_xvm.key 192.168.2.137:/etc/cluster
# service fence_virtd start
# chkconfig fence_virtd on
# netstat -anulp |grep fence
udp 0 0 0.0.0.0:1229 0.0.0.0:* 7519/fence_virtd

# cd /etc/cluster
檢視是否存在fence_virtd檔案

現在在網頁管理上新增隔離裝置 
在domain後新增server37主機的uuid
在domain後新增server38主機的uuid


# fence_xvm -H vm1 看看是否可以操作你的虛擬機器,如果成功,vm1將會重啟。且另一個節點會熱接管

設定兩節點的下列服務為開機自啟動:
# chkconfig cman on
# chkconfig rgmanager on
# chkconfig modclusterd on
# chkconfig clvmd on

設定故障轉移域(failover domains)
新增資源(resourses)
(該IP不為其他主機所用)

新增成功之後

新增服務組(Server Groups)

在節點上執行的命令
# clusvcadm -d www  關閉此服務組
# clustat  檢視節點和服務的狀態
# clusvcadm -e www 開啟此服務組
 
剛剛新增了apache服務,所以要在每個節點上安裝apache服務
# yum install -y httpd

為了區分兩臺內容可以重新編輯一下預設訪問主頁
# cd /var/www/html/
# echo `hostname` > index.html
ok現在可以在web網頁上訪問http://192.168.2.111就有主機名

剛剛新增的那個ip服務,它是一個浮動ip,192.168.2.111就可以看到你做的那個優先順序高的再接管服務
如果將這個節點上的http關掉,那麼那個優先順序低的候補立馬接管
如果ifconfig eth0 down 是這個節點的網可關掉,它會嘗試恢復,如果恢復不了,就會被叢集forceoff,然後重啟當替補,如果優先順序高的話,那麼它就會立即接管給叢集管理加儲存服務

三、給叢集管理加儲存服務
1.ext4檔案系統
192.168.0.237(節點)server67.example.com
192.168.0.248(節點)server68.example.com
192.168.0.60(伺服器)server60.example.com

在一個儲存伺服器上共享一塊硬碟,作為儲存(在實驗中,就直接在叢集管理的那臺伺服器上共享一塊硬碟)
# yum install scsi-*
# vgs
# lvcreate -L 1G -n iscsi cinder-volumes
# lvs
# vim /etc/tgt/targets.conf
# /etc/init.d/tgtd start
# chkconfig tgtd on
# tgt-admin -s

#在節點上要可以發現這個共享的儲存裝置 ,在兩個節點上都執行
# yum install iscsi-initiator-utils
# iscsiadm -m discovery -t st -p 192.168.0.60
# iscsiadm -m node -l  啟用裝置
# fdisk -l /dev/sda

現在在兩個節點上給此裝置做分割槽和格式化 (做本地檔案系統 ext4)
# fdisk -cu /dev/sda
# mkfs.ext4 /dev/sda1 

在web管理介面上新增儲存裝置資源和資源組
再去資源組(Server Groups)新增此資源
ok現在操作服務組

# clustat
# clusvcadm -d www

現在將此裝置先掛載到/var/www/html下
啟動服務
# clusvcadm -e www
# clustat    檢視服務是否啟動成功
# clusvcadm -r www -m server38.example.com
# clustat    這是會發現www執行在server38主機上

2.裝置的分割槽和格式化 (即網路檔案系統 gfs2)
# clusvcadm -d www  先停掉服務組 
刪掉服務組裡(servies groups)的檔案系統(filesystem)資源,再到資源裡刪掉(delete)儲存裝置資源

# fdisk -cu /dev/sda  把它做成LVM形式
這時在另一節點主機上執行pvs就可以看到剛建立的
# pvcreate /dev/sda1
# lvmconf --enble-cluster 在 /etc/lvm/lvm.conf做更改,使它可以支援叢集

重啟服務 
# /etc/init.d/clvmd restart


在另一節點主機上執行lvs,可以看見同步到的gfs2demo
格式化為gfs2的格式 -t跟更叢集的名字:後是標籤

兩節點主機都進行掛載
# mount /dev/clustervg/gfs2demo /var/www/html
 
設定為開機自動掛載 直接寫入/etc/fstab檔案, 在所有節點都做這個操作

檢視系統裝置資訊
# vim /etc/fstab
現在mount -a 刷此檔案,同時掛載
# cd /var/www/html
# vim index.html  寫東西來進行web測試 

web訪問叢集
192.168.0.111可以看到index.html檔案裡寫入的內容
ok現在開啟服務組
# clusvcadm -e www

# clusvcadm -d www  先停掉服務組
在web管理上面新增
 在/etc/fstab中註釋掉gfs2裝置的掛載  ,解掛
現在在資源加儲存裝置資源,叢集管控新增服務組
ok現在開啟服務組
# clusvcadm -e www
現在哪個節點工作,那個節點掛載

前提:clusvcadm -d www 刪掉原來的儲存裝置
    lvs
    vgs
    vgremove clustervg
    lvs
    pvs
    pvremove /dev/sda1
    iscsiadm -m node -u
    iscsiadm -m node -o delete

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

相關文章