博文目录:

环境说明

一、准备工作

二、安装配置iscsi target端

三、安装集群套件

四、配置启动集群服务

五、使用GFS2

六、使用Clvm

环境说明:

1)本配置共有三个测试节点(RHCS集群套件,要求节点最少得3个),分别node1.rhcs.comnode2.rhcs.comnode3.rhcs.com,相的IP地址分别为192.168.88.138192.168.88.139192.168.88.141;操作系统为centos6.4 32bit

2iscsiserver的主机名为 www.iscsi.com ,ip 地址为192.168.88.145

3)为集群中的每个节点事先配置好yum源;

4)清除防火墙规则iptables -Fservice iptables save

网络拓扑:

centos6.4 环境下配置使用gfs2以及clvm_rgmanager gfs2 clvm

一、准备工作

1.1 设定主机名称解析

所有节点的主机名称和对应的IP地址解析服务可以正常工作,且每个节点的主机名称需要跟"uname-n“命令的结果保持一致;因此,需要保证三个测试节点上的/etc/hosts文件均为下面的内容:

192.168.88.138 node1.rhcs.com node1

192.168.88.139 node2.rhcs.com node2

192.168.88.141 node3.rhcs.com node3

1.2 为了使得重新启动系统后仍能保持如上的主机名称,还分别需要在各节点更改/etc/sysconfig/network

hostname改为各自对应的主机名

1.3 三个节点确保时间保持一致

1.4 在某个节点上配置ssh与其他两个节点互相通信

注:由于后续的诸多设定,如rpm包安装、配置文件修改等都需要在三个节点上同时进行;为了便于实现此过程,我们这里设定node1,使其可以以基于密钥认证的方式与其他个节点进行通信,如此一来,在node1上进行的配置文件的修改,复制给其他两个节点即可。实际使用中,可以设置专用的跳板机,与三个节点通信。

[root@node1 ~]# ssh-keygen

[root@node1 ~]# ssh-copy-id root@node2

[root@node1 ~]# ssh-copy-id root@node2

1.5 验证配置

[root@node1 ~]# date;ssh node2"date";ssh node3 "date"

Wed Mar5 09:47:47 CST 2014

Wed Mar5 09:47:47 CST 2014

Wed Mar5 09:47:47 CST 2014

二、安装与配置iscsi server

2.1 安装服务端软件

注:在www.iscsi.com 这台主机上执行

yum -y install scsi-target.utils

2.2 配置target

配置文件在/etc/tgt/targets.conf

<targetiqn.2014-09.com.iscsi:server.target1> #配置target名称

backing-store /dev/sdb#配置target共享的磁盘

initiator-address 192.168.88.0/24#设定访问控制

</target>

2.3 启动并验证

[root@www ~]# service tgtd start

Starting SCSI target daemon:[OK]

[root@www ~]# chkconfig tgtd on

root@www ~]# tgtadm --mode target --opshow

Target 1:iqn.2014-09.com.iscsi:server.target1

System information:

Driver: iscsi

State: ready

I_T nexus information:

LUN information:

LUN: 0

Type: controller

SCSI ID: IET00010000

SCSI SN: beaf10

Size: 0 MB, Block size: 1

Online: Yes

Removable media: No

Readonly: No

Backing store type: null

Backing store path: None

Backing store flags:

LUN: 1

Type: disk

SCSI ID: IET00010001

SCSI SN: beaf11

Size: 1074 MB, Block size: 512

Online: Yes

Removable media: No

Readonly: No

Backing store type: rdwr

Backing store path: /dev/sdb

Backing store flags:

Account information:

ACL information:

192.168.88.0/24

2.4 在三个节点安装配置initiator

分别在三个节点安装iscsi-initiator-utils

在三个节点上分别配置InitiatorName

 

[root@node1 iscsi]# echo"InitiatorName= `iscsi-iname -p "iqn.2014-09.com.iscsi"`"> initiatorname.iscsi

[root@node1 iscsi]# catinitiatorname.iscsi

