gfs2共享集群存储

本文系统Centos 6.5 x64

共四台主机,

192.168.100.128 Aries.lansgg.com               存储共享服务器
192.168.100.129 node1.lansgg.com             测试客户端
192.168.100.130 node2.lansgg.com             测试客户端

192.168.100.131 node3.lansgg.com             测试客户端

目的:存储server通过iscsi共享,node 1 2 3 三台主机挂载存储,达到高可用,灵活性机制。利用RHCS搭建GFS2高可用集群文件系统,且保证3个节点对存储设备能够同时读写访问。

1、GFS2

是一个基于GFS的先进的集群文件系统,能够同步每台主机的集群文件系统的metadata,能够进行文件锁的管理,并且必须要redhat cluster suite(RHCS)支持,GFS2可以grow,进行容量的调整,不过这是在LVM基础上。

GFS是Redhat公司开发的一款集群文件系统,目前的最新版本是GFS2,GFS文件系统允许多个服务同时读写一个磁盘分区,通过GFS可以实现数据的集中管理,免去了数据同步和拷贝的麻烦,但GFS并不能孤立的存在,安装GFS需要RHCS的底层组件支持

2、CLVM (Cluster Logical Volume Manager )
Cluster逻辑卷管理,即CLVM,是LVM的扩展,这种扩展允许cluster中的机器使用LVM来管理共享存储

3、iSCSI
 iSCSI是一种在Internet协议上,特别是以太网上进行数据块传输的标准,它是一种基于IP Storage理论的新型存储技术,RHCS可以通过ISCSI技术来导出和分配共享存储的使用。

4、CMAN (Cluster Manager,简称CMAN)

是一个分布式集群管理工具,它运行在集群的各个节点上,为RHCS提供集群管理任务。
CMAN用于管理集群成员、消息和通知。它通过监控每个节点的运行状态来了解节点成员之间的关系,当集群中某个节点出现故障,节点成员关系将发生改变,CMAN及时将这种改变通知底层,进而做出相应的调整。

CMAN通过监视集群节点提供一个法定节点数(quorum),当集群
中有多于一半的节点处于活跃状态时,此时符合法定节点数,集群继续可用,当只有有一半或少于一半的节点处于活跃状态是则已达到不到法定节点数,此时整个集
群变得不可用。CMAN通过监控集群中节点来确定各节点的成员关系,当集群中的成员关系发生改变,CMAN会通架构中其它组件来进行相应的调整

5、rgmanager

RHCS通过rgmanager来管理集群服务,rgmanager运行在每个集群节点上,在服务器上对应的进程为clurgmgrd。
 在一个RHCS集群中,高可用**包含集群服务和集群资源两个方面,集群服务其实就是应用服务,例如apache、mysql等,集群资源有很多种,例如一个IP地址、一个运行脚本、ext3/GFS文件系统等

一、配置登录方式

[[email protected] ~]# ssh-keygen -t rsa

[[email protected] ~]# ssh-copy-id -i node1.lansgg.com
[[email protected] ~]# ssh-copy-id -i node2.lansgg.com
[[email protected] ~]# ssh-copy-id -i node3.lansgg.com

[[email protected] ~]# for i in 1 2 3; do ssh node${i}.lansgg.com ‘service iptables stop‘;done
[[email protected] ~]# for i in 1 2 3; do ssh node${i}.lansgg.com ‘setenforce 0‘;done

二、集群插件安装

集群安装

RHCS
的核心组件为cman和rgmanager,其中cman为基于openais的“集群基础架构层”,rgmanager为资源管理器。RHCS的集群中
资源的配置需要修改其主配置文件/etc/cluster/cluster.xml实现,cman和
rgmanager需要分别安装在集群中的每个节点上。这里选择将此三个rpm包分别安装在了集群中的每个节点上

[[email protected] ~]# for i in 1 2 3; do ssh node${i}.lansgg.com ‘yum -y install cman rgmanager‘;done

为集群创建配置文件

RHCS
的配置文件/etc/cluster/cluster.conf,其在每个节点上都必须有一份,且内容均相同,其默认不存在,因此需要事先创建,ccs_tool命令可以完成此任务。另外,每个集群通过集群ID来标识自身,因此,在创建集群配置文件时需要为其选定一个集群名称,这里假设其为
tcluster。此命令需要在集群中的节点上执行。ccs_tool命令用于在线更新CCS的配置文件

[[email protected] ~]# for i in 1 2 3; do ssh node${i}.lansgg.com ‘ccs_tool create testCluster‘;done

