GlusterFS分佈式存儲集羣-1. 部署

參考文檔:html

  1. Quick Start Guide:http://gluster.readthedocs.io/en/latest/Quick-Start-Guide/Quickstart/
  2. Install-Guide:https://docs.gluster.org/en/latest/Install-Guide/Install/
  3. CentOS gluster-Quickstart:https://wiki.centos.org/SpecialInterestGroup/Storage/gluster-Quickstart
  4. Type of Volumes:https://docs.gluster.org/en/latest/Quick-Start-Guide/Architecture/#types-of-volumes
  5. Setting up GlusterFS Volumes:https://docs.gluster.org/en/latest/Administrator%20Guide/Setting%20Up%20Volumes/
  6. 腦裂:https://docs.gluster.org/en/latest/Administrator%20Guide/Split%20brain%20and%20ways%20to%20deal%20with%20it/

一.Glusterfs框架

Glusterfs(Gluster file system)是開源的,具備強大橫向擴展能力的(scale-out),分佈式的,可未來自多個服務器的存儲資源經過tcp/ip或infiniBand RDMA 網絡整合到一個統一的全局命名空間中的文件系統。node

1. 框架

  1. GlusterFS主要由存儲服務器(Brick Server)、客戶端以及 NFS/Samba 存儲網關組成;
  2. 架構中無元數據服務器組件,無對於提高整個系統的性單點故障和性能瓶頸問題,可提升系統擴展性、性能、可靠性和穩定性;
  3. GlusterFS支持 TCP/IP 和 InfiniBand RDMA 高速網絡互聯;
  4. 客戶端可經過原生 GlusterFS 協議訪問數據,其餘沒有運行 GlusterFS 客戶端的終端可經過 NFS/CIFS 標準協議經過存儲網關訪問數據(存儲網關提供彈性卷管理和訪問代理功能);
  5. 存儲服務器主要提供基本的數據存儲功能,客戶端彌補了沒有元數據服務器的問題,承擔了更多的功能,包括數據卷管理、I/O 調度、文件定位、數據緩存等功能,利用 FUSE(File system in User Space)模塊將 GlusterFS 掛載到本地文件系統之上,實現 POSIX 兼容的方式來訪問系統數據。

2. 常見術語

  1. Brick:GlusterFS中最基本的存儲單元,表示爲受信存儲池(trusted storage pool)中輸出的目錄,供客戶端掛載用,能夠經過主機名與目錄名來標識,如'SERVER:EXPORT';
  2. Volume:卷,邏輯上由N個brick組成;
  3. FUSE:Unix-like OS上的可動態加載的模塊,容許用戶不用修改內核便可建立本身的文件系統;
  4. Glusterd:Gluster management daemon,在trusted storage pool中全部的服務器上運行;
  5. Volfile:Glusterfs進程的配置文件,一般是位於/var/lib/glusterd/vols/目錄下的{volname}文件;
  6. Self-heal:用於後臺運行檢測複本卷中文件與目錄的不一致性並解決這些不一致;
  7. Split-brain:腦裂;
  8. GFID:GlusterFS卷中的每一個文件或目錄都有一個惟一的128位的數據相關聯,用於模擬inode;
  9. Namespace:每一個Gluster卷都導出單個ns做爲POSIX的掛載點。

3. 數據訪問流程

  1. 在客戶端,用戶經過 glusterfs的mount point讀寫數據;
  2. 用戶的這個操做被遞交給本地 Linux 系統的VFS 來處理;
  3. VFS 將數據遞交給 FUSE 內核文件系統(在啓動 glusterfs 客戶端之前,須要向系統註冊一個實際的文件系統 FUSE),該文件系統與 ext3 在同一個層次, ext3 是對實際的磁盤進行處理,而 fuse 文件系統則是將數據經過 /dev/fuse 這個設備文件遞交給了glusterfs client 端,能夠將 fuse 文件系統理解爲一個代理;
  4. 數據被 fuse 遞交給 Glusterfs client 後, client 對數據進行一些指定的處理(即按 client 配置文件來進行的一系列處理);
  5. 在 glusterfs client 的處理末端,經過網絡將數據遞交給 Glusterfs Server, 而且將數據寫入到服務器所控制的存儲設備上。