InitiatorName=iqn.2014-09.com.iscsi:ae6ba451e3a9

在三个节点发现target

[root@node1 ~]# iscsiadm --modediscovery --type sendtargets --portal 192.168.88.145 --discover

Starting iscsid:[OK]

192.168.88.145:3260,1iqn.2014-09.com.iscsi:server.target1

[root@node1 ~]#

在三个节点登陆target 并验证

[root@node1 ~]# iscsiadm --mode node--targetname iqn.2014-09.com.iscsi:server.target1 --portal 192.168.88.145--login

Logging in to [iface: default, target:iqn.2014-09.com.iscsi:server.target1, portal: 192.168.88.145,3260] (multiple)

Login to [iface: default, target:iqn.2014-09.com.iscsi:server.target1, portal: 192.168.88.145,3260] successful.

[root@node1 ~]# fdisk -l

Disk /dev/sda: 32.2 GB, 32212254720bytes

255 heads, 63 sectors/track, 3916cylinders

Units = cylinders of 16065 * 512 =8225280 bytes

Sector size (logical/physical): 512bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes /512 bytes

Disk identifier: 0x000b315a

Device BootStartEndBlocksIdSystem

/dev/sda1*15240960083Linux

Partition 1 does not end on cylinderboundary.

/dev/sda25213261024000083Linux

/dev/sda313261454102400082Linux swap / Solaris

Disk /dev/sdb: 1073 MB, 1073741824 bytes

34 heads, 61 sectors/track, 1011cylinders

Units = cylinders of 2074 * 512 =1061888 bytes

Sector size (logical/physical): 512bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes /512 bytes

Disk identifier: 0x00000000

#到此为止,iscsi配置完成。

三、安装集群套件

RHCS的核心组件为cmanrgmanager,其中cman为基于openais集群基础架构层rgmanager为资源管理器。RHCS的集群中资源的配置需要修改其主配置文件/etc/cluster/cluster.conf

cmanrgmanager需要分别安装在集群中的每个节点上。

 

在三个节点分别执行:

yum install cman rgmanager

 

四、集群配置及其启动

4.1 为集群创建配置文件

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

[root@node1 ~]# ccs_tool -h

Usage:

ccs_tool [options] <command>

Options:

-verboseMake some operations print moredetails.

-hPrint this usage and exit.

-VPrint version information andexit.

Commands:

helpPrint this usage and exit.

query <xpath query> Query thecluster configuration.

addnode <node>Add a node

delnode <node>Delete a node

lsnodeList nodes

lsfenceList fence devices

addfence <fencedev> Add a newfence device

delfence <fencedev> Delete a fencedevice

createCreate a skeleton config file

addnodeidsAssign node ID numbers to all nodes

[root@node1~]# ccs_tool create cluster1

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

[root@node1 ~]# cat/etc/cluster/cluster.conf

<?xml version="1.0"?>

<cluster name="cluster1"config_version="1">

<clusternodes>

</clusternodes>

<fencedevices>

</fencedevices>

<rm>

<failoverdomains/>

<resources/>

</rm>

</cluster>

4.2为集群添加节点

RHCS集群需要配置好各节点及相关的fence设备后才能启动,因此,这里需要事先将各节点添加进集群配置文件。

每个节点在添加进集群时,需要至少为其配置nodeid(每个节点的id必须惟一)及相关的fence设备两个属性(红帽5上必须配置,红帽6非必须配置,我们这里的系统centos6)。

ccs_tooladdnode子命令可以完成节点添加。

查看ccs_tool添加节点时的帮助信息:

[root@node1 ~]# ccs_tool addnode

Usage: ccs_tool addnode [options]<nodename> [<fencearg>=<value>]...

-n --nodeidNode id (required)

-v --votesNumber of votes for this node (default1)

-a --altnameAlternative name/interface formultihomed hosts

-f --fence_typeName reference of fencing to use

-c --configfileName of configuration file(/etc/cluster/cluster.conf)

-o --outputfileName of output file (defaults to same as--configfile)

-h --helpDisplay this help text

Examples:

Add a new node to default configurationfile:

ccs_tool addnode newnode1 -n 1 -f wti7port=1

Add a new node and dump config file tostdout rather than save it

ccs_tool addnode -o- newnode2 -n 2 -fapc port=1

向集群中添加节点:

[root@node1 ~]# ccs_tool addnode -n 1node1.rhcs.com

[root@node1 ~]# ccs_tool addnode -n 2node2.rhcs.com

[root@node1 ~]# ccs_tool addnode -n 3node3.rhcs.com

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

[root@node1 ~]# ccs_tool lsnode

Cluster name: cluster1, config_version:4

NodenameVotes Nodeid Fencetype

node1.rhcs.com11

node2.rhcs.com12

node3.rhcs.com

4.3 复制配置文件至其他两个节点:

[root@node1 cluster]# scp cluster.confroot@node2/etc/cluster/

[root@node1 cluster]# scp cluster.confroot@node3:/etc/cluster/

4.4 启动集群

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

# /etc/rc.d/init.d/cman start

在三个节点检查服务启动情况,三个节点输出一下信息,表名启动成功

Starting cluster:

Checking if cluster has been disabled atboot...[OK]

Checking Network Manager...[OK]

Global setup...[OK]

Loading kernel modules...[OK]

Mounting configfs...[OK]

Starting cman...[OK]

Waiting for quorum...[OK]

Starting fenced...[OK]

Starting dlm_controld...[ OK]

Tuning DLM kernel config...[OK]

Starting gfs_controld...[OK]

Unfencing self...[OK]

Joining fence domain...[OK]

cman 启动成功后在三个节点启动rgmanager

#至此为止,集群服务启动。

4.5 查看集群状态

[root@node1 ~]# clustat

Cluster Status for cluster1 @ WedMar5 10:21:40 2014

Member Status: Quorate

Member NameIDStatus

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

node1.rhcs.com1 Online, Local

node2.rhcs.com2 Online

node3.rhcs.com3 Online

也可以使用cman_toolstatus子命令则以当前节点为视角来显示集群的相关信息。

[root@node1 ~]# cman_tool status

Version: 6.2.0

Config Version: 4

Cluster Name: cluster1

Cluster Id: 53623

Cluster Member: Yes

Cluster Generation: 16

Membership state: Cluster-Member

Nodes: 3

Total votes: 3

Node votes: 1

Quorum: 2

Active subsystems: 8

Flags:

Ports Bound: 0 177

Node name: node1.rhcs.com

Node ID: 1

Multicast addresses: 239.192.209.73

Node addresses: 192.168.88.138

五、配置使用GFS2文件系统

5.1 安装gfs2-utils

5.2 创建gfs2文件系统

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

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

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

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

-p lockProtoName:所使用的锁协议名称,通常有两种类型:lock_dlm(分布式锁)或lock_nolock(无锁)之一;

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

5.3 挂载

三个节点挂载文件系统。

[root@node1 ~]# mount /dev/sdb /mnt

[root@node2 ~]#mount /dev/sdb /mnt

[root@node3 ~]# mount /dev/sdb /mnt

5.4 测试文件是否能够同步

node1 上复制一个文件至/mnt

[root@node3 mnt]# cp /etc/inittab ./

[root@node3 mnt]# ls

inittab

node2node3 上面查看,此时可以看到文件已经同步。

[root@node2 ~]# cd /mnt/

[root@node2 mnt]# ls

inittab

[root@node3 mnt]# ls

inittab

补充:使用gfs2工具查看挂载目录的属性

用法:

gfs2_tool COMMAND [OPTION]

常用COMMAND

freezeFreeze (quiesce) a GFS2 cluster

gettunePrintout the current values ofthe tuning parameters

in a running filesystem. A bettersourceofsimilar

(morecomprehensive)informationisthatinthe

/proc/mounts file. Running the mountcommandwithno

arguments will also provide the sameinformation. This

option is considered obsoleteandwillprobablybe

removed at some future date.

journalsPrintout information about thejournals in a mounted

filesystem.