查看生成的配置文件的内容

[[email protected] ~]# hostname 
node1.lansgg.com
[[email protected] ~]# cat /etc/cluster/cluster.conf 
<?xml version="1.0"?>
<cluster name="testCluster" config_version="1">

  <clusternodes>
  </clusternodes>

  <fencedevices>
  </fencedevices>

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

为集群添加节点

RHCS
集群需要配置好各节点及相关的fence设备后才能启动,因此,这里需要事先将各节点添加进集群配置文件。每个节点在添加进集群时,需要至少为其配置
node
id(每个节点的id必须惟一),ccs_tool的addnode子命令可以完成节点添加。将前面规划的三个集群节点添加至集群中,可以使用如下命令实现。

[[email protected] ~]# for i in 1 2 3; do ssh node${i}.lansgg.com ‘ccs_tool addnode -n 1 node1.lansgg.com‘;done
[[email protected] ~]# for i in 1 2 3; do ssh node${i}.lansgg.com ‘ccs_tool addnode -n 2 node2.lansgg.com‘;done
[[email protected] ~]# for i in 1 2 3; do ssh node${i}.lansgg.com ‘ccs_tool addnode -n 3 node3.lansgg.com‘;done

查看已经添加完成的节点及相关信息:

[[email protected] ~]# for i in 1 2 3; do ssh node${i}.lansgg.com ‘ ccs_tool lsnode‘;done

启动集群

RHCS集群会等待各节点都启动后方才进入正常工作状态,因此,需要把集群各节点上的cman服务同时启动起来。这分别需要在各节点上执行启动命令

[[email protected] ~]# service cman start

推荐分别在主机同时启动,可能会报错,比如:

   Waiting for quorum... Timed-out waiting for cluster
[[email protected] ~]# for i in 1 2 3; do ssh node${i}.lansgg.com ‘service rgmanager start‘;done
Starting Cluster Service Manager: [确定]
Starting Cluster Service Manager: [确定]
Starting Cluster Service Manager: [确定]

查看集群状态信息:

[[email protected] ~]# for i in 1 2 3; do ssh node${i}.lansgg.com ‘clustat‘;done

cman_tool的status子命令则以当前节点为视角来显示集群的相关信息

[[email protected] ~]# cman_tool status
Version: 6.2.0
Config Version: 4
Cluster Name: testCluster
Cluster Id: 44303
Cluster Member: Yes
Cluster Generation: 16
Membership state: Cluster-Member
Nodes: 3
Expected votes: 3
Total votes: 3
Node votes: 1
Quorum: 2  
Active subsystems: 8
Flags: 
Ports Bound: 0 177  
Node name: node1.lansgg.com
Node ID: 1
Multicast addresses: 239.192.173.188 
Node addresses: 192.168.100.129 
[[email protected] ~]#

cman_tool的nodes子命令则可以列出集群中每个节点的相关信息

[[email protected] ~]# cman_tool nodes
Node  Sts   Inc   Joined               Name
   1   M      8   2015-09-08 14:36:27  node1.lansgg.com
   2   M     12   2015-09-08 14:36:27  node2.lansgg.com
   3   M     16   2015-09-08 14:36:30  node3.lansgg.com

cman_tool的services子命令则可以列出集群中每个服务的相关信息

[[email protected] ~]# cman_tool services
fence domain
member count  3
victim count  0
victim now    0
master nodeid 2
wait state    none
members       1 2 3 

dlm lockspaces
name          rgmanager
id            0x5231f3eb
flags         0x00000000 
change        member 3 joined 1 remove 0 failed 0 seq 3,3
members       1 2 3 

[[email protected] ~]#

ccs_tool  相关命令

1、 首先通过ccs_tool工具创建集群:

ccs_tool create NameofCluster

2、 通过ccs_tool工具创建fence设备:

ccs_tool addfence NameofFence AgentTypeofFence -C

3、 检查已经添加的fence设备:

ccs_tool lsfence  
Name             Agent fence-shared     fence_manual

4、 通过ccs_tool工具创建集群中的节点:

ccs_tool addnode NameofNode –v 1 –n 1 –f NameofFence -C

5、 检查已经添加的节点:

[[email protected] ~]# ccs_tool lsnode

Cluster name: testCluster, config_version: 4

Nodename                        Votes Nodeid Fencetype
node1.lansgg.com                   1    1    
node2.lansgg.com                   1    2    
node3.lansgg.com                   1    3

6、 检查集群健康状态:

