Chinaunix首页 | 论坛 | 博客
  • 博客访问: 94895
  • 博文数量: 30
  • 博客积分: 1235
  • 博客等级: 中尉
  • 技术积分: 295
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-20 21:15
文章分类

全部博文(30)

文章存档

2010年(8)

2009年(22)

我的朋友

分类: 服务器与存储

2009-09-27 12:44:03

用GlusterFS搭建高可用存储集群



概述


实验环境:ubuntu 8.04 server

网络结构如下图所示:

192.168.253.41192.168.253.43192.168.253.42192.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目录下的日志文件查看错误信息



文件:glusterfs_config_file.zip
大小:1KB
下载:下载


阅读(4442) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~