VMware下CentOS6.8配置GFS文件系統

1.GFS介紹

GFS簡要說明,它有兩種:

1. Google文件系統:GFS是GOOGLE實現的是一個可擴展的分佈式文件系統,用於大型的、分佈式的、對大量數據進行訪問的應用。它運行於廉價的普通硬件上,但可以提供容錯功能。它可以給大量的用戶提供總體性能較高的服務。欲瞭解更多,可以訪問:http://baike.baidu.com/item/GFS/1813072

2. Redhat 的GFS(Global File System)

GFS(Global File System)自己以本地文件系統的形式出現。多個Linux機器通過網絡共享存儲設備,每一臺機器都可以將網絡共享磁盤看作是本地磁盤,如果某臺機器對 某個文件執行了寫操作,則後來訪問此文件的機器就會讀到寫以後的結果。可以根據對性能或是可擴展性,或者以經濟性多個原則進行不同方案的部署。

GFS 主要組件,集羣卷管理,鎖管理,集羣管理,圍欄和恢復,集羣配置管理。

本文主要介紹Redhat的GFS系統。

REDHAT CLUSTER SUITEWITH GFS :

RHCS(REDHAT CLUSTER SUITE)是一款能夠提供高性能、高可靠性、負載均衡、高可用性的集羣工具集,一個集羣通常有兩個或兩個以上的計算機(稱爲“節點”或”成員“)共同執行一個任務。

RHCS主要組件:

  • 集羣架構:

提供一個基本功能使節點作爲集羣工作在一起:配置文件管理,成員關係管理,鎖管理和柵設備。

  • 高可用性管理:

提供節點失敗轉移服務,當一個節點失敗後將服務轉移到另一個節點上。

  • 集羣管理工具:

通過配置和管理工具來配置和管理Red Hat集羣。

  • Linux Virtual Server (LVS)

LVS提供一個基於IP的負載均衡功能,通過LVS可以將客戶請求均勻的分配到集羣節點上。

其它Red Hat集羣組件:

  • Cluster Logical Volume Manager (CLVM)

提供邏輯卷管理集羣存儲。

  • 集羣管理器:

CMAN是一個分佈式集羣管理器(DLM),它運行在每一個集羣節點上,CMAN通過監視集羣節點提供一個法定節點數(quorum),當集羣 中有多於一半的節點處於活躍狀態時,此時符合法定節點數,集羣繼續可用,當只有有一半或少於一半的節點處於活躍狀態是則已達到不到法定節點數,此時整個集 羣變得不可用。CMAN通過監控集羣中節點來確定各節點的成員關係,當集羣中的成員關係發生改變,CMAN會通架構中其它組件來進行相應的調整。

  • DLM鎖管理:

分佈式鎖管理器,它運行在所有的集羣節點上,鎖管理是一個公共的基礎結構,爲集羣提供一種共享集羣資源的管理機制,GFS通過鎖管理器使用鎖機制來同步訪問文件系統元數據,CLVM通過鎖管理器來同步更新數據到LVM卷和卷組。

  • 數據的完整保證:

RHCS 通過 Fence設備從共享存儲切斷失效節點的I/O以保證數據的完整性。當CMAN確定一個節點失敗後,它在集羣結構中通告這個失敗的節點(組播),fenced進程會將失敗的節點隔離,以保證失敗節點不破壞共享數據。

REDHAT集羣配置系統:

集羣配置文件:(/etc/cluster/cluster.conf) 是一個XML文件,用來描述下面的集羣特性。

集羣名稱:列出集羣名稱、集羣配置文件版本和一個隔離時間,隔離相應時間當一個新節點加入或從集羣中隔離時。

集羣:列出集羣中的每一個節點,指定節點名稱,節點ID,法定投票數,和柵模式。

fence設備:定義fence設備。

管理資源:定義創建集羣服務需要的資源。管理資源包括失敗轉移域,資源和服務。

2.GFS搭建

