天天看點

RHCS叢集之iSCSI+gfs2+clvm的配置

準備環境

node1:192.168.139.2

node2:192.168.139.4

node4:192.168.139.8

node5:192.168.139.9

node1:target

node2|node4|node5:initiator端

在node1安裝scsi-target-utils

因為要将發現并登入的target做成內建檔案系統及clvm,是以必須在node2 node4 node5上安裝gfs2-utils,lvm2-cluster,iscsi-initiator-utils

并且将node2 node4 node5安裝cman+rgmanager後配置成一個三節點的RHCS高可用叢集,因為gfs2為一個叢集檔案系統,必須借助HA高可用叢集将故障節點Fence掉,及借助Message Layer進行節點資訊傳遞。

[root@node2 ~]# clustat \\這是上一個實驗建立的叢集,删除掉

Cluster Status for mycluster @ Wed Dec 21 21:58:31 2016

Member Status: Quorate

 Member Name         ID   Status

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

 node2.zxl.com       1 Online, Local

 node4.zxl.com       2 Online

 node5.zxl.com       3 Online

[root@node2 ~]# service cman stop

[root@node2 ~]#  rm -f /etc/cluster/*

通過編輯配置檔案的方式。自動建立target,和LUN

[root@node1 tgt]# vim /etc/tgt/targets.conf

#    backing-store /dev/LVM/somedevice

#</target>

<target iqn.2016-12.com.zxl:disk1.1>

  <backing-store /dev/sdc>

  vendor_id zxl

  lun 1

</backing-store>

initiator-address 192.168.139.0/24

incominguser zxl 888

</target>

[root@node1 tgt]# tgtadm --lld iscsi --mode target --op show 

Target 1: iqn.2016-12.com.zxl:disk1.1

    System information:

        Driver: iscsi

        State: ready

    I_T nexus information:

    LUN information:

        LUN: 0

            Type: controller

            SCSI ID: IET     00010000

            SCSI SN: beaf10

            Size: 0 MB, Block size: 1

            Online: Yes

            Removable media: No

            Prevent removal: No

            Readonly: No

            Backing store type: null

            Backing store path: None

            Backing store flags: 

        LUN: 1

            Type: disk

            SCSI ID: IET     00010001

            SCSI SN: beaf11

            Size: 21475 MB, Block size: 512

            Backing store type: rdwr

            Backing store path: /dev/sdc

    Account information:

        zxl

    ACL information:

        192.168.139.0/24

[root@node1 tgt]# netstat -tnlp |grep tgtd

tcp        0                 LISTEN      1937/tgtd           

tcp        0                 LISTEN      1937/tgtd  

[root@node1 tgt]# chkconfig tgtd on

直接删除discovery的資料庫,清理以前實驗的資料

[root@node2 iscsi]#  iscsiadm -m node -T iqn.2016-12.com.zxl:store1.disk1 -p 192.168.139.2 -o delete

[root@node2 iscsi]#  rm -rf /var/lib/iscsi/send_targets/192.168.139.2,3260/ \\192.168.139.2,3260目錄下已近沒有了記錄資料,将這個目錄頁删了

[root@node4 iscsi]#  iscsiadm -m node -T iqn.2016-12.com.zxl:store1.disk1 -p 192.168.139.2 -o delete

[root@node4 iscsi]#  rm -rf /var/lib/iscsi/send_targets/192.168.139.2,3260/

[root@node5 iscsi]#  iscsiadm -m node -T iqn.2016-12.com.zxl:store1.disk1 -p 192.168.139.2 -o delete

[root@node5 iscsi]#  rm -rf /var/lib/iscsi/send_targets/192.168.139.2,3260/

為initiator起個名

[root@node2 iscsi]# iscsi-iname -p iqn.2016-12.com.zxl \\你寫字首,字尾系統生成

iqn.2016-12.com.zxl:79883141ce9

将initiator_name寫入檔案

[root@node2 iscsi]# echo "InitiatorName=`iscsi-iname -p iqn.2016-12.com.zxl`" > /etc/iscsi/initiatorname.iscsi 

