天天看點

RHCS實作存儲叢集(MYSQL為例)

在上一篇部落格中我們說到RHCS套件提供了叢集系統中三種叢集構架,分别是高可用性叢集、負載均衡叢集、存儲叢集。說完高可用性叢集,再來看看存儲叢集的配置與實作(以mysql為例)。

一.環境配置

1.在server2添加一塊磁盤作為共享磁盤

RHCS實作存儲叢集(MYSQL為例)

2.在server1和server4中安裝iscsi用戶端:

yum install iscsi-* -y
           
RHCS實作存儲叢集(MYSQL為例)

在server2安裝scsi服務端(共享磁盤所在端):

yum install -y scsi-*
           

3.在server2上編寫iscsi的配置檔案,允許server1和server4發現并登陸共享檔案

RHCS實作存儲叢集(MYSQL為例)

4.在server1和server4用戶端發現server2上的共享裝置并登陸

RHCS實作存儲叢集(MYSQL為例)
RHCS實作存儲叢集(MYSQL為例)

5.在server用戶端制作LVM分區,在server4端同步

RHCS實作存儲叢集(MYSQL為例)

在server4同步LVM分區:

RHCS實作存儲叢集(MYSQL為例)

二.MYSQL服務在共享磁盤中的應用

(一)ext4檔案系統:

1.在serve1和server4端下載下傳mysql-server

RHCS實作存儲叢集(MYSQL為例)

2.在server1中将LVM分區挂載在資料庫的目錄下

RHCS實作存儲叢集(MYSQL為例)

3.修改資料庫目錄的所屬人和所屬組(為了向這裡邊寫入資料),并打開資料庫服務,發現目錄中有個檔案mysql.sock

RHCS實作存儲叢集(MYSQL為例)

4.在luci圖形管理界面中,移除之前的nginx服務,換成mysql服務;節點為server1和server4不改變;再添加一個資源—>檔案系統,并将資源添加到服務中(詳細過程參見上篇部落格);fence裝置不變。

點選Service Groups,删除原來的添加,重新配置,這次的添加順序是IP Address —-> Filesystem —-> Script(因為服務開啟的順序就是先配置設定VIP,然後開啟存儲,然後再是服務)

RHCS實作存儲叢集(MYSQL為例)

服務啟動腳本修改為mysql的腳本:

RHCS實作存儲叢集(MYSQL為例)

5.檢視server1和server4的提供服務狀态,并檢視接管服務的節點是否含有服務特殊檔案。

RHCS實作存儲叢集(MYSQL為例)
RHCS實作存儲叢集(MYSQL為例)

6.在luci界面将提供mysql服務的節點換成server4,在server1上解除安裝LVM分區檢視server4中mysql資料庫。(注意mysql服務要為開啟狀态,下圖中還未開服務)

RHCS實作存儲叢集(MYSQL為例)

服務切換到了server4上,在server4中的資料庫中出現特殊檔案:

RHCS實作存儲叢集(MYSQL為例)

兩個需要注意的點:

1、首先我們用的是ext4檔案系統進行格式化,ext4是本地檔案系統,是以存儲的同步的檔案顯示需要另一台進行解除安裝再挂載的操作。

2.保證clvmd服務開啟,要開啟才可能同步,還需要軟體lvm2-cluster的支援,這些在最開始選擇Download(luci圖形界面)都自動下載下傳好了

ext4檔案系統是本地檔案系統,不能同時在多個地方挂載和進行寫操作,容易造成資料的丢失和污染,為了解決這個問題,我們介紹一下共享檔案系統gfs2.

(二)gfs2叢集檔案系統

gfs2(global file system2):叢集檔案系統,可以讓多個節點同時使用同一個檔案系統,當一個節點使用時會借助DLM機制通過lock_dlm進行加鎖,并通知給其他節點持有的鎖資訊

GFS是RHCS為叢集系統提供的一個存儲解決方案,它允許叢集多個節點在塊級别上共享存儲,每個節點通過共享一個存儲空間,保證了通路資料的一緻性,更切實的說,GFS是RHCS提供的一個叢集檔案系統,多個節點同時挂載一個檔案系統分區,而檔案系統資料不受破壞,這是單一的檔案系統,例如EXT3、EXT2所不能做到的。

1.在server1上停掉mysql服務,發現在luci界面中mysql服務的狀态已經變為disabled

RHCS實作存儲叢集(MYSQL為例)
RHCS實作存儲叢集(MYSQL為例)

2.在之前的本地檔案系統中,我們向luci的資源中加入了本地檔案系統ext4,現在将該資源移除:Services Groups—>remove—>submit

RHCS實作存儲叢集(MYSQL為例)

3.在server1中将lvm挂載到到mysql預設目錄,并拉伸其大小為8G,在server中同步

RHCS實作存儲叢集(MYSQL為例)
RHCS實作存儲叢集(MYSQL為例)

4.在server1中對lvm做熱拉伸,并用df -h檢視拉伸的結果

RHCS實作存儲叢集(MYSQL為例)
RHCS實作存儲叢集(MYSQL為例)

5.修改lvm檔案系統為叢集g2fs檔案系統

lvremove /dev/clustervg/demo   # 删除之前的lv
lvcreate -L G -n demo clustervg   # 重建立立lv
mkfs.gfs2 -j  -p lock_dlm -t jay_mysql:mygfs2 /dev/clustervg/demo
# 修改檔案系統為gfs2格式,并做相應配置
# -j 3  為檔案系統中日志的數量加1
# -p lock_dlm表示對共享存儲進行操作時,加鎖
# -t jay_mysql:mygfs2 表示叢集名稱以及起的檔案系統名稱
# /dev/clustervg/demo  表示共享的磁盤區域
           
RHCS實作存儲叢集(MYSQL為例)

6.在servere中修改mysql目錄的所屬組和所屬主為mysql,友善向目錄中寫檔案

RHCS實作存儲叢集(MYSQL為例)

7.在server中識别server1中的gfs2檔案系統

RHCS實作存儲叢集(MYSQL為例)

8.在server1和server4中關閉mysqld,編寫自動挂載檔案/etc/fstabs并測試挂載情況

RHCS實作存儲叢集(MYSQL為例)
RHCS實作存儲叢集(MYSQL為例)

9.在server1中啟動高可用叢集來管理mysql服務

clusvcadm -e mysql
           
RHCS實作存儲叢集(MYSQL為例)
RHCS實作存儲叢集(MYSQL為例)
RHCS實作存儲叢集(MYSQL為例)

10.測試:在server1中mysql的目錄下寫東西,同步到server4的mysql目錄下

RHCS實作存儲叢集(MYSQL為例)

server4中也出現passwd:

RHCS實作存儲叢集(MYSQL為例)

繼續閱讀