文章转自:http://blog.chinaunix.net/u3/93425/showart_1864554.html
GFS2:Global File System
RHCS: Redhat Cluster Suite
DRBD:Distributed Replicated Block Device
PV: Physical Volume
VG: Volume Group
LV: Logical Volume
CLVM:Clustered LVM
LVM: Logical Volume Management
![090316110007.gif](http://blogimg.chinaunix.net/blog/upfile2/090316110007.gif)
测试要求
1. 2台PC机,安装RHEL5.1,安装Cluster和GFS2包,安装开发包。
2. 系统安装完成后,至少有2个磁盘分区,大小约5G。
3. DRBD 8.3.0 Source。
4. 每台PC有2网卡,其中一个作为drbd同步用,我的环境只有一个网卡。
测试步骤
安装操作系统
安装时,安装开发包,安装cluster,cluster storage
配置RHCS
测试发现RHCS好像是一个大杂烩,好像是还在整合的过程中,有点感觉不是一个完整的整体,刚开始有点乱,很多的概念和名词搞不明白,后来基本清楚了,现在的这个版本中你还是可以看到很多在整合中的迹象,比如service的提示和名字就有好多不一致的地方,不过没有关系不影响测试。
在配置cluster之前,把hostname和ip地址添加到/etc/hosts中。
172.16.48.65 hatest02
172.16.48.199 hatest01
用system-config-cluster这个图形界面配置cluster最简单。
# system-config-cluster
配置完成后,生成 配置文件/etc/cluster/cluster.conf (其中增加了一个IP Resource和www的services)
<?xml version="1.0"?>
在hatest01上面,启动集群管理和资源管理。
# service cman start
# service rgmanager start
至于ricci和luci我没有用,所以不管它。 当然你可以使用luci来配置和管理rhcs。
在hatest02上面,scp hatest01:/etc/cluster/cluster.conf /etc/cluster/.
同样启动集群管理和资源管理,就是那2个命令了,上面有的。
在hatest02上面,打开system-config-cluster,在cluster-management中就可以看到hatest01,hatest02的状态就是member,而且看到services:www已经在运行了。
说明: rhcs对IP地址的管理不是采用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_manual,host reset后,还需要什么手工操作么来join cluster?
RHCS核心的服务就是cman,rgmanager,其它的没有关注,modclusterd(ricci的cluster monitor可以不要),saslauthd,lvm2-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;
}
}
分别在每台机器上建立drbd的metadata和drbd节点
# 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 both和allow-two-primaries,重新启动2台机器的drbd,cat /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就基本配置完成了。
配置clvmd、LV、Mkfs.gfs2
Gfs2需要基于clvmd,所以只能用lvm2来管理分区,同时还要启动lvm的cluster模式
配置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上面(任意一台机器都可以的)建立lv;clvmd会自动同步到其它机器的。
# 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
在hatest01和hatest02上面:
# Mount –t gfs2 /dev/vgtest/oradata /mnt/oradata
Ø 在任何一台主机上面,生成一个文件,在另外一台主机上面就可以看到。
Ø 在hatest01上面编辑a.txt , 把hatest02上面编辑a.txt是报告该文件locked
问题列表
1. 没有测试RHCS是否可配置heartbeat的IP,应该是可行的
2. Lvm的管理测试,resize,remove,move等
3. RHCS的详细配置:基本完成,参考rhcs的2个官方文档。
4. Drbd的详细配置:这个内容较多,要花点时间了。
5. 需要的service的列表,及其端口,通讯要求等:基本清楚,参考rhcs 的admin的文档
6. DLM机制在哪里:rhcs的cluster infrastructure
7. Gfs2进行grow时没有生效?
基础组件
Ø Cluster Infrastructure:configuration-file management, membership management, lock management, and fencing(CMAN/DLM,CCS,fence)
Ø HA Failover:提供服务切换
Ø Cluster管理工具: GUI,conga(https方式)
Ø LVS(Linux Virtual Server):IP-loading-balance
可选组件
Ø GFS:Global File System
Ø CLVMD:集群卷管理器
Ø GNBD: Global Network Block Device,这个东西从属于GFS,现在要废掉了,基本停止开发了,关键是也没有什么应用。
详细组件说明
Ø CMAN: 通过quorum来避免split-brain,quorum=50% node notes +1 ;quorum通过2中方式来通讯(ethernet or quorum disk)。缺省多播地址:239.192.62.242
Ø DLM:共享存储访问的一种锁控制机制;供GFS和CLVMD使用。
Ø FENCE:需要为每个设备定义fence Agent,就是说如果1个节点有2个设备那么要定义2个fence Agent。多个fence agent采取级联的方式进行fence,并且loop。
Ø CCS(Cluster Configuration System):同步集群的配置文件。
Ø Rgmanager:Node Fails,手工move资源。Agent目录:/usr/share/cluster/
Ø Failover Domain:
GFS
Ø 分布式metadata
Ø 多journals
Ø Lock_manager来协同IO
CLVMD
Ø 分布式lvm的metadata
Ø Lock_manager
Ø Locking_type=3
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/110321/viewspace-613697/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/110321/viewspace-613697/