分类: 服务器与存储
2009-09-27 12:44:03
用GlusterFS搭建高可用存储集群
概述
实验环境:ubuntu 8.04 server
网络结构如下图所示:
192.168.253.41和192.168.253.43、192.168.253.42与192.168.253.44分别做互备
然后两个group再做分布式存储。
一: 安装
因为ubuntu 8.04本身并没有带gluster套件,所以我们还需要自己编译安装
1.首先需要在某台ubuntu 8.04的电脑上安装基本的编译工具
#apt-get install sshfs build-essential flex bison byacc vim wget checkinstall
2.去官方网站下载fuse,之所以需要下载这个是因为ubuntu 8.04自己fuse套件并没有提供对GlusterFS的支持
#wget
#tar -zxvf fuse-2.7.4glfs11.tar.gz
#cd fuse-2.7.4glfs11
3.进行编译
#./configure
#make
4.安装fuse。这里有一点需要注意一下,因为我们一共有四台ubuntu server 8.04,所以如果要一台台编译显然是不太现实的事情,所以我们可以用checkinstall工具生成deb包,这样在这台电脑上编译好的东西,直接拿到其它电脑上用dpkg安装一下就搞定了,省却了在每台电脑上进行编译的工作。具体做法如下
首先是用make install进行安装
#make install
安装完成后,现在输入如下命令生成deb包
#checkinstall
在安装过程中会出现如下提示:
checkinstall 1.6.1, Copyright 2002 Felipe Eduardo Sanchez Diaz Duran
本软件以 GNU GPL 版权协议颁布
The package documentation directory ./doc-pak does not exist.
Should I create a default set of package docs? [y]:
直接按回车继续,然后出现如下的提示,
请为这个软件包写一个描述。
用一个空行或 EOF 来结束你的描述。
>>
这里我们继续按回车,因为毕竟我们只是自己用用,又不是用来发布的。所以描述信息不填也没有关系。(哈哈,好像这种态度实在不太好哦。呵呵 )
然后再出现如下提示:
*****************************************
**** Debian package creation selected ***
*****************************************
软件包将用下面的值来创建:
0 - Maintainer: [ root@fs4 ]
1 - Summary: [ Package created with checkinstall 1.6.1 ]
2 - Name: [ fuse ]
3 - Version: [ 2.7.4glfs11 ]
4 - Release: [ 1 ]
5 - License: [ GPL ]
6 - Group: [ checkinstall ]
7 - Architecture: [ i386 ]
8 - Source location: [ fuse-2.7.4glfs11 ]
9 - Alternate source location: [ ]
10 - Requires: [ ]
输入一个数字来改变它们,或按回车键继续:
继续偷懒,啥都不用输入,checkinstall会自动帮我们生成漂亮的文件名的
当一切都按计划处理完毕后,就会出现如下提示了
================= 安装成功 =================
Copying documentation directory...
./
./doc/
./doc/Doxyfile
./doc/how-fuse-works
./doc/kernel.txt
./COPYING
./INSTALL
./NEWS
./AUTHORS
./FAQ
./README.NFS
./COPYING.LIB
./README
./ChangeLog
grep: /var/tmp/XNpcLnGoHbTOOEXLjRXbA/newfile: No such file or directory
把文件拷贝到临时目录……OK
Stripping ELF binaries and libraries...OK
压缩 man 手册页……OK
创建文件列表……OK
创建 Debian 包……OK
安装 Debian 包…… FAILED!
*** 安装软件包失败
你想看日志文件么? [y]:
直接按回车,等待程序处理结束后,再看一下安装目录下,是否有多出来一个deb包了。
#ls *deb -lh
-rw-r--r-- 1 root root 341K 2009-09-12 18:51 fuse_2.7.4glfs11-1_i386.deb
*将我们刚刚生成的deb包放到一个安全的目录下(之所以这么说是因为,如果你喜欢在/tmp目录下临时编译一些东西的话,那么当你重新启动你的电脑后,/tmp目录将会被自动清空掉。)
至此我们的fuse安装完毕。
5.安装gluster
下面依样画葫芦的安装gluster
首先从官方下载gluster的源码包并解包
#wget
#tar -zxvf glusterfs-2.0.6.tar.gz
#cd glusterfs-2.0.6
#./configure
#make
#make install
#checkinstall
到此安装成功,并且已经生成了我们需要的deb包,现在输入命令 ldconfig刷新下动态链接库缓存
#ldconfig
安装完成。
6.其它电脑上面gluster套件的安装
其它电脑上面gluster套件的安装相当简单了,因为我们刚生成了两个deb包嘛,所以只需要把那两个DEB包拷贝到其它电脑上面,然后使用 dpkg -i <包名> 就可以安装了。省时省力。
二:配置
1.首先将gluster的配置文件拷贝到 /etc/目录下
#cp /usr/local/etc/glusterfs/ /etc -rv
然后进入etc目录,里面会看到两个sample文件,我们直接将这两个sample文件改名成我们需要的配置档
#cd /etc/glusterfs/
#ls -alh
total 16K
drwxr-xr-x 2 root root 4.0K 2009-09-12 19:36 .
drwxr-xr-x 64 root root 4.0K 2009-09-12 19:36 ..
-rw-r--r-- 1 root root 1.9K 2009-09-12 19:37 glusterfsd.vol.sample
-rw-r--r-- 1 root root 2.1K 2009-09-12 19:37 glusterfs.vol.sample
# mv glusterfsd.vol.sample glusterfsd.vol
# mv glusterfs.vol.sample glusterfs.vol
其中的glusterfsd.vol是我们的glusterfs服务的配置文件。而glusterfs.vol则是客户端配置文件。下面我们来分别配置这两个文件
#glusterfsd.vol 这是服务端配置档
volume posix
type storage/posix
option directory /srv/export
end-volume
volume locks
type features/locks
subvolumes posix
end-volume
volume brick
type performance/io-threads
option thread-count 8
subvolumes locks
end-volume
### Add network serving capability to above brick.
volume server
type protocol/server
option transport-type tcp
option auth.addr.brick.allow * # Allow access to "brick" volume
end-volume
#glusterfs.vol 这是客户端配置档
#volume setup
volume remote41
type protocol/client
option transport-type tcp
option remote-host 192.168.253.41
option remote-subvolume brick
end-volume
volume remote42
type protocol/client
option transport-type tcp
option remote-host 192.168.253.42
option remote-subvolume brick
end-volume
volume remote43
type protocol/client
option transport-type tcp
option remote-host 192.168.253.43
option remote-subvolume brick
end-volume
volume remote44
type protocol/client
option transport-type tcp
option remote-host 192.168.253.44
option remote-subvolume brick
end-volume
#replicate setup
volume replicate1
type cluster/replicate
subvolumes remote41 remote43
end-volume
volume replicate2
type cluster/replicate
subvolumes remote42 remote44
end-volume
#distribute setup
volume distribute
type cluster/distribute
subvolumes replicate1 replicate2
end-volume
volume writebehind
type performance/write-behind
option window-size 1MB
subvolumes distribute
end-volume
volume cache
type performance/io-cache
option cache-size 512MB
subvolumes writebehind
end-volume
配置完配置档后,我们还需要为服务建立相关的目录。在服务端是我们配置了option directory /srv/export 所以我们需要建立一个提供存储的目录。另外我们还需要建立一个挂载点,以供客户端可以挂载我们的分布式文件系统。
#mkdir /mnt/glusterfs 这是将要挂载gluster文件系统的目录
#kkdir /srv/export -p 这是glusterfsd将要export出来的卷
最后我们还需要做一步,将glusterfsd守护进程加入到我们的启动服务里面去
#update-rc.d glusterfsd defaults
Adding system startup for /etc/init.d/glusterfsd ...
/etc/rc0.d/K20glusterfsd -> ../init.d/glusterfsd
/etc/rc1.d/K20glusterfsd -> ../init.d/glusterfsd
/etc/rc6.d/K20glusterfsd -> ../init.d/glusterfsd
/etc/rc2.d/S20glusterfsd -> ../init.d/glusterfsd
/etc/rc3.d/S20glusterfsd -> ../init.d/glusterfsd
/etc/rc4.d/S20glusterfsd -> ../init.d/glusterfsd
/etc/rc5.d/S20glusterfsd -> ../init.d/glusterfsd
至此配置完毕。
另:如果我们还需要在开机的时候让系统能够自动挂载glusterfs的话,可以通过在/etc/fstab里面添加以下项目来实现
/etc/glusterfs/glusterfs.vol /mnt/glusterfs glusterfs auto 0 0
三:测试
Ladies and gentlemans ,电视机前的各位观众朋友们,最激动人心的事情马上就要到来了,让我们一起大声开始倒计时, 10、 9、 8、 7 ........... :)
我们先用手工挂载的方式挂载glusterfs看是否可以成功
mount -t glusterfs /etc/glusterfs/glusterfs.vol /mnt/glusterfs
如果没有错误提示,则表示OK
哈哈
如果不正确,请查看/usr/local/var/log/glusterfs目录下的日志文件查看错误信息
|