[[email protected] ~]# clustat -i 3
Cluster Status for testCluster @ Tue Sep  8 14:45:06 2015
Member Status: Quorate

 Member Name                                                     ID   Status
 ------ ----                                                     ---- ------
 node1.lansgg.com                                                    1 Online, Local
 node2.lansgg.com                                                    2 Online
 node3.lansgg.com                                                    3 Online

8、 更新集群配置:

ccs_tool update /etc/cluster/cluster.conf  
Config file updated from version 6 to 7  
Update complete.

9、 删除集群节点:

ccs_tool delnode NameofNode

10、删除集群fence设备:

ccs_tool delfence NameofFence

三、iscsi 安装配置

[[email protected] ~]# yum -y install scsi-target-utils
[[email protected] ~]# for i in 1 2 3 ; do ssh node${i}.lansgg.com ‘yum install iscsi-initiator* -y‘ ;done

编辑target配置,新增如下:

<target iqn.2015-09-08.com.lansgg:storage:disk.sdb>
        backing-store /dev/sdb
        initiator-address 192.168.100.0/24
</target>

Iqn.yyyy-mm.<reversed domain name>:[identifier]

Iqn:表示iscsi squalfled name 简称iqn

Yyyy-mmm:表示年份-月份。

Reversed domain name:表示倒过来的域名。

Identifier:标识识别代码。这里是storage.disk.sdb

backing-store:指定后端要共享的磁盘编号

initiator-address:授权客户端访问的网络地址

incominguser:设置登录用户的账号密码 (无)

启动服务,查看信息

[[email protected] ~]# /etc/init.d/tgtd start
正在启动 SCSI target daemon:[确定]
[[email protected] ~]# tgtadm -L iscsi -m target -o show
Target 1: iqn.2015-09-08.com.lansgg:storage:disk.sdb
    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: 10737 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/sdb
            Backing store flags: 
    Account information:
    ACL information:
        192.168.100.0/24

node节点发现target

[[email protected] ~]# for i in 1 2 3 ; do ssh node${i}.lansgg.com ‘iscsiadm -m discovery -t sendtargets -p 192.168.100.128‘ ;done
[确定]动 iscsid:[确定]
192.168.100.128:3260,1 iqn.2015-09-08.com.lansgg:storage:disk.sdb
[确定]动 iscsid:[确定]
192.168.100.128:3260,1 iqn.2015-09-08.com.lansgg:storage:disk.sdb
[确定]动 iscsid:[确定]
192.168.100.128:3260,1 iqn.2015-09-08.com.lansgg:storage:disk.sdb

服务启动

[[email protected] ~]# for i in 1 2 3 ; do ssh node${i}.lansgg.com ‘service iscsi start‘ ;done
正在启动 iscsi:[确定]
正在启动 iscsi:[确定]
正在启动 iscsi:[确定]
[[email protected] ~]#

发现后进行登录target

[[email protected] ~]# for i in 1 2 3 ; do ssh node${i}.lansgg.com ‘iscsiadm -m node -T iqn.2015-09-08.com.lansgg:storage:disk.sdb -p 192.168.100.128 -l‘ ;done

这里的“-T”后面跟target名称,“ip-address”是target主机的ip地址,“port”是target主机的端口号,默认是3260 -l 代表 --login

查看node节点新的磁盘信息

[[email protected] ~]# for i in 1 2 3 ; do ssh node${i}.lansgg.com ‘fdisk -l /dev/sdb‘ ;done

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb: 10.7 GB, 10737418240 bytes
64 heads, 32 sectors/track, 10240 cylinders
Units = cylinders of 2048 * 512 = 1048576 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

在其中一个节点上格式化一个分区

安装 gfs2 进行 gfs 分区

[[email protected] ~]# for i in 1 2 3 ; do ssh node${i}.lansgg.com ‘yum -y install gfs2-utils‘ ;done

使用gfs2命令工具在之前创建好的/dev/sdb1上创建集群文件系统gfs2,可以使用如下命令

[[email protected] ~]# mkfs.gfs2 -j 3 -p lock_dlm -t testCluster:sdb1 /dev/sdb1

mkfs.gfs2为gfs2文件系统创建工具,其一般常用的选项有:

-b BlockSize:指定文件系统块大小,最小为512,默认为4096;

-J MegaBytes:指定gfs2日志区域大小,默认为128MB,最小值为8MB;

-j Number:指定创建gfs2文件系统时所创建的日志区域个数,一般需要为每个挂载的客户端指定一个日志区域;有几个node节点就要指定几个

-p LockProtoName:所使用的锁协议名称,通常为lock_dlm或lock_nolock之一;