二.環境

1. 環境規劃

Hostnamelinux

IPgit

Servicegithub

Remarkvim

glusterfs-clientcentos

172.30.200.50緩存

glusterfs(3.12.9) 服務器

glusterfs-fuse網絡

客戶端

glusterfs01

172.30.200.51

glusterfs(3.12.9)

glusterfs-server(3.12.9)

glusterfs-fuse

服務器端

glusterfs02

172.30.200.52

glusterfs(3.12.9)

glusterfs-server(3.12.9)

glusterfs-fuse

服務器端

glusterfs03

172.30.200.53

glusterfs(3.12.9)

glusterfs-server(3.12.9)

glusterfs-fuse

服務器端

glusterfs04

172.30.200.54

glusterfs(3.12.9)

glusterfs-server(3.12.9)

glusterfs-fuse

服務器端

2. 設置hosts

# 全部節點保持一致的hosts便可,以gluster01節點爲例;
# 綁定hosts不是必須的,後續組建受信存儲池也可以使用ip的形式
[root@glusterfs01 ~]# vim /etc/hosts 
# glusterfs
172.30.200.50   glusterfs-client
172.30.200.51   glusterfs01
172.30.200.52   glusterfs02
172.30.200.53   glusterfs03
172.30.200.54   glusterfs04

[root@glusterfs01 ~]# cat /etc/hosts

3. 設置ntp

# 至少4個Brick Server節點須要保持時鐘同步(重要),以glusterfs01節點爲例
[root@glusterfs01 ~]# yum install chrony -y 

# 編輯/etc/chrony.conf文件,設置」172.20.0.252」爲時鐘源;
[root@glusterfs01 ~]# egrep -v "^$|^#" /etc/chrony.conf 
server 172.20.0.252 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony

# 設置開機啓動,並重啓
[root@glusterfs01 ~]# systemctl enable chronyd.service
[root@glusterfs01 ~]# systemctl restart chronyd.service

# 查看狀態
[root@glusterfs01 ~]# systemctl status chronyd.service
[root@glusterfs01 ~]# chronyc sources -v

4. 設置glusterfs packages

# 所有節點安裝glusterfs yum源
[root@glusterfs01 ~]# yum install -y centos-release-gluster 

# 查看
[root@glusterfs01 ~]# yum repolist

5. 設置iptables

# 提早統一設置iptables(至少4個Brick Server節點),以glusterfs01節點爲例;
# 初始環境已使用iptables替代centos7.x自帶的firewalld,同時關閉selinux;
[root@glusterfs01 ~]# vim /etc/sysconfig/iptables
# tcp24007:24008:glusterfsd daemon management服務監聽端口;
# tcp49152:49160:3.4版本以後(以前的版本的起始端口是24009),啓動1個brick,即啓動1個監聽端口,起始端口爲49152,依次類推,如這裏設置49152:49160,可開啓9個brick;
# 另若是啓動nfs server,須要開啓38465:38467,111等端口
-A INPUT -p tcp -m state --state NEW -m tcp --dport 24007:24008 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 49152:49160 -j ACCEPT

[root@glusterfs01 ~]# service iptables restart

三.設置glusterfs

1. mount brick

1)建立分區

# 各brick server的磁盤掛載前須要建立分區並格式化,以glusterfs01節點爲例;
# 將整個/dev/sdb磁盤設置爲1個分區,分區設置默認便可
[root@glusterfs01 ~]# fdisk /dev/sdb
Command (m for help): n
Select (default p): 
Partition number (1-4, default 1): 
First sector (2048-209715199, default 2048): 
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199): 
Command (m for help): w # 查看
[root@glusterfs01 ~]# fdisk -l /dev/sdb 