[root@node2 iscsi]# cat /etc/iscsi/initiatorname.iscsi 

InitiatorName=iqn.2016-12.com.zxl:31dcbfbcf845

[root@node4 iscsi]# echo "InitiatorName=`iscsi-iname -p iqn.2016-12.com.zxl`" > /etc/iscsi/initiatorname.iscsi 

[root@node5 iscsi]# echo "InitiatorName=`iscsi-iname -p iqn.2016-12.com.zxl`" > /etc/iscsi/initiatorname.iscsi 

編輯配置檔案,進行基于使用者的認證

[root@node2 iscsi]# vim /etc/iscsi/iscsid.conf 

node.session.auth.authmethod = CHAP

node.session.auth.username = zxl

node.session.auth.password = 888

在三個節點執行一下步驟

[root@node2 iscsi]# service iscsi start

[root@node2 iscsi]# chkconfig iscsi on

發現target

[root@node2 iscsi]#  iscsiadm  -m discovery -t st -p 192.168.139.2

192.168.139.2:3260,1 iqn.2016-12.com.zxl:disk1.1

登入target

[root@node2 iscsi]# iscsiadm -m node -T iqn.2016-12.com.zxl:disk1.1 -p 192.168.139.2 -l

Logging in to [iface: default, target: iqn.2016-12.com.zxl:disk1.1, portal: 192.168.139.2,3260] (multiple)

Login to [iface: default, target: iqn.2016-12.com.zxl:disk1.1, portal: 192.168.139.2,3260] successful.

[root@node2 iscsi]# fdisk -l

Disk /dev/sdc: 21.5 GB, 21474836480 bytes

在三個節點安裝cman rgmanager gfs2-utils lvm2-cluster

[root@node2 iscsi]# yum install -y cman rgmanager gfs2-utils lvm2-cluster

clvm:将共享存儲做成lvm,要借助HA叢集的心跳傳輸機制,腦裂阻止機制......,進而讓多個節點共同使用LVM,一個節點對LVM的操作會立馬通過叢集的Message Layer層通知給其他節點

cLVM在各個節點都啟動一個服務clvmd,這個服務讓各個節點互相通信

啟動lvm叢集功能在每個節點上

[root@node2 mnt]# vim /etc/lvm/lvm.conf

 locking_type = 3

或者用指令也可以改

[root@node2 cluster]# lvmconf --enable-cluster 

建立叢集,添加Fence裝置,加入叢集節點

[root@node4 cluster]# ccs_tool create mycluster

[root@node4 cluster]# ccs_tool addfence meatware fence_manual

[root@node4 cluster]# ccs_tool addnode -v 1 -n 1 -f meatware node2.zxl.com

[root@node4 cluster]# ccs_tool addnode -v 1 -n 2 -f meatware node4.zxl.com

[root@node4 cluster]# ccs_tool addnode -v 1 -n 3 -f meatware node5.zxl.com

[root@node4 cluster]# ccs_tool lsnode

Cluster name: mycluster, config_version: 5

Nodename                        Votes Nodeid Fencetype

node2.zxl.com                      1    1    meatware

node4.zxl.com                      1    2    meatware

node5.zxl.com                      1    3    meatware

啟動cman rgmanager

[root@node2 mnt]# service cman start

cman啟動時啟動不了,可能是因為多點傳播沖突,當節點剛啟動時,由于沒有cluster.conf這個配置檔案,節點可能會接受任何多點傳播傳來的配置檔案(當一個教室許多人同時做實驗時),解決辦法:提前改一個沒人用的多點傳播或者直接将配置檔案手動scp過去,不用ccsd自動同步

[root@node2 mnt]# service rgmanager start

[root@node4 mnt]# service cman start

[root@node4 mnt]# service rgmanager start

[root@node5 mnt]# service cman start

[root@node5 mnt]# service rgmanager start

[root@node2 mnt]# clustat 

[root@node2 cluster]# clustat 