clearflag Flag File1 File2

Clearanattribute flag on a file. Thisis now obso-

lete and kept only for backwardcompatibility,chattr

isthepreferredwaytoclear attribute flags. See

setflag for available flags. This optionwill probably

be removed at a future date

[root@node1 ~]# gfs2_tool journals /mnt

journal2 - 128MB

journal1 - 128MB

journal0 - 128MB

3 journal(s) found.

[root@node1 ~]# gfs2_tool gettune /mnt

incore_log_blocks = 8192

log_flush_secs = 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_jdata = 0#设置是否立刻同步到磁盘的,一般设置为1。(可使用gfs2_toolsettune /mnt new_files_jdata 1 来设置)

gfs2-jadd

为挂载至的gfs2文件系统添加新的日志区域:

例如:#gfs2_jadd -j 1 /mnt

gfs2-grow

如果需要扩展逻辑卷,其方式与普通逻辑卷相同,只是gfs2文件系统的扩展,

则需要gfs2_grow进行,其需要以挂载点为参数:

六、使用CLVM

如果期望在gfs2中实现弹性的存储空间,可以使用Clvm

6.1 安装

在三个节点上安装lvm2-cluster

yum install lvm2-cluster

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

启用lvm 集群功能有两种方法:

1.cd /etc/lvm

grep -i "locking_type"lvm.conf

locking_type= 3

2 .或者在三个节点上执行'lvmconf --enable-cluster

[root@www ~]# lvmconf --help

usage: /sbin/lvmconf <command>

Commands:

Enable clvm: --enable-cluster[--lockinglibdir <dir>] [--lockinglib <lib>]

6.3 再三个节点启动clvmd服务

service clvmd start

这里,在node1 上创建一个卷组,名字为clustervg,从卷组中创建一个400M的逻辑卷命名为clusterlv

逻辑卷的位置在/dev/mycluster/clusterlv

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

Physical volume "/dev/sdb"successfully created

[root@node1 ~]# vgcreate clustervg/dev/sdb

Clustered volume group"clustervg" successfully created

[root@node1 ~]# vgs

VG#PV #LV #SN AttrVSizeVFree

clustervg100 wz--nc 1020.00m 1020.00m

[root@node1 ~]# lvcreate -L 400M -nclusterlv clustervg

Logical volume "clusterlv"created

[root@node1 ~]# lvs

LVVGAttrLSizePool Origin Data%Move LogCpy%Sync Convert

clusterlv clustervg -wi-a----- 400.00m

6.4格式化文件系统;

mkfs.gfs2 -j 3 -p lock_dlm -tcluster1:clusterlv /dev/mycluster/clusterlv

6.5在三个节点挂载并测试

在三个节点挂载,创建文件,看能否立即同步

mount /dev/clustervg/clusterlv /mnt

6.6 扩展集群逻辑卷

使用集群逻辑卷的主要目的是实现文件系统可弹性的扩充。下面我们来研究下怎么扩展集群逻辑卷:

扩展集群逻辑卷和普通逻辑卷的思路一致,但是使用的命令少有差异:

实现思路

1.查看当前大小

2.扩展物理边界

3.扩展逻辑边界

查看当前空间大小

[root@node1 mnt]# lvs#目前的逻辑卷空间为400M

LVVGAttrLSizePool Origin Data%Move LogCpy%Sync Convert

clusterlv clustervg -wi-ao---- 400.00m

扩展物理边界

root@node1 ~]# lvextend -L +300M/dev/clustervg/clusterlv

Extending logical volume clusterlv to700.00 MiB

Logical volume clusterlv successfullyresized

扩展逻辑边界

[root@node1 ~]# gfs2_grow/dev/clustervg/clusterlv

FS: Mount Point: /mnt

FS: Device:/dev/dm-0

FS: Size:102397 (0x18ffd)

FS: RG size:51188 (0xc7f4)

DEV: Size:179200 (0x2bc00)

The file system grew by 300MB.

gfs2_grow complete.

验证:

[root@node1 ~]# df -h