設置環境如下,兩節點操作共享文件:

  • 192.168.10.11 test01
  • 192.168.10.12 test02
  • OS:CentOS6.8 64位
  • VMware共享磁盤一塊

以下操作如非特別註明,則需要在所有的節點上執行。

2.1配置網絡

編輯hosts文件,使兩節點間可通過主機名訪問:

# more /etc/hosts
127.0.0.1   localhost localhost.localdomain
::1         localhost localhost.localdomain
192.168.10.11 test01
192.168.10.12 test02

2.2安裝集羣文件系統相關的軟件包

使用yum安裝軟件包:

# yum install cman openais gfs* kmod-gfs lvm2* rgmanager system-config-cluster scsi-target-utils cluster-snmp

上述軟件包有衆多的依賴包會被安裝或更新,爲避免出現意外情況,建議軟件包安裝後重啓。

2.3配置iptables

允許test01和test02相互通信

test01配置文件/etc/sysconfig/iptables添加:

-A INPUT -s 192.168.10.12 -j ACCEPT

test02配置文件/etc/sysconfig/iptables添加:

-A INPUT -s 192.168.10.11 -j ACCEPT

2.4修改相關配置

修改/etc/sysconfig/selinux中selinux=disabled

修改lvm邏輯卷配置:

# vi /etc/lvm/lvm.conf

將locking_type = 1,改爲locking_type = 3,允啓用同時讀寫。

修改fallback_to_local_locking=0,以禁止回寫,避免導致裂腦。

2.5生成集羣配置文件

[root@test02 ~]# ccs_tool create GFSmail
[root@test02 ~]# ccs_tool addfence meatware fence_manual
[root@test02 ~]# ccs_tool lsfence
Name             Agent
meatware         fence_manual
[root@test02 ~]# ccs_tool addnode -n 11 -f meatware test01
[root@test02 ~]# ccs_tool addnode -n 12 -f meatware test02
[root@test02 ~]# ccs_tool lsnode
Cluster name: GFSmail, config_version: 4
Nodename                        Votes Nodeid Fencetype
test01                      1   11    meatware
test02                      1   12    meatware
[root@test02 ~]#
[root@test02 ~]# rsync -avz /etc/cluster/cluster.conf root@test01
sending incremental file list
cluster.conf
sent 307 bytes  received 31 bytes  676.00 bytes/sec
total size is 557  speedup is 1.65
[root@test02 ~]#
[root@test02 data]# cat /etc/cluster/cluster.conf
<?xml version="1.0"?>
<cluster name="GFSmail" config_version="4">

  <clusternodes>
  <clusternode name="test01" votes="1" nodeid="11"><fence><method name="single"><device name="meatware"/></method></fence></clusternode><clusternode name="test02" votes="1" nodeid="12"><fence><method name="single"><device name="meatware"/></method></fence></clusternode></clusternodes>

  <fencedevices>
  <fencedevice name="meatware" agent="fence_manual"/></fencedevices>

  <rm>
    <failoverdomains/>
    <resources/>
  </rm>
</cluster>

而後可以執行ccs_config_validate命令檢查配置文件是否合法。

2.6創建集羣存儲

先手動啓動cman和clvmd命令,以便監控集羣卷的中存儲設備的狀態:

# service cman start

# service clvmd start

# service rgmanager start

以下操作在節點1端執行:

創建物理卷和卷組和邏輯卷:

[root@test01 ~]# pvcreate /dev/sdb

  Physical volume "/dev/sdb" successfully created

[root@test01 ~]# vgcreate mailcluster /dev/sdb

  Clustered volume group "mailcluster" successfully created

[root@test01 ~]# pvs

  PV         VG          Fmt  Attr PSize   PFree

  /dev/sda2  vg_mail     lvm2 a--u 199.41g    0

  /dev/sdb   mailcluster lvm2 a--u   4.00t 4.00t

