㈠ 如何利用linux和GFS打造集群存储
负载均衡是一项困难的任务。我们经常需要通过NFS(网络文件系统)或其他机制来为数据提供中心地址,从而共享文件系统。虽然你的安全机制可能可以让你免于Web服务器节点的故障,但是你仍然需要通过中央存储节点来共享数据。
通过GFS(全局文件系统)——Linux的一个免费集群文件系统——你可以创建一个不需要依赖其他服务器的真正稳定的集群。在这篇文章中,我们将展示如何正确地设置GFS.
从概念上来说,一个集群文件系统可以允许多个操作系统载入同一个文件系统并可以在同一时间内向同一文件系统写入数据。现在有许多集群文件系统,包括Sun的Lustre,Oracle的OCFS(Oracle集群文件系统),以及Linux的GFS.
有许多方法可以让一个块设备同时被多个服务器所使用。你可以分区出一个对多个服务器都可视的SAN(存储局域网)LUN(逻辑单元号),设置好相应的iSCSI(互联网小型计算机系统接口),或使用DRBD(分布式复制块设备)在两台服务器之间复制一个分区。在使用DRBD的时候,你将需要在主/主节点中设置好DRBD以使用GFS.
GFS要求
运行GFS意味着你在运行一个集群。目前为止,运行GFS的最简单的手段就是使用Red Hat Cluster Suite(RHCS:Red Hat集群套件)。这个套件在CentOS中就有。此外,还需要下面这些包:cman——集群管理器;lvm2-cluster——使LVM(逻辑卷管理器)可以支持集群的CLVM(集群逻辑卷管理器)包;kmod-gfs——GFS内核模块;最后是gfs-utils.
集群管理器(cman)包含必要的工具,比如分布式锁管理器。除非你希望花时间来确认各种不同的分发版本是如何采用cman的,否则我们强烈推荐使用CentOS或RHEL.同时,你还将获得RH(Red Hat)所维护的各种最新版本的集群服务,此外你还可以获得一个比较稳定的环境。
Fencing(阻绝)机制是绝对必要的。一些指导性文章建议将阻绝模式设定成"手动",因为阻绝设置有可能比较复杂。阻绝意味在集群中进行隔离,或马上中断某些危险节点的运作。如果集群无法阻绝某个发生故障的节点,那么你的GFS将会出现很多问题,因此不要跳过这个步骤。
创建集群设置
你可以通过/etc/cluster/里面的cluster.conf完成大部分的集群设置。我不建议使用各种集群管理应用程序来创建这个设置文件。即使是完全支持的RHEL应用程序,比如两个月前发布的Conga,也经常会创建一些无效的cluster.conf文件,并且无法被必要的服务所解析。
下面是一个cluster.conf文件的例子。这个设置文件采用漂亮的XML格式,其内容非常直接。首先,我们对集群进行命名,我们将这个集群称作"Web.1".
先跳过fence daemon选项,下一个部分就是集群主体的设置内容。你需要在clusternodes部分定义两个节点。设置文件将同时存放在两个节点上,这样这两个节点就都知道彼此的情况。
集群内的每个节点都声明其阻绝方式的名称是独一无二的。在clusternames结束标签下面,我们看到fencedevice部分定义了每个节点如何阻绝其他节点的方式。使用一个支持IPMI(智能平台管理接口)的服务器是最好的方式,而且其设置也是相当简单。你只要将IPMI的地点以及登录方式告诉IP就可以了。为了避免在cluster.conf中留下密码,你可以将它指向一个由根所拥有的脚本并由这个脚本来返回密码。
我们还要指出的是我们在设置中定义了两个节点。这是必须的,因为通常来说,除非大部分节点都同意自己的状态,否则集群无法达到"Quorate"状态。如果只有两个节点的话,没有肯定多数,因此这种方式让集群只能在两个节点下工作,而不能只在只有一个节点的情况下工作。这是设置基本集群的必要方式。
在每个节点上运行"service cman start",系统应该可以开始正常运作。你可以检查"clustat"或"cman nodes"来确认节点是否良好运行。如果有哪个必要的部分没有启动,那么集群将不会显示"Quorate"状态。
GFS设置
首先,我们需要设置CLVM,这样我们才可以通过GFS使用LVM.激活CLVM只要在lvm.conf中设定"locking type=3"就可以了。
然后,就像平常一样创建一个LVM卷组和卷,但是使用的是共享的块设备。如果你使用的是DRBD,你将有可能使用/dev/drbd0.我创建了一个物理卷,然后创建一个名为vg01的卷组,然后创建一个名为web1的逻辑卷,这个卷在:/dev/vg01/web1.
最后,我们需要创建文件系统:
gfs_mkfs -t web1:mygfs -p lock_dlm -j 2 /dev/vg01/web1
-t中给定的名称必须是集群的名称,然后后面是你给这个文件系统所起的名字。只有web1集群的成员才可以载入这个文件系统。然后,设定分布式锁管理器的锁钥类型,指明你需要两份journal(因为这是一个双节点集群)。如果你预计未来要增加更多的节点,那么你需要在这时设定足够高的journal数量。
总结
我们现在可以开始使用这个文件系统了。在两个节点上启动"clvmd"和"gfs"服务。现在你就可以通过"-t gfs"来将类型指定为GFS,从而载入文件系统。
在开始启动之前,一定要设定好cman,clvmd和gfs服务。你最好能熟悉clustat和gfs_tool命令,因为在系统出现问题的时候,你可以用这些命令来查找问题所在。
不要指望GFS能很快。如果有一个节点在进行大量的写入操作的话,那么在访问文件系统的时候出现停顿是很正常的。对于一个数据读取操作比数据写入操作多得多的Web集群来说,这倒不是什么问题。如果出现明显延迟,那么首先要检查一下所有组件的状况,然后评估正在写入的数据。防止延迟现象的最常见措施就是确保HTTP对话中的数据不是写入GFS卷。
㈡ 如何配置drbd的yum源仓库
drbd 工作原理
DRBD是一种块设备,可以被用于高可用(HA)之中.它类似于一个网络RAID-1功能.当你将数据写入本地 文件系统时,数据还将会被发送到网络中另一台主机上.以相同的形式记录在一个文件系统中。 本地(主节点)与远程主机(备节点)的数据可以保证实时同步.当本地系统出现故障时,远程主机上还会 保留有一份相同的数据,可以继续使用.在高可用(HA)中使用DRBD功能,可以代替使用一个共享盘阵.
因为数据同时存在于本地主机和远程主机上,切换时,远程主机只要使用它上面的那份备份数据,
就可以继续进行服务了。
两台机器的环境如下:
hostname:srv5.localdomain
192.168.8.5
hostname:srv6.localdomain
192.168.8.6
准备环境
在两台机器上各新加一块磁盘
fdisk -l 列出所有的磁盘和分区的情况
在实验中可以看到新加的磁盘还没有分区
Disk /dev/sdb: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
对新加的磁盘分区
[root@srv5 ~]# fdisk /dev/sdb
Command (m for help): n
Command action
e extended
p primary partition (1-4)
e
Partition number (1-4): 1
First cylinder (1-130, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-130, default 130):
Using default value 130
Command (m for help): n
Command action
l logical (5 or over)
p primary partition (1-4)
l
First cylinder (1-130, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-130, default 130):
Using default value 130
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
加载磁盘信息
partprobe /dev/sdb
cat /proc/partions
安装和配置DRBD
1,两台机器上分别安装drbd
yum -y install kmod-drbd83 drbd83
检查是否安装成功
[root@srv5 yum.repos.d]# modprobe -l | grep -i drbd
/lib/moles/2.6.18-53.el5/weak-updates/drbd83/drbd.ko
安装完成后再/sbin 目录下有drbd的命令文件, 在/etc/init.d/目录下有drbd启动脚本
[root@srv5 yum.repos.d]# ls /sbin/drbd*
/sbin/drbdadm /sbin/drbdmeta /sbin/drbdsetup
2,配置drbd
2.1,在两台机器的hosts文件中添加如下的内容:
192.168.8.5 srv5.localdomain
192.168.8.6 srv6.localdomain
2.2,DRBD运行的时候要读取/etc/drbd.conf文件,
将文件的内容保存为如下内容:
include "drbd.d/global_common.conf";
include "drbd.d/*.res";
修改global_common.conf文件内容如下:
[html] view plain
global {
usage-count no;
}
common {
protocol C;
startup {
wfc-timeout 15;
degr-wfc-timeout 15;
outdated-wfc-timeout 15;
}
disk {
on-io-error detach;
fencing resource-only;
}
net {
cram-hmac-alg sha1;
shared-secret "123456";
}
syncer {
rate 100M;
}
}
创建一个xserver.res文件内容如下:
[html] view plain
resource xserver {
meta-disk internal;
device /dev/drbd0; #device指定的参数最后必须有一个数字,用于global的minor-count,
#否则会报错。device指定drbd应用层设备。
on srv5.localdomain{ #注意:drbd配置文件中,机器名大小写敏感!
address 192.168.8.5:7789;
disk /dev/sdb5;
}
on srv6.localdomain {
address 192.168.8.6:7789;
disk /dev/sdb5;
}
}
2.3,假设上面的配置是在92.168.8.5上做的,拷贝上面配置好的3个文件到92.168.8.6上
scp /etc/drbd.conf 192.168.8.6:/etc/drbd.conf
scp /etc/drbd.d/* 192.168.8.6:/etc/drbd.d/
3,在两台机器上创建drbd元数据信息:
[root@srv5 ~]# drbdadm create-md all
Writing meta data...
initializing activity log
NOT initialized bitmap
New drbd meta data block successfully created.
4,启动服务,
4.1,在主节点92.168.8.5上
service drbd start
在备份节点92.168.8.6上
service drbd start
在两台机器上用下面的命令drbd-overview或者cat /proc/drbd查看,发现都是Secondary 备份状态
[root@srv5 ~]# drbd-overview
0:xserver Connected Secondary/Secondary Inconsistent/Inconsistent C r-----
[root@srv6 ~]# cat /proc/drbd
version: 8.3.15 (api:88/proto:86-97)
GIT-hash: build by [email protected], 2013-03-27 16:04:08
0: cs:Connected ro:Secondary/Secondary ds:Inconsistent/Inconsistent C r-----
ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:1044092
4.2,在主节点92.168.8.5上执行下面的命令让其成为主节点
drbdadm -- --overwrite-data-of-peer primary all
然后再看状态:
[root@srv5 ~]# drbd-overview
0:xserver SyncSource Primary/Secondary UpToDate/Inconsistent C r---n-
[=============>......] sync'ed: 70.6% (310268/1044092)K
[root@srv5 ~]# drbd-overview
0:xserver SyncSource Primary/Secondary UpToDate/Inconsistent C r---n-
[================>...] sync'ed: 89.1% (117372/1044092)K
[root@srv5 ~]# drbd-overview
0:xserver Connected Primary/Secondary UpToDate/UpToDate C r-----
4.3,将/dev/drbd0格式化并挂载
在主节点192.168.8.5上执行下面的命令
mkfs.ext3 /dev/drbd0
mkdir /xserver-storage
mount /dev/drbd0 /xserver-storage
4.4,测试同步
在主节点192.168.8.5上执行下面的命令
cd /xserver-storage
echo "a file created in server5" > testfile
在备份节点192.168.8.6上执行下面的命令
mkdir /xserver-storage
mount /dev/drbd0 /xserver-storage
#mount 会出错,因为mount只能在Primary一端使用
在主节点192.168.8.5上执行下面的命令变成备份节点
umount /xserver-storage
drbdadm secondary all
在备份节点192.168.8.6上执行下面的命令变为主节点,可以看到192.168.8.5同步过来的内容
drbdadm primary all
mount /dev/drbd0 /xserver-storage
less /xserver-storage/testfile
可以查看到文件的内容为"a file created in server5"
在192.168.8.6新建一个文件
echo "a file created in server6" > testfile2
再将192.168.8.5变为主节点后mount可以看到testfile2的内容也同步了。
㈢ 请帮我解释一下下面的回答。(回答看不懂)
说明版本不对,你去官网重下最新版
㈣ 安装heartbeat+drbd出现了点问题heartbeat装完了没问题,但是drbd让我头疼了一个星期,求高数指点。
我也是暑假才装的ubuntu 9.04,我装的是vista与Ubuntu双系统。
一. .我推荐你下个UltraISO软件,做一个U盘启动,具体方法如下:在工具栏找到 启动,下拉框中选 写入硬盘映像 ,接下来选你的U盘盘符,写入方式选USB-HDD,等完成后一个启动U盘就做好了。安装的时候,开机时,按F12,不过不同的电脑可能不同,选USB启动。
二. 分区问题 我帮你找了个很详细的教程
一.挂载点
在Linux系统里面,“分区”,被称作“挂载点”,简单明了的说,“挂载点”意思就是:把一部分硬盘容量,“分”成一个文件夹的形式,用来干什么事情。这个文件夹的名字,就叫做:“挂载点”。所以,和Windows有着本质上的超级大的区别,你在任何linux发行版系统里面,绝对不会看到C盘,D盘,E盘这样的,你能看到的,只有“文件夹”形式存在的“挂载点”。
在Linux 系统里面,有一些已经定义好,用来干一些事情的挂载点,常见的“挂载点”有:
1. Boot
大家应该很常见这个英文,是引导的意思。对于Linux来讲,一部分容量,用来“挂载”Boot,就是用于存储系统的引导文件
2. / 或者 /ROOT
就一个符号,是Linux系统特有的,是“根目录”的意思。根目录,用来存储用户的一些基本配置文件,软件设置文件等等很多
3. home
“家”的意思,在Linux系统里面,它是用来存储用户的程序,文件,文档等等所有资源。因此,进行“分区”操作的时候,它是要分的很大很大很大的。
4. SWAP
这个,是Linux和Windows最大的区别了。Windows没这个东西,只有Linux才有。其实它也不是一个“挂载点”,为了菜鸟们理解方便,我这里姑且把它当作一种挂载点。SWAP分区,是让“内存”临时存储文件的专用空间。
小知识:对于大部分常见的Linux核心的系统,上述的 2,4.有它们2个“挂载点”,就够了。当然,Linux下还有其他很多“挂载点”,可以进行详细的设置,我说的2和4,只是必须的,一定要有的,最最基础的!没有它们2个挂载点,根本不能继续安装系统的!
5. usr
用来存放系统自带的,或者通过更新安装的软件的地方。
6. tmp
临时文件存储地方,大家可以理解为Windows下的:C:\Documents and Settings\Administrator\Local Settings\Temp 目录。^_^
7. 自行设置“挂载点”
咱们在Windows里面,可以通过“新建文件夹”来存储一类东西,当然在Linux下也行。除了这个方法,你也可以在“分区”的时候,自己设置一个“挂载点”(其实功能就等于建立个专门的地方,存放专门的东西”)
其他,还有很多很多。我不一一细说了,下面有张图,里面有各个文件夹对应的功能,存贮的东西。大家都可以在“分区”的过程中,手动“挂载”,设置具体容量。
二.Linux系统下,硬盘光驱等设备的命名规则
Linux 好像很喜欢“另类”,它对硬盘设备的命名方法,也和Windows有很大区别。在Linux系统里面,你的硬盘设备信息,是专门存储在“dev”这个挂载点里面的。上面我没有提到这个挂载点,大家知道就行了。后面会见到。它的硬盘命名方法是:
1. IDE 接口的硬盘,Linux下称为(或者说是显示为):HD
2. SATA 硬盘或者 SCSI硬盘,称为: SD
3. 光驱,就是 CDROM 了。如果有多个光驱,是按数字命名排列的,比如:CDROM0,CDROM1,CDROM2
4. 硬盘里面的 Windows下的分区
以Ubuntu 8.04以上为例,它已经很好很好的支持 Windows分区类型(FAT32,FAT,NTFS)的读写操作了。你系统安装好后,它就能自动识别这些Windows分区。它们会以“该分区的容量大小+分区卷标”,来标明,比如:22.5G GAME, 30G System^^^这样。在你系统的“位置”里面,就能看到的。
5. 如果你有多硬盘………………
刚才说了,在Linux里面,硬盘被分为:HD 和 SD,那么,根据英文26个字母的顺序。第一块硬盘,就是 hda,那么,这块硬盘的第一个挂载点,就是 hda1,以此类推 hda2,hda3^^^
刚才说了,多块硬盘,是根据26个字母顺序排的,那么, hdb就是第二块硬盘了。这个应该很容易理解吧?它的“分区”,自然就是:hdb1,hdb2,hdb3……………………同样道理,大家应该能知道, sdb3,是什么意思了吧?
三.关于常见挂载点的容量设置
每个人的硬盘大小都不同,自然也没有“定论”了,我大致说下,大家可以根据自己实际情况,酌情考虑
1. boot
Linux系统,它的引导文件很小很小,这个boot挂载点,大家分 100M,就足够了(这个基本上能算是定论!不管你硬盘多大,就分这么多,足够足够了!等你安装完了系统,去看看它,其实就占 45M——50M)
小知识:BOOT挂载点,并不是必须的。但是个人建议,如果你要做双系统,最好是单独分出来,等你安装grub引导器的时候,把它安装到boot上,就是双系统了,这样做,目的就是更明确,更方便。
2. /(有些linux发行版,这个也写做:/root,功能道理是一样的)
刚才说过了,得大点,至少5G以上
3. home
刚才也说了,是要求最大最大最大的。。。。。。你就尽量分吧。嘿嘿!网上常见的,80的硬盘,分给它 70G的都有………………
4. SWAP
有一个不成文的小规律: 电脑内存,小于 1G的,SWAP分 512M;内存大于 1G的,分 1G就行。
5. TMP
临时存放些垃圾的,自己看着吧了。大不了用满了清理呗。
小知识:linux和windows不一样,垃圾很少很少,可以说是几乎没有,所以,在linux系统下,你完全不用考虑,系统垃圾文件的问题喔!所以,用linux,自然就不用天天吵着:我怎么清理垃圾阿!
6. usr
占你整个容量的 15%差不多吧。呵呵,自己酌情考虑,其实你不“挂载”这个都行的。
Linux的分区,之所以让大家头疼,就是因为它并不是给每个分区,分配一个“字母盘符”,而是通过具体的文件夹名字,来进行“挂载”,进行功能的区分。其实,大家在潜意识里,明白这些挂载点的意思,就行了。别非想着Windows,分区就得有个盘符。。。。。。。^_^想用Linux,很多观念都必须要改变滴~
四.实战 Ubuntu 8.04.1 硬盘分区
基础知识说完了,该进入正题了,以:Ubuntu 为例,来一步一步的图文说明分区过程。
硬盘“分区”,是Ubuntu系统安装过程的:第三步,前两步我实在觉得没必要说了。
1. 系统语言选择—— 都知道选择中文(简体)吧?而且默认就是,直接回车即可!
2. 选择时区 —— 默认就是 (SHANGHAI),会拼音的都明白。中国上海。直接回车
3. 开始头疼的硬盘分区
首先出现的是这个界面,我们选择“手动”
⑴ 这里,就是Ubuntu系统的“分区”软件界面了。每种Linux系统,都自带分区软件,他们的界面和使用方法,也大致相同,菜鸟们学会一种,就完全可以应付所有的了。虽然网上也有很多专门给Linux系统“分区”的第三方软件,但我个人还是推荐大家用系统自带的,方便,直接,快捷~
如图,下面列出了我的硬盘设备:dev/sda ,还用解释么?sda:“sata接口第一块硬盘”
⑵我们选中下面的“空闲空间”行,就能点击“新的分区”了。
⑶点击“新的分区”,我们来创建挂载点。界面如图,我逐个解释
★新分区的类型
boot 和 swap(交换分区)是主,其他的挂载点,都是逻辑。这个不解释了。当然不是定论
★新建分区容量: 自己填写吧
★新分区位置: 默认就行,选择“开始”
★用于
Linux的“分区”,也有很多种类,就像是Windows包括NTFS,FAT32。 现在这个时代,建议大家选择 Ext3 日志文件系统就行了。还有一种 R...FS,具体名字忘了,^_^,也可以。不过我都用Ext3,实质存放档案的分割区。事实上除了ext3外,GNU/Linux可以使用ext2、xfs、reiser及jfs等档案系统存放档案,每个档案系统都有其长短处,不过初学者先使用ext3。
一会儿要建立SWAP挂载点,就是在这里选择!别忘了!
★ 挂载点
不解释了,前面开始时候就介绍了,“分区”软件里面罗列了常见的:boot, /, home,usr,temp
看看,这里面已经提供了如下这些挂载点,大家直接选择就行了:
⑷第一步,建立 BOOT 挂载点的“分区”,看图吧,最直接
⑸第二步:建立 SWAP ,交换空间
⑹建立 /,根目录挂载点
⑺建立 HOME,用户挂载点
⑻到这里,最基本的,就建立忘了,教程里面,我就建立这几个,其他的,大家想建立,可以照猫画虎就行了,应该这个本事都具备吧?^_^ 看下面的图,是已经都挂载好的硬盘了。
4. 填写个人信息:用户名,密码(输入2遍),填写计算机名称
5. 开始“全自动”安装。。。。。。。。。
6. 最后重启,就装完系统拉!
其实我装的时候就分了/root boot swap home,总共我是分了20G。(Linux下可以打开FAT32,ntfs的盘就是xp下的盘,在xp下不能打开ext格式的盘)
三 关于怎么切换系统,开机的时候有操作系统的选择,你可以选择windows或Linux。
四 按步骤来的话一般是不会使文件丢失的,不要担心。当然可以用GHOST备份。
五 分区的话可以用分区魔法师,文件不会丢失的。分区最好是空出一部分。
(图传不上去,很抱歉,可以自己到网上搜索)
㈤ 服务器死机的原因
服务器死机的原因如下:
1、软硬件不兼容。三维软件和一些特殊软件,在有的微机上不能正常启动甚至安装,可能就有软硬件兼容方面的问题。
2、某些软件程序不是标准化的,不能先加载并运行,而是先运行,会导致系统管理混乱。 Beta软件在某些方面不够稳定,使用后,可能会导致系统无法启动。
3、在小内存的情况下,运行占用大内存的应用程序很容易崩溃。因此,需要在运行这些程序时保存当前正在使用的文件。
4、该软件存在冲突或不兼容。在安装某些软件之前,系统可以正常工作。安装后系统异常时,问题可能是由软件引起的。当运行不同的软件时,有时会发生冲突和不兼容,或者防病毒软件中存在一些小错误。只需关闭或卸载该软件即可。
㈥ centos5.8 drbdadm create-md r0时,总提示can not open"/user/local/drbd/etc/drbd.conf"
drbd是需要drbd.conf配置文件的。你就把你的drbd.conf拷贝到报错那么文件夹下面,试一下。
不知道你的drbd怎么装的,可以生成rpm包,再装。那么drbd.conf在/etc下面。