2)格式化分區

[root@glusterfs01 ~]# mkfs.xfs -i size=512 /dev/sdb1

3)掛載分區

# 建立掛載目錄,目錄名自定義;
# 這裏爲區分,能夠將4個server節點的目錄名按順序命名(非必須)
[root@glusterfs01 ~]# mkdir -p /brick1
[root@glusterfs02 ~]# mkdir -p /brick2
[root@glusterfs03 ~]# mkdir -p /brick3
[root@glusterfs04 ~]# mkdir -p /brick4

# 修改/etc/fstab文件,以glusterfs01節點爲例,注意其他3各節點掛載點目錄名不一樣;
# 第一欄:設備裝置名;
# 第二欄:掛載點;
# 第三欄:文件系統;
# 第四欄:文件系統參數,默認狀況使用 defaults 便可,同時具備 rw, suid, dev, exec, auto, nouser, async 等參數;
# 第五欄:是否被 dump 備份命令做用,"0"表明不作 dump 備份; "1"表明要天天進行 dump; "2"表明其餘不定日期的 dump; 一般設置"0" 或者"1";
# 第六欄:是否以 fsck 檢驗扇區,啓動過程當中,系統默認會以 fsck 檢驗 filesystem 是否完整 (clean), 但某些 filesystem 是不須要檢驗的,如swap;"0"是不要檢驗,"1"表示最先檢驗(通常只有根目錄會配置爲 "1"),"2"是檢驗,但晚於"1";一般根目錄配置爲"1" ,其他須要要檢驗的 filesystem 都配置爲"2";
[root@glusterfs01 ~]# echo "/dev/sdb1 /brick1                               xfs     defaults        1 2" >> /etc/fstab

# 掛載並展現
[root@glusterfs01 ~]# mount -a && mount

2. 啓動glusterfs-server

1)安裝glusterfs-server

# 在4個brick server節點安裝glusterfs-server,以glusterfs01節點爲例
[root@glusterfs01 ~]# yum install -y glusterfs-server

2)啓動glusterfs-server

[root@glusterfs01 ~]# systemctl enable glusterd
[root@glusterfs01 ~]# systemctl restart glusterd

# 查看狀態
[root@glusterfs01 ~]# systemctl status glusterd

# 查看服務監聽端口
[root@glusterfs01 ~]# netstat -tunlp

3. 組建受信存儲池

受信存儲池(trusted storage pools),是1個可信的網絡存儲服務器,爲卷提供brick,能夠理解爲集羣。 

# 在任意一個server節點組建受信存儲池都可,即由任意節點邀請其餘節點組建存儲池;
# 組建時,作爲」邀請者」,不須要再加入本節點;
# 使用ip或dns主機名解析均可以,這裏已在hosts文件綁定主機,採用主機名;
# 從集羣移除節點:gluster peer detach <ip or hostname>
[root@glusterfs01 ~]# gluster peer probe glusterfs02
[root@glusterfs01 ~]# gluster peer probe glusterfs03
[root@glusterfs01 ~]# gluster peer probe glusterfs04

# 查看受信存儲池狀態;
# 在glusterfs01節點查看集羣狀態,不會list出本節點,只展現peers
[root@glusterfs01 ~]# gluster peer status

4. 設置glusterfs-client

# 客戶端主要安裝兩個組件,glusterfs與glusterfs-fuse;
# glusterfs-client具有如數據卷管理、I/O 調度、文件定位、數據緩存等功能;
# glusterfs-fuse將遠端glusterfs掛載到本地文件系統,可經過」modinfo fuse」,「ll /dev/fuse」等命令查看
[root@glusterfs-client ~]# yum install -y glusterfs glusterfs-fuse
相關文章
相關標籤/搜索