[root@test01 ~]# lvcreate -n maildata -l 100%FREE mailcluster

  Logical volume "maildata" created.

[root@test01 ~]# lvs

  LV       VG          Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert

  maildata mailcluster -wi-a-----   4.00t

  home     vg_mail     -wi-ao----  80.00g

  root     vg_mail     -wi-ao---- 115.41g

  swap     vg_mail     -wi-ao----   4.00g

[root@test01 ~]#

2.7在新建的邏輯捲上創建gfs2文件系統:

[root@test01 ~]# mkfs.gfs2 -j 2 -p lock_dlm -t GFSmail:maildata /dev/mapper/mailcluster-maildata

This will destroy any data on /dev/mapper/mailcluster-maildata.

It appears to contain: symbolic link to `../dm-3'

Are you sure you want to proceed? [y/n] y

Device:                    /dev/mapper/mailcluster-maildata

Blocksize:                 4096

Device Size                4096.00 GB (1073740800 blocks)

Filesystem Size:           4096.00 GB (1073740798 blocks)

Journals:                  2

Resource Groups:           8192

Locking Protocol:          "lock_dlm"

Lock Table:                "GFSmail:maildata"

UUID:                      50e12acf-6fb0-6881-3064-856c383b51dd

[root@test01 ~]#

對於mkfs.gfs2命令來說,我們所使用的參數功能如下:

-p:用來指定gfs的鎖機制,一般情況下會選擇lock_dlm;

-j:指定journal個數(可加入節點數),一般情況下應留有冗餘,否則後期還得再調整;

查看journals:# gfs2_tool journals /home/coremail/var

增加journals:# gfs2_jadd -j 1 /home/coremail/var ##增加一個journals

-t:格式爲ClusterName:FS_Path_Name

ClusterName:應與前面cluster.conf中指定的集羣名稱相同(上文爲:GFSmail);

FS_Path_Name:這個塊設備mount的路徑(上文爲:maildata);

最後一個參數是指定邏輯卷的詳細路徑;

2.8GFS掛載

創建目錄:

[root@test01 ~]# mkdir /home/coremail/var

將剛剛創建的邏輯卷加入到/etc/fstab文件中,使其開機自動映射:

[root@test01 ~]# echo "/dev/mapper/mailcluster-maildata  /home/coremail/var            gfs2    defaults,noatime,nodiratime,noquota        0 0" >> /etc/fstab

啓動gfs2服務:

[root@test01 ~]# /etc/init.d/gfs2 start

節點2端執行:

操作前可以先執行pvs,lvs命令,看看是否能夠正常顯示節點1端創建的物理卷和邏輯卷信息,如果看不到(先嚐試lvscan),則說明並未使用共享存儲,或者配置有異常,仍然需要排查,需要等問題解決後,再執行下列的命令。

[root@test02 ~]# mkdir /home/coremail/var

[root@test02 ~]# echo "/dev/mapper/mailcluster-maildata  /home/coremail/var            gfs2    defaults,noatime,nodiratime,noquota        0 0" >> /etc/fstab

[root@test02 ~]# /etc/init.d/gfs2 start

執行# clustat可以查詢各成員節點的狀態。

[root@test02 ~]# clustat

Cluster Status for GFSmail @ Thu Nov  3 23:17:24 2016

Member Status: Quorate

 Member Name                                       ID   Status

 ------ ----                                       ---- ------

 test01                                         11 Online

 test02                                         12 Online, Local

[root@test02 ~]#

2.9在所有節點操作,配置服務的自動啓動,這樣就不必擔心服務器重啓了:

# chkconfig --add cman

# chkconfig --add clvmd

# chkconfig --add gfs2

# chkconfig --add rgmanager

# chkconfig --level 345 cman on

# chkconfig --level 345 clvmd on

# chkconfig --level 345 gfs2 on

# chkconfig --level 345 rgmanager on

參考資料:https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/6/html/Global_File_System_2/ch-overview-GFS2.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章