-t

LockTableName:锁表名称,一般来说一个集群文件系统需一个锁表名以便让集群节点在施加文件锁时得悉其所关联到的集群文件系统,锁表名称为
clustername:fsname,其中的clustername必须跟集群配置文件中的集群名称保持一致,因此,也仅有此集群内的节点可访问此集群
文件系统;此外,同一个集群内,每个文件系统的名称必须惟一。

新建目录进行文件系统挂载

[[email protected] ~]# for i in 1 2 3 ; do ssh node${i}.lansgg.com ‘mkdir /test ‘ ;done
[[email protected] ~]# mount /dev/sdb1 /test/
[[email protected] ~]# echo "test" > /test/test.tt

如果分区无法识别,可以重启系统尝试

挂载gfs分区,查看是否存在node1上创建的text.tt

[[email protected] ~]# for i in  2 3 ; do ssh node${i}.lansgg.com ‘mount /dev/sdb1 /test/ ; cat /test/test.tt ‘ ;done
test
test

四、配置使用CLVM(集群逻辑卷)

在RHCS集群节点上安装lvm2-cluster

[[email protected] ~]# for i in  1 2 3 ; do ssh node${i}.lansgg.com ‘yum -y install lvm2-cluster ‘ ;done

在RHCS的各节点上,为lvm启用集群功能

[[email protected] ~]# for i in  1 2 3 ; do ssh node${i}.lansgg.com ‘lvmconf --enable-cluster‘ ;done

为RHCS各节点启动clvmd服务

[[email protected] ~]# for i in  1 2 3 ; do ssh node${i}.lansgg.com ‘service clvmd start‘ ;done

创建物理卷、卷组和逻辑卷

[[email protected] ~]# pvcreate /dev/sdb2
  Physical volume "/dev/sdb2" successfully created
[[email protected] ~]# vgcreate vgCluster /dev/sdb2 
  Clustered volume group "vgCluster" successfully created
[[email protected] ~]#  lvcreate -L 2G -n lvCluster vgCluster
  Logical volume "lvCluster" created.
[[email protected] ~]#

在其他节点也能看到对应的逻辑卷

[[email protected] ~]# for i in  1 2 3 ; do ssh node${i}.lansgg.com ‘lvs‘ ;done
  LV        VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_root   VolGroup  -wi-ao----   8.54g                                                    
  lv_swap   VolGroup  -wi-ao---- 992.00m                                                    
  lvCluster vgCluster -wi-a-----   2.00g                                                    
  LV        VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_root   VolGroup  -wi-ao----   8.54g                                                    
  lv_swap   VolGroup  -wi-ao---- 992.00m                                                    
  lvCluster vgCluster -wi-a-----   2.00g                                                    
  LV        VG        Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv_root   VolGroup  -wi-ao----   8.54g                                                    
  lv_swap   VolGroup  -wi-ao---- 992.00m                                                    
  lvCluster vgCluster -wi-a-----   2.00g                                                    
[[email protected] ~]#

格式化逻辑卷 为 gfs

[[email protected] ~]# mkfs.gfs2 -p lock_dlm -j 2 -t testCluster:lvCluster /dev/vgCluster/lvCluster

挂载逻辑卷 到 /testClvm

[[email protected] ~]# for i in  1 2 3 ; do ssh node${i}.lansgg.com ‘mkdir /testClvm‘ ;done
[[email protected] ~]# mount /dev/vgCluster/lvCluster /testClvm/
[[email protected] ~]# mount /dev/vgCluster/lvCluster /testClvm/
[[email protected] ~]# mount /dev/vgCluster/lvCluster /testClvm/
Too many nodes mounting filesystem, no free journals

# 发现node3挂载不了,因为刚才创建了2个journal,需要再添加一个

[[email protected] ~]# gfs2_jadd -j 1 /dev/vgCluster/lvCluster
Filesystem:            /testClvm
Old Journals           2
New Journals           3

再次node3挂载

[[email protected] ~]# mount /dev/vgCluster/lvCluster /testClvm/
[[email protected] ~]#

扩展逻辑卷

扩展前

[[email protected] ~]# lvextend -L +2G /dev/vgCluster/lvCluster 
  Size of logical volume vgCluster/lvCluster changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents).
  Logical volume lvCluster successfully resized
[[email protected] ~]# gfs2_grow /dev/vgCluster/lvCluster 
FS: Mount Point: /testClvm
FS: Device:      /dev/dm-2
FS: Size:        524288 (0x80000)
FS: RG size:     65533 (0xfffd)
DEV: Size:       1048576 (0x100000)
The file system grew by 2048MB.
gfs2_grow complete.

