RHCS實現高可用中的共享儲存iscisi(mysql為例)
1、實驗環境
server2 172.25.66.2(配置Nginx、ricci、luci) server3 172.25.66.3(Apache) server4 172.25.66.4 (Apache) server5 172.25.66.5(配置Nginx、ricci)
二、共享儲存iscsi
1、在server3上新增一塊磁碟作為共享磁碟
2、在server2和server5上安裝iscsi,並在server3中安裝scsi服務端(共享磁碟所在處)
[[email protected] ~]# yum install -y iscsi-*
[[email protected] ~]# yum install -y iscsi-*
[[email protected] ~]# yum instal -y scsi-*
3、在server3上編輯iscsi配置檔案,允許server2和server5發現並登入共享檔案
[[email protected] ~]# vim /etc/tgt/targets.conf
41 <target iqn.2018-10.com.example:server.target1>
42 backing-store /dev/vdc
43 initiator-address 172.25.66.2
44 initiator-address 172.25.66.5
45 </target>
[ [email protected] ~]# /etc/init.d/tgtd start
4、在server2和server5客戶端發現server3上的共享裝置並登入
[[email protected] ~]# iscsiadm -m discovery -t st -p 172.25.66.3
[[email protected] ~]# iscsiadm -m node -l
[[email protected] ~]# cd /var/lib/iscsi/nodes/
[[email protected] nodes]# ls
iqn.2018-10.com.example:server.target1
[ [email protected] ~]# iscsiadm -m discovery -t st -p 172.25.66.3
[[email protected] ~]# iscsiadm -m node -l
5、在server2客戶端製作LVM分割槽,在server4中同步
[[email protected] nodes]# pvcreate /dev/sda
[[email protected] nodes]# vgcreate cluster_vg /dev/sda
[[email protected] nodes]# lvcreate -L +4G -n demo cluster_vg
[[email protected] nodes]# mkfs.ext4 /dev/cluster_vg/demo #格式化為ext4檔案系統
6、建立資料庫
[[email protected] ~]# yum install mysql-server -y
[[email protected] ~]# chown mysql.mysql /var/lib/mysql/
[[email protected] ~]# yum install mysql-server -y
三、叢集設定
1、將server3和server4上的httpd服務關閉
2、點選Resources,選擇filesystem,新增相應的資訊,點選submit
新增storage 新增指令碼:
3、點選Service Groups,配置:IP Address —-> Filesystem —-> Script(因為服務開啟的順序就是先分配VIP,然後開啟儲存,然後再是服務),點選submit
依次新增三個資源:
4、檢視叢集結果
四、設定共享磁碟為gfs2格式
1、gfs2檔案系統
gfs2(global file system 2):叢集檔案系統,可以讓多個節點同時使用同一個檔案系統,當一個節點使用時會藉助DLM機制通過lock_dlm進行加鎖,並通知給其他節點持有的鎖資訊 GFS是RHCS為集群系統提供的一個儲存解決方案,它允許叢集多個節點在塊級別上共享儲存,每個節點通過共享一個儲存空間,保證了訪問資料的一致性,更切實的說,GFS是RHCS提供的一個叢集檔案系統,多個節點同時掛載一個檔案系統分割槽,而檔案系統資料不受破壞,這是單一的檔案系統,例如EXT3、 EXT2所不能做到的。 ext4檔案系統是本地檔案系統,不能同時在多個地方掛載和進行寫操作,容易造成資料的丟失和汙染,為了解決這個問題,提出了共享檔案系統gfs2
2、配置gfs2檔案系統
- 在server2中對lvm作熱拉伸,
[[email protected] ~]# lvextend -L +1020 /dev/cluster_vg/demo
[[email protected] ~]# resize2fs /dev/cluster_vg/demo
- 修改lvm檔案系統為叢集g2fs檔案系統
[[email protected] ~]# clusvcadm -d sql
[[email protected] ~]# mkfs.gfs2 -p lock_dlm -t westos_JY:mygfs2 -j 3 /dev/cluster_vg/demo #-j 3 為檔案系統中日誌的數量加1;-p lock_dlm表示對共享儲存進行操作時加鎖;-t westos_JY:mygfs2 表示叢集名稱以及起的檔案系統的名稱;/dev/cluster_vg/demo 表示共享的磁碟區域
- 在server2上停掉mysql服務
[[email protected] ~]# clusvcadm -d sql
- 掛載,修改mysql目錄的所有人和所有組,方便向目錄中寫檔案
[[email protected] ~]# mount /dev/cluster_vg/demo /var/lib/mysql/
[[email protected] ~]# chown mysql.mysql /var/lib/mysql/
- 識別server2中的gfs2檔案
[[email protected] ~]# gfs2_tool sb /dev/cluster_vg/demo all
- 在server2和server5中設定開機自動掛載
[[email protected] ~]# vim /etc/fstab
[[email protected] ~]# vim /etc/fstab
這裡寫入的UUID是用blkid命令查看出來的
- 測試:在server5中mysql目錄下寫東西,可以同步到server2的mysql目錄下
[[email protected] ~]# cd /var/lib/mysql/
[[email protected] mysql]# cp /etc/passwd .
[[email protected] mysql]# ls
ibdata1 ib_logfile0 ib_logfile1 mysql passwd test
在實驗中應該注意的是 (1)在ext4檔案系統中,ext4是本地檔案系統,所以儲存的同步的檔案顯示需要另一臺進行解除安裝再掛載的操作。 (2) 保證clvmd服務開啟,要開啟才可能同步,還需要軟體lvm2-cluster的支援,這些在最開始選擇Download(luci圖形介面)都自動下載好了 (3)ext4檔案系統是本地檔案系統,不能同時在多個地方掛載和進行寫操作,容易造成資料的丟失和汙染,為了解決這個問題,提出了共享檔案系統gfs2 我在實驗中遇到的一個問題: 解決方法:原因是:在修改vim /etc/tgt/targets.conf時,把initiator-address沒有寫對,寫對是這個的