高可用集羣(High Availability Cluster),簡稱HACluster,簡單的說集羣就是一組計算機,它們作爲一個整體向用戶提供一組網絡資源。這些單個的計算機系統就是集羣的節點(Cluster)
。高可用集羣解決的是保障用戶的應用程序持續對外提供服務的能力(保護的是用戶的業務程序對外不間斷提供服務,把因人爲/軟件/硬件造成法故障對業務的影響將到最低)。
準備工作:
三臺純淨的虛擬機:
(節點主機::172.25.85.6~ server1.example.com
節點主機: 172.25.85.7 ~ server2.example.com
M端: 172.25.85.8 ~ server3.example.com )
1.三臺虛擬機做同樣的操作:
配置yum源:
cd /etc/yum.repos.d/
vim dvd.repo ##(讓yum 源指向自己的真機,刪除多於的倉庫)
yum repolist
vim /etc/hosts ##(將打開的三臺主機進行地址解析,在自己的真機上也進行地址解析)
chkconfig iptables off
/etc/init.d/iptables stop
兩臺節點主機的時間要同步。
2.在節點主機172.25.85.6/7上安裝ricci:
##ricci屬於集羣組件的節點組件之一,作用是與集羣管理套件luci進行通訊,可稱之爲主控端或者M端
yum install ricci -y
echo westos | passwd --stdin ricci ##給兩個節點主機的ricci用戶設置密碼westos
chkconfig ricci on ## 設置開機自啓動
/etc/init.d/ricci start
M端172.25.85.8上安裝luci: ##luci是集羣的控制軟件
yum install luci -y
rpm -q luci ##(luci-0.26.0-48.el6.x86_64)
/etc/init.d/luci start
在瀏覽器中輸入:https://172.25.85.8:8084
##(登陸的是M端:172.25.85.8的root和密碼redhat)
create new cluster
##密碼是創建ricci用戶的密碼westos
Download Packages
##自動從yum源中下載集羣套件,這兩個節點會安裝cman,rgmanager,modclusterd,clvmd服務,並且安裝完成後還會重啓
Use Locally Installed Packages ##檢查是否已經安裝,有新的話不更新
之後可以在節點主機172.25.85.6/7查看:
clustat ##(查看集羣狀態)
3.真機172.25.254.85上,配置fence:
##當一臺機器出現故障時處於正常狀態的機器會通過fence將其重啓,關機或者釋放ip等資源
配置好真機的yum源
yum search fence
yum install fence-virtd-multicast-0.3.2-2.el7.x86_64
fence-virtd-0.3.2-2.el7.x86_64
fence-virtd-libvirt-0.3.2-2.el7.x86_64
fence-virtd-serial.x86_64 0:0.3.2-2.el7
rpm -aq | grep fence #
ll /etc/fence_virt.conf
cat /etc/fence_virt.conf
fence_virtd -c
##在設置時侯用的網絡接口卡選擇你安裝fence主機的橋接口,其餘選擇默認
mkdir /etc/cluster #原來沒有這個目錄的需要手動創建
systemctl restart fence_virtd
netstat -anulp | grep :1229
cat /etc/fence_virt.conf
cd /etc/cluster
dd if=/dev/urandom of=fence_xvm.key bs=128 count=1
## (dd 用於複製文件並對原文件的內容進行轉換和格式化處理 if~代表輸入文件
of~代表輸出文件 bs~代表以字節爲單位的塊大小 count~代表被複制的塊數)
systemctl restart fence_virtd
cd /etc/cluster ## (該目錄下有fence_xvm.key)
scp fence_xvm.key [email protected]:/etc/cluster
scp fence_xvm.key [email protected]:/etc/cluster
virsh list ##(正在運行的虛擬機列表)
在瀏覽器中輸入:https://172.25.85.8:8084
Fence Devices ->add
server6.example.com -> Add Fence Method to Node
-> Add Fence Device (Instance)
同樣的:server7.example.com -> Add Fence Method to Node
-> Add Fence Device (Instance)
##ricci1和ricci2 分別是server6和server7的虛擬機名字;這裏也可以用虛擬機的UUID。
檢測:
在節點server7上:fence_node server6.example.com
##(server6.example.com 強制關機)
4.在瀏覽器中輸入:https://172.25.85.8:8084
##數字大的優先級小
##添加故障域
##選擇「 優 先的」 選框後,您可以爲選擇作爲故障切換域成員的每個節點設置優先值,「 優 先 權 」 。 ##選擇「有限」 複選框後,分配給這個故障切換域的服務只能切換到這個故障切換域中的節點。
##選擇「無故障恢復」 後,如果從首選節點中恢復某個服務,則該服務不會切換到恢復它的節點中。
將ip address 後人httpd兩個資源加入到Cluster
Add Service Group to Cluster ->
Add resource to service:
(Ip address)172.25.85.100/24 ->(Add Resource) httpd ##添加資源順序
檢測:
在節點主機172.25.85.6/7上進行:
yum install httpd -y ##(安裝之後開啓httpd)
echo server6.example.com > /var/www/html/index.html ##172.25.85.6
echo server7.example.com > /var/www/html/index.html ##172.25.85.7
server6:
clusvcadm -r apache -m server6.example.com
echo c > /proc/sysrq-trigger ##故意讓系統崩潰
在一個主機上運行兩個資源:
5.先給M端172.25.85.8分一塊硬盤: ##8G左右
在M端安裝:
yum install scsi-target-utils-1.0.24-10.el6.x86_64 -y
/etc/init.d/tgtd start
fdisk -l
vim /etc/tgt/targets.conf
<target iqn.2016-06.com.example:server.disk>
backing-store /dev/vdb ##/dev/vdb就是剛剛分出來的新硬盤
initiator-address 172.25.85.6
initiator-address 172.25.85.7
</target>
tgt-admin -s
在兩個節點主機:
yum install iscsi-initiator-utils.x86_64 -y
iscsiadm -t st -m discovery -p 172.25.85.8
iscsiadm -m node -l
##共享分區就建立好了,在server6和server7上會出現兩個新的磁盤/dev/sda
cat /proc/partitions ##查看分區是否共享
給其中一臺節點主機共享的新磁盤分區
vgcreate clustervg /dev/sda1
lvcreate -L 2G -n lv1 clustervg
mkfs.ext4 /dev/clustervg/lv1
https://72.25.85.8:8084:
Resources -> Add
Service Groups 使apache,disable
重新添加資源,順序:
(Ip address) 172.25.85.100/24 > (File System) webdata > (Script) httpd
之後在server6:
clusvcadm -e apache ##打開apache
檢測:
可以通過關閉server6上的httpd ,來觀察server7上集羣的變化
df
刪除建立的文件系統
先在網頁中刪除webdata
clusvcadm -d apache
resize2fs /dev/clustervg/lv1
lvremove /dev/clustervg/lv1
二:
1.在server6和熱server7上:
yum install mysql-server -y
Failover Domains -> add
Resource -> add
打開之前建立的共享存儲:
在server6上:
刪除之前在/dev/sda中建立的分區,然後重新建立2個linux格式的分區:
fdisk -cu /dev/sda
mkfs.ext4 /dev/sda1
mkfs.ext4 /dev/sda2
並將分區同步到server7上
在瀏覽器中打開:https://server8.example.com:8084
Resources -> Add
Service Group -> Add
修改apache中的資源順序爲:(ip address)172.25.85.100/24 > webdata > httpd
再添加一個新的資源組mysql:添加資源順序爲 (ip address)172.25.85.101/24 > dbdata > mysqld
在server6上查看掛載情況
發現:/dev/sda1自動掛載到了/var/www/html
/dev/sda2自動掛載到了/var/lib/mysql
同時打開server6和server7上的mysql和httpd
clustat可以看見httpd運行在server6上,mysql運行在server7上
如果電腦關機,繼續做集羣需要開啓的服務有:
/etc/init.d/iscsi start
/etc/init.d/tgtd start
systemctl restart fence_virtd
/etc/init.d/luci start
/etc/init.d/clvmd start