ITPub博客

首页 > Linux操作系统 > Linux操作系统 > GFS2集群文件系统测试指南 ---转

GFS2集群文件系统测试指南 ---转

原创 Linux操作系统 作者:andyxu 时间:2009-09-01 14:41:34 0 删除 编辑

文章转自:http://blog.chinaunix.net/u3/93425/showart_1864554.html

 

GFS2Global File System

RHCS Redhat Cluster Suite

DRBDDistributed Replicated Block Device

PV Physical Volume

VG Volume Group

LV Logical Volume

CLVMClustered LVM

LVM Logical Volume Management

 

测试结构图
 
 
 
 

测试要求

1.         2PC机,安装RHEL5.1,安装ClusterGFS2包,安装开发包。

2.         系统安装完成后,至少有2个磁盘分区,大小约5G

3.         DRBD 8.3.0 Source

4.         每台PC2网卡,其中一个作为drbd同步用,我的环境只有一个网卡。

 

测试步骤

安装操作系统

安装时,安装开发包,安装clustercluster storage

 

配置RHCS

测试发现RHCS好像是一个大杂烩,好像是还在整合的过程中,有点感觉不是一个完整的整体,刚开始有点乱,很多的概念和名词搞不明白,后来基本清楚了,现在的这个版本中你还是可以看到很多在整合中的迹象,比如service的提示和名字就有好多不一致的地方,不过没有关系不影响测试。

 

在配置cluster之前,把hostnameip地址添加到/etc/hosts中。

172.16.48.65    hatest02

172.16.48.199   hatest01

 

system-config-cluster这个图形界面配置cluster最简单。

# system-config-cluster

配置完成后,生成 配置文件/etc/cluster/cluster.conf (其中增加了一个IP Resourcewwwservices)

       

       

               

                       

                               

                                       

                               

                       

               

               

                       

                               

                                       

                               

                       

               

       

       

       

               

       

       

               

                       

                               

                                

                       

               

               

                       

                

               

                       

               

       

 

hatest01上面,启动集群管理和资源管理。

# service cman start

# service rgmanager start

 

至于ricciluci我没有用,所以不管它。 当然你可以使用luci来配置和管理rhcs

 

hatest02上面,scp hatest01:/etc/cluster/cluster.conf /etc/cluster/.

同样启动集群管理和资源管理,就是那2个命令了,上面有的。

 

hatest02上面,打开system-config-cluster,在cluster-management中就可以看到hatest01,hatest02的状态就是member,而且看到services:www已经在运行了。

 

说明: rhcsIP地址的管理不是采用eth0:0 这种index的方式来管理IP地址(heartbeat的方式),而是在eth0上直接添加ip地址的方式,ifconfig是不能看到该IP地址的, ip addr list 如下:

 

2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000

    link/ether 00:20:ed:1e:a5:fc brd ff:ff:ff:ff:ff:ff

    inet 172.16.48.199/24 brd 172.16.48.255 scope global eth0

    inet 172.16.48.15/32 scope global eth0

    inet6 fe80::220:edff:fe1e:a5fc/64 scope link

       valid_lft forever preferred_lft forever

 

hatest02上面启动cman时,总是报告错误,刚开始以为是fence的问题,折腾了半天也没有结果,偶然ccs_test connect 发现connect refused,结果是iptables启动了,service iptables stop 之后,一切正常了,还是文档读的不够,admin文档上说的很详细哦。

 

Fence_manual还是没有搞的很清楚,还需要再详细了解一下,比如合适fence_manualhost reset后,还需要什么手工操作么来join cluster

 

RHCS核心的服务就是cman,rgmanager,其它的没有关注,modclusterdriccicluster monitor可以不要),saslauthdlvm2-monitor

 

安装配置drbd

# tar zfvx drbd-8.3.0.tar.gz

# cd drbd-8.3.0

# make KDIR=/usr/src/linux

# make install

〔对于有多个内核的系统,请保证/usr/src/linux为你正在运行的内核,否则drbd模块将会加载失败,在测试过程中就遇到了这个问题,当时没有太在意内核导致了drbd模块不能加载,切换内核启动,编译就可以了〕

