企業部分之-HA高可用叢集的搭建
高可用念叢集的概念:高可用叢集就是當某一個節點或伺服器發生故障時,另一個節點能夠自動且立即向外提供服務,即將有故障節點上的資源轉移到另一個節點上去,這樣另一個節點有了資源既可以向外提供服務。高可用叢集是用於單個節點發生故障時,能夠自動將資源、服務進行切換,這樣可以保證服務一直線上。在這個過程中,對於客戶端來說是透明的。
實驗環境:需要三臺純淨的虛擬機器 iptables關閉 selinux為disabled
server1:172.25.19.1 #ricci節點主機
server2:172.25.19.2 #ricci節點主機
server3:172.25.19.3 #luci管理主
yum源的配置vim /etc/yum.repo/
[server]
name=huang
baseurl=http://172.25.254.19/rhel6.5
gpgcheck=1
[HighAvailability]
name=huang
baseurl=http://172.25.254.19/rhel6.5/HighAvailability
gpgcheck=1
[LoadBalancer]
name=huang
baseurl=http://172.25.254.19/rhel6.5/LoadBalancer
gpgcheck=1
[ResilientStorage]
name=huang
baseurl=http://172.25.254.19/rhel6.5/ResilientStorage
gpgcheck=1
[ScalableFileSystem]
name=huang
baseurl=http://172.25.254.19/rhel6.5/ScalableFileSystem
gpgcheck=1
三臺虛擬機器都要配置yum源
三臺虛擬機器和物理機都要有解析 如下一個範列其他主機一樣配置
實驗過程:
server1 ricci節點主機上:
yum install ricci -y #安裝ricci軟體
echo westos | passwd --stdin ricci #給ricci密碼 一定要有 否則建立不了叢集
chkconfig ricci on #設定ricci服務開機自啟
/etc/init.d/ricci start
yum install httpd #不要啟動該服務
在server2 ricci節點主機上:進行以上同樣的步驟。
在server3 luci管理主機上:
yum install luci -y #安裝luci管理軟體
/etc/init.d/luci start #啟動luci服務
在瀏覽器訪問https://server3.example.com:8084
注:使用server3的root使用者登入
建立叢集:
叢集的名字隨便填寫 但字元數不要超過15個 超過了就會建立不成功
顯示該頁面 說明叢集建立成功
用cluster命令檢視ricci節點主機上的叢集狀態
重複建立叢集會報錯 如果想重新建立 需要 rm -rf /etc/cluster/cluster.conf 然後重啟服務 再建立 在網頁上所做的動作都會寫入該檔案 /etc/cluster/cluster.conf
fence裝置檔案的生成
在物理機上:
yum search fence
然後 yum install fence-virt fence-virtd fence-virtd-libvirt fence-virtd-multicas -y
執行命令 fence_virtd -c
f
mkdir /etc/cluster -p(有該目錄就不需要建立了)
cd /etc/cluster/
dd if=/dev/urandom of=/etc/cluster/fence_xvm/key
scp /etc/cluster/fence_xvm/key [email protected]:/etc/cluster/
scp /etc/cluster/fence_xvm/key [email protected]:/etc/cluster/
systemctl restart fence_virtd
在網頁中新增fence裝置
在兩個節點中分別執行以下步驟
新增錯誤域
新增叢集資源
注:此ip是一個浮動虛擬的ip 用於外界的訪問
新增服務組
在服務組在新增前面新增的兩個資源
可見叢集已經自動開啟了httpd服務
測試:
在server1上:fence_nde derver1.example.com server1會斷電重新啟動 說明fence配置成功
在server1上:cluster檢視叢集的狀態
可見httpd服務在已經在server1上已經開啟
為了使效果更明顯 配置測試頁:echo server1.example.com > /var/www/html/index.html
echo derver2.example.com > /var/www/html/index.html
瀏覽器訪問虛擬ip 172.25.45.100
在server1上:ip addr show
可以看到浮動的ip
在server1上:clusvcadm -r apache -m server2.example.cm #把httpd服務轉移到另一節點上
斷網模擬
在server1上:ifconfig eth0 down server1掛掉 此時服務會跳轉到server2 浮動ip也會跳轉到server2上 當server1重新啟動後 服務又會重新跳轉到server1上 因為server1是主節點 設定的優先順序最高 又設定了服務回切
核心崩潰模擬
在server1上:echo c > /proc/sysrp-trigger
和以上類似
儲存共享:
在server3上:先添加個虛擬硬碟
yum install scsi-* -y
vim /etc/tgt/targets.conf 新增以下內容:
tgt-admin -s #檢視
/etc/init.d/tgtd start #啟動服務
在server1上:yum install iscsi-* -y
iscsiadm -m discovery -t -st -p 172.25.45.3 #與server3上的裝置關聯
iscsiadm -m node -l #登入到裝置
fdisk -l #檢視可用的分割槽
建立邏輯卷 首先
fdick -cu /dev/sda #建立分割槽
在server2上:yum install iscsi-*
iscsiadm -m discovery -t -st -p 172.25.45.3
iscsiadm -m node -l
fdisk -l #檢視可用的分割槽
從server1上同步過來
cat /proc/partitons #檢視系統分割槽
在server1上: pvcreate /dev/sda1 #建立物理卷
pvs #檢視物理卷資訊
在server2上:pvs 檢視物理卷是否同步過來server2上
vgcreate clustervg /dev/sda1
在server2:vgs 檢視物理卷組是否同步過來server2上
lvcreate -L 2G -n lv1 clustervg
同樣在server2上檢視是否同步過來
mkfs.ext4 /dev/clustervg/lv1 #格式化
測試:掛載
server1和server2都掛載到/mnt/下,可以sever1在/mnt/下建立一個檔案或者目錄 server2不能看到 只有server2解除安裝後 再掛載上去 才能在/mnt/下看到建立的東西
儲存和叢集的聯絡:
在網頁上 新增叢集資源 選擇新增檔案系統
apache 關掉 刪掉scripts,新增Filesystem和Script
先製作一個測試頁 echo www.westos.com> /var/www/html/index.html
clusvcadm -e apache #在該主機上啟動apache
訪問 172.25.19.100 效果如下
核心崩潰模擬 在server1上:echo c > /proc/sysrq-trigger
server1掛掉 服務的檔案系統自動掛載跳轉到另一節點server2上
還可以斷網模擬 停止服務在測試 效果都和 以上差不多 不管那個節點的主機掛了 都不影響服務和磁碟的自動掛載 保證了服務的高可用性
gfs2檔案系統的儲存共享:
在網頁上:Service Groups中刪掉Filesystem和Scrip 叢集資源中 刪掉webdata
lvremove /dev/clustervg/vg1
lvs 檢視server2上是否還存在 不存在說明進行了同步
lvcreate -L 2G -n demo clustervg #重新建立邏輯卷
lvs 一樣看server2是否同步
mkfs.gfs2 -p lock_dlm -t hua_ha:mygfs2 -j 3 /dev/cluster/demo 注:3 為節點加1
gfs2_tool sb /dev/cluster/demo all
測試:
server1和server2上的/dev/clustervg/demo都掛載在/mnt/下 然後在server1上 cd /mnt/ 建立一個檔案或者文集夾
在server2上執行 gfs2_tool journals /dev/clustervg/demo 進去/mnt/目錄可以看見server1建立的東西
永久掛載:
blkid #可以檢視裝置的uuid
umount /mnt/
在server1和server2上都掛載在/var/www/html下
vim /etc/fstab
UUID="d287c031-bb4a-013a-3d29-ddd651a4b168" /var/www/html gfs2 _netdev 0 0
df #檢視掛載資訊
在網頁上:增加資源-GFS2,在Service groups新增GFS2和Script
clusvcadm -e apache
測試頁:echo www.westos.com /var/www/html/index.htl
瀏覽器訪問 網頁顯示 www.westos.com 斷網模擬和核心崩潰測試的原理上面類似 就不再一一測試了
增加日誌:
jfs2_jadd -j 2 /dev/clustervg/demo
lvextend -L +511M /dev/clustervg/demo
gfs2_grow
/dev/clustervg/demo
總結:實驗過程真的一步步聯絡都非常的緊密,一個環節出錯後面的實驗都搞不了,首先我們在實驗之前就要把實驗的環境搞好。尤其要注意防火牆,一定要關閉,否則叢集建立不了,要注意三臺虛擬機器時間一定要同步,否則會導致資訊的不同步,在實驗中出錯過幾次,叢集老師建立不了,仔細檢查後是在真機中沒有設定解析,網路不互通,連叢集建立的網頁都打不開,還有就是建立了集群后,新增服務組時,apache服務組時disabled,新增的兩個資源都沒生效,很是納悶,最好發現一臺ricci主機沒有設定子網掩碼。發現後問題成功的解決了,有的實驗真的不是一次就能成功的,出現各種錯都要花時間去排錯。總之實驗不容易,實驗過程中要細心,一步錯步步錯,但也不要怕出錯,覺得出現錯誤,排錯更能讓你的水平提升一個層次。
轉載於:https://blog.51cto.com/hgh1882928/1827561