扩展后

时间: 2024-10-03 14:57:23

gfs2共享集群存储的相关文章

X9BYOD与传统集群存储读写性能比较

今日,笔者将X9BYOD_v3.0.4版本分别安装在了采用传统集群存储策略的服务器上和采用X9BYOD存储策略的服务器上,然后采用相同的镜像分别生成一个具有相同规格的Windows 7 Home Basic虚拟机,来测试采用不同存储策略下虚拟机系统盘的IOPS性能. 在这里,笔者采用CrystalDiskMark 3.0.3这个软件来测试虚拟机中系统盘(即C盘)的IOPS.由于操作系统所在的系统盘的IOPS值直接影响了该虚拟机的用户体验,所以其IOPS的值是衡量用户体验的重要指标.通过Cryst

CAS工程用redis集群存储票据ticket Spring整合

maven jar包版本: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <groupId>org.springframework.data</groupId> <artifactId>spr

【电商】nginx+tomcat+memcached实现session共享集群

在分布式多tomcat web集群环境下,首先要解决的是session的共享问题,一般的实现思路有: (1) session复制:多tomcat之间进行session的同步,集群中的tomcat存储相同的session信息 (2) 共享session存储:将session集中存储在同一个地方,如redis/memcached,甚至DB.tomcat本身的内存中并不存储session (3) session粘性:其实session粘性并不是session共享的方案,而是多tomcat的集群方案,配

【电商】nginx+redis+tomcat实现session共享集群

本文记录nginx+redis+tomcat实现session共享的过程 tomcat-redis-session-manager组件:https://github.com/jcoleman/tomcat-redis-session-manager tomcat-redis-sessoin-manager对tomcat的支持: (1) tomcat6:支持,要求jdk为1.6, 需要引入tomcat-redis-session-manager-1.2-tomcat-6.jar,不过现在已经处理不

(转)CentOS7.4环境下搭建--Gluster分布式集群存储

原文:https://blog.csdn.net/qq_39591494/article/details/79853038 环境如下:OS:Centos7.4x86_64IP地址如下: Daasbank1: 192.168.1.102---CentOS7.4x86_64 Daasbank2: 192.168.1.103---CentOS7.4x86_64 Daasbank3: 192.168.1.105---CentOS7.4x86_64 Client: 192.168.1.106---Cent

使用Azure Blob优化Hadoop集群存储成本

大数据与云计算的关系就像一枚硬币的正反面一样密不可分,大数据是云计算非常重要的应用场景,而云计算则为大数据的处理和数据挖掘都提供了最佳的技术解决方案.云计算的快速供给.弹性扩展以及按用量付费的优势已经给IT行业带来了巨大变化,它已经日益成为企业IT的首选.在让企业通过数据洞察提升效率和效益的同时,如何降低大数据平台成本也是IT部门经常关心的问题. 为什么用Azure Blob作为Hadoop分布式文件系统管理大数据? HDFS是Hadoop集群分布式文件系统,它将文件分割为数据块Block,默认

基于memcached-session-manager的tomcat session共享集群

MSM的特性: a.支持tomcat 6,tomcat 7,tomcat 8 b.支持sticky session或no-sticky session c.无单点故障 d.tomcat故障转移 e.memcached故障转移 f.附带串行化插件 g.支持异步session存储,拥有更快的性能 sticky sessions粘性会话: 安装了MSM的tomcat会优先使用本机内存保存session,当一个请求结束后,MSM会把session发送到memcached节点上存放以作备份,第二次请求时,

部署terracotta集群存储tomcat的session

环境: centos 6.6 java version:1.6.0.38 tomcat version:6.0.39 terracotta version:3.7.5 terracotta 3.7.5下载地址: 360下载地址:https://yunpan.cn/cBjGjarCiynLi  访问密码 66bd 官网下载地址:http://terracotta.org/downloads/open-source/destination?name=terracotta-3.7.5.tar.gz&b

构建session共享集群

一.安装配置tomcat 配置前说明: 系统为centos7 m1.xsllqs.com地址为192.168.1.107 c1.xsllqs.com地址为192.168.1.114 c2.xsllqs.com地址为192.168.1.113 安装tomcat需要配合JDK使用,JDK有oracle JDK和open JDK两种 oracle JDK8的下载地址:下载 tomcat的下载地址:http://tomcat.apache.org/ c1.xsllqs.com(192.168.1.114