Cluster Status for mycluster @ Wed Dec 21 23:06:16 2016

 Member Name                 ID   Status

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

 node2.zxl.com                1 Online, Local

 node4.zxl.com                2 Online

 node5.zxl.com                3 Online

三個節點都進行如下操作

[root@node2 cluster]# service clvmd start

[root@node2 cluster]# chkconfig clvmd on

[root@node2 cluster]# chkconfig cman on

[root@node2 cluster]# chkconfig rgmanager on

建立LVM

[root@node2 cluster]# fdisk -l

Disk /dev/sdb: 21.5 GB, 21474836480 bytes

[root@node2 cluster]# pvcreate /dev/sdc

[root@node2 cluster]# vgcreate clustervg /dev/sdc

[root@node2 cluster]# lvcreate -L 10G -n clusterlv clustervg

  Logical volume "clusterlv" created.

[root@node2 cluster]# lvs

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

 clusterlv clustervg -wi-a-----  10.00g      

換個節點也可以看到建立的LV

[root@node4 cluster]# lvs

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

 clusterlv clustervg -wi-a-----  10.00g     

格式化為gfs2檔案系統

[root@node2 ~]# mkfs.gfs2 -j 2 -p lock_dlm -t mycluster:lock1 /dev/clustervg/clusterlv 

[root@node2 ~]# mkdir /mydata

root@node2 ~]# mount -t gfs2 /dev/clustervg/clusterlv /mydata

[root@node2 ~]# cd /mydata/

[root@node2 mydata]# touch a.txt

[root@node2 mydata]# ll

total 8

-rw-r--r--. 1 root root 0 Dec 22 08:57 a.txt

顯示所有可調的參數

[root@node2 mydata]# gfs2_tool gettune /mydata

incore_log_blocks = 8192

log_flush_secs = 60 \\60秒重新整理一下日志

quota_warn_period = 10

quota_quantum = 60

max_readahead = 262144

complain_secs = 10

statfs_slow = 0

quota_simul_sync = 64

statfs_quantum = 30

quota_scale = 1.0000   (1, 1)

new_files_directio = 0 \\0 表示不直接寫入磁盤,要先通知其他節點,1表示直接寫入磁盤,性能更                   差

改參數的值為1

[root@node2 mydata]#gfs2_tool settune /mydata new_files_directio 1

當機叢集檔案系統,相當于隻讀模式(建立備份時很好用)

[root@node2 mydata]# gfs2_tool freeze /mydata

[root@node2 mydata]# touch b.txt \\卡着不能建立

另打開一個連接配接,解除當機

[root@node2 ~]# gfs2_tool unfreeze /mydata/

檔案立馬建立好了

total 16

-rw-r--r--. 1 root root 0 Dec 22 09:25 b.txt

node4挂載測試

[root@node4 ~]# mount /dev/clustervg/clusterlv /mydata/

[root@node4 ~]# cd /mydata/

[root@node4 mydata]# touch c.txt

[root@node4 mydata]# ll

total 24

-rw-r--r--. 1 root root 0 Dec 22 09:29 c.txt

再加一個日志,再挂載一個節點node5

[root@node2 mydata]# gfs2_jadd -j 1 /dev/clustervg/clusterlv 

[root@node5 ~]# mount /dev/clustervg/clusterlv /mydata/

[root@node5 ~]# cd /mydata/

[root@node5 mydata]# touch d.txt

[root@node5 mydata]# ll

total 32

-rw-r--r--. 1 root root 0 Dec 22 09:31 d.txt

擴充LV(實體邊界)

[root@node2 mydata]# lvextend -L +5G /dev/clustervg/clusterlv 

[root@node2 mydata]# lvs \\已經擴充為15G

clusterlv clustervg -wi-ao----  15.00g   

換個節點

[root@node4 mydata]# lvs \\其他節點立馬知道了分區大小的改變

 clusterlv clustervg -wi-ao----  15.00g  

擴充gfs2檔案系統的邊界(邏輯邊界)

[root@node2 mydata]# gfs2_grow /dev/clustervg/clusterlv 

  The file system grew by 5120MB.

繼續閱讀