系统会缺省生成/etc/drbd.conf,第一次用drbd的可以好好阅读一下这个文件,了解一些drbd核心的东西,全面的了解对于将来很好的配置drbd是很有帮助的; 同时建议先浏览一下drbd的官方手册,有个大概的印象,在需要的时候再详细查手册,这个手册个人认为还是写的相当不错的:http://www.drbd.org/users-guide/

 

Drbd的配置特别多,我们一般重点关注的如下:

Ø         usage-count no 若是yes,则drbd启动的时候会去注册一个次数,其实是不需要的。

Ø         syncer { rate 10M; } 如果是专用的同步网络,可以把rate设置大些。

Ø         outdate-peer "/usr/lib/heartbeat/drbd-peer-outdater -t 5" :系统缺省会把这个打开,如果没有安装heartbeat的话,就把这个屏蔽吧,否则drbd启动时会报错。

Ø         become-primary-on both 这个在drbd启动后,而且同步初始化完成后可以打开,在第一次启动时,并屏蔽掉。

Ø         size 5G 定义一下需要同步的分区容量,在对于两边容量不同时(主要是测试环境,正式环境肯定要保证2边容量相同,否则不是浪费磁盘空间?)

Ø         allow-two-primaries 这个开始就可以打开,这个是我们测试gfs2的基础哦。

 

配置后的参数文件(2台机器上的配置文件相同):/etc/drbd.conf

global {

    usage-count no;

}

common {

  syncer { rate 10M; }

}

resource r0 {

  protocol C;

  handlers {

    pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";

    pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";

    local-io-error "echo o > /proc/sysrq-trigger ; halt -f";

  }

  startup {

    # become-primary-on both; # drbd同步初始化完成后再打开吧。

  }

  disk {

    on-io-error   detach;

    size 4G;

  }

  net {

    # allow-two-primaries; # drbd同步初始化完成后再打开吧。

    after-sb-0pri disconnect;

    after-sb-1pri disconnect;

    after-sb-2pri disconnect;

    rr-conflict disconnect;

  }

  syncer {

    rate 10M;

    al-extents 257;

  }

  on hatest02 {

    device     /dev/drbd0;

    disk       /dev/sda5;

    address    172.16.48.65:7788;

    flexible-meta-disk  internal;

  }

  on hatest01 {

    device    /dev/drbd0;

    disk      /dev/hda5;

    address   172.16.48.199:7788;

    meta-disk internal;

  }

}

resource r1 {

  protocol C;

  startup {

    # become-primary-on both; # drbd同步初始化完成后再打开吧。

  }

  disk {

    on-io-error detach;

    size 4G;

  }

  net {

    # allow-two-primaries; # drbd同步初始化完成后再打开吧。

  }

  syncer {

  }

  on hatest02 {

    device     /dev/drbd1;

    disk       /dev/sda6;

    address    172.16.48.65:7789;

    flexible-meta-disk  internal;

  }

  on hatest01 {

    device     /dev/drbd1;

    disk       /dev/hda6;

    address    172.16.48.199:7789;

    flexible-meta-disk  internal;

  }

}

 

分别在每台机器上建立drbdmetadatadrbd节点

# drbdadm create-md r0

# drbdadm create-md r1

# mknod /dev/drbd0 b 147 0

# mknod /dev/drbd1 b 147 1

 

hatest01上面启动drbd

# service drbd start

在系统询问wait timeout时,yes,因为hatest02还没有启动呢,所以不需要让drbd去连接对方。

 

hatest02上面启动drbd

系统正常启动

 

hatest01上面,进行同步初始化

# drbdadm -- --overwrite-data-of-peer primary r0

这个需要一段时间,根据磁盘容量的大小,可以cat /proc/drbd 看到同步的进度,完成后同步drbd1

# drbdadm -- --overwrite-data-of-peer primary r1

 

同步完成后,开启become-primary-on bothallow-two-primaries,重新启动2台机器的drbdcat /proc/drbd

version: 8.3.0 (api:88/proto:86-89)

GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by root@hatest01, 2009-02-26 14:49:24

 0: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r---

    ns:496 nr:402272 dw:402768 dr:17908 al:4 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:d oos:0

 1: cs:Connected ro:Primary/Primary ds:UpToDate/UpToDate C r---

    ns:0 nr:84 dw:84 dr:12252 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:d oos:0

 

drbd就基本配置完成了。

 

配置clvmdLVMkfs.gfs2

Gfs2需要基于clvmd,所以只能用lvm2来管理分区,同时还要启动lvmcluster模式

配置lvm,配置pv的检测范围:/etc/lvm/lvm.conf

locking_type=3

filter = [ "a|/dev/drbd*|", "r/.*/" ]

如果filter没有配置的话,那么lvm总是去寻找/dev/sd*,同时报告duplicated xxx,这个问题也折腾了我以阵子,drbd的文档还是没有看的很仔细哦,文档上已经作了说明:http://www.drbd.org/users-guide/s-lvm-drbd-as-pv.html

 

参考上述要求修改2台机器的/etc/lvm/lvm.conf

2台机器上启动clvmd

# service clvmd start

 

hatest01上面(任意一台机器都可以的)建立lvclvmd会自动同步到其它机器的。

# pvcreate /dev/drbd0 /dev/drbd1

# vgcreate vgtest /dev/drbd0 /dev/drbd1

# lvcreate -- size 1.5G - - name oradata vgtest

# lvcreate -- size 1.0G - - name oraindex vgtest

# mkfs -t gfs2 -p lock_dlm -j 2 -t gfs_cluster:oradata /dev/vgtest/oradata

 

 

这个分区就1.5G,结果搞了30分钟才完成,不知道什么原因,其间看到drbd在疯狂同步,drbd在初始化时不是已经同步了么,还搞么事鬼?

 

跟踪一下系统各个服务的端口,做到各个服务心中有数,参考admin文档Page11

 

mount gfs2,测试gfs2

hatest01hatest02上面:

# Mount –t gfs2 /dev/vgtest/oradata /mnt/oradata

 

Ø         在任何一台主机上面,生成一个文件,在另外一台主机上面就可以看到。

Ø         hatest01上面编辑a.txt hatest02上面编辑a.txt是报告该文件locked

 

问题列表

1.         没有测试RHCS是否可配置heartbeatIP,应该是可行的

2.         Lvm的管理测试,resizeremovemove

3.         RHCS的详细配置:基本完成,参考rhcs2个官方文档。

4.         Drbd的详细配置:这个内容较多,要花点时间了。

5.         需要的service的列表,及其端口,通讯要求等:基本清楚,参考rhcs admin的文档

6.         DLM机制在哪里:rhcscluster infrastructure

7.         Gfs2进行grow时没有生效?

 

基础组件

Ø         Cluster Infrastructureconfiguration-file management, membership management, lock management, and fencingCMAN/DLMCCSfence

Ø         HA Failover:提供服务切换

Ø         Cluster管理工具: GUIcongahttps方式)

Ø         LVS(Linux Virtual Server)IP-loading-balance

 

可选组件

Ø         GFSGlobal File System

Ø         CLVMD:集群卷管理器

Ø         GNBD Global Network Block Device,这个东西从属于GFS,现在要废掉了,基本停止开发了,关键是也没有什么应用。

 

详细组件说明

Ø         CMAN 通过quorum来避免split-brainquorum=50% node notes +1 quorum通过2中方式来通讯(ethernet or quorum disk)。缺省多播地址:239.192.62.242

Ø         DLM:共享存储访问的一种锁控制机制;供GFSCLVMD使用。

Ø         FENCE:需要为每个设备定义fence Agent,就是说如果1个节点有2个设备那么要定义2fence Agent。多个fence agent采取级联的方式进行fence,并且loop

Ø         CCSCluster Configuration System):同步集群的配置文件。

Ø         RgmanagerNode Fails,手工move资源。Agent目录:/usr/share/cluster/

Ø         Failover Domain

 

 

GFS

Ø         分布式metadata

Ø         journals

Ø         Lock_manager来协同IO

 

CLVMD

Ø         分布式lvmmetadata

Ø         Lock_manager

Ø         Locking_type=3

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/110321/viewspace-613697/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-06-26

  • 博文量
    167
  • 访问量
    292010