设为首页 收藏本站
查看: 1069|回复: 0

[经验分享] CentOS 5.8上glusterfs 3.5.3 安装手册

[复制链接]

尚未签到

发表于 2019-2-1 11:17:47 | 显示全部楼层 |阅读模式

CentOS5.8glusterfs安装手册












版本历史
时间

版本

说明

编写者

2014-11-19
1.1
CentOS 5glusterfs安装手册
csc











  
  
  
  
武汉****技术有限公司










前提:centos 5.8 标准系统安装,必须安装开发包和开发库
如果没有bison flex 则需要安装。
yum install bison flex

一、安装篇
源代码安装方案:
1. 安装python2.6.5

wgethttp://www.python.org/ftp/python/2.6.5/Python-2.6.5.tar.bz2
tar jxvf Python-2.6.5.tar.bz2
cd Python-2.6.5
./configure --enable-shared  支持64bit
make  
make install

将系统默认的python指向到2.6版本
    #mv/usr/bin/python /usr/bin/python.bak (或者rm -rf /usr/bin/python
    #ln -s/usr/local/bin/python2.6 /usr/bin/python

vi /etc/ld.so.conf 添加
   /usr/local/lib   
    执行:
    ldconfig -v
   
# python -V
Python 2.6.5
   
python 升级后,yum 不能使用,请修改如下:
# vi /usr/bin/yum   
#!/usr/bin/python2.4
  。。。   
  


2. 安装fuse
tar xvzf fuse-2.8.7.tar.gz
cd fuse-2.8.7
./configure
make
make install

fuse测试并检查
lsmod | grep fuse
假如没有, 使用命令
modprobe fuse
lsmod | grep fuse
echo  "modprobefuse" >>/etc/rc.local



3. 安装glusterfs
tar xvzf glusterfs-3.5.3.tar.gz
cd glusterfs-3.5.3
./configure --prefix=/usr/local/glusterfs

######################################################
make之前更改/glusterfs-3.5.3/contrib/qemu/util/oslib-posix.c
175行增加:
#undef CONFIG_PIPE2

1行增加:
#define UTIME_OMIT   ((1l /etc/rc.local

4.启动服务:

/etc/init.d/glusterd   start
3.RPM客户端安装:
  客户端不需要启动glusterd 服务,只需要有挂载命令,安装的RPM包为:
1.安装gluster client RPM包
  只需要安装以上包中的4个:
rpm -ivhglusterfs-libs-3.4.6-1.el5.x86_64.rpm
rpm -ivhglusterfs-cli-3.4.6-1.el5.x86_64.rpm
rpm -ivhglusterfs-3.4.6-1.el5.x86_64.rpm
rpm -ivhglusterfs-fuse-3.4.6-1.el5.x86_64.rpm
2.加载 fuse
modprobe fuse
lsmod | grep fuse
echo  "modprobefuse" >>/etc/rc.local
3.挂载GlusterFS卷到指定目录(/res)
  # mkdir /res
  # mount -t glusterfs 192.168.20.233:/gv0/res
二、配置篇(replica模式)
1、服务器信息:
测试服务器:4ip:192.168.1.1-192.168.1.4
服务端、客户端都需要进行《一、安装篇》部署,
客户端不需要启动glusterd 服务
2、建立分区或磁盘挂在目录
  4台服务器都需要创建:
mkdir-p /brick1
3、挂在分区或磁盘到目录
mount  /dev/sda1  /brick1(所有节点执行挂载,分区或磁盘容量要尽量一致(对于replica模式的卷尤为重要,这种模式下会以容量小的分区或磁盘为准))
  加入开机启动挂载(例子):
  vi  /etc/fstab                                               
  ......
  /dev/sda1              /brick1                 ext3     defaults        0 0
  
  也可直接在本地创建目录,不过不好控制磁盘的大小
  mkdir  /brick1   

4、修改/etc/hosts文件(可省略)
  加入各节点机器名与IP对应关系
test01 192.168.1.1
test02 192.168.1.2
test03 192.168.1.3
test04 192.168.1.4
在其他节点做相同操作

5、建立peer关系(192.168.1.1上操作)
gluster
gluster>peer probe 192.168.1.2  
gluster>peer probe 192.168.1.3  
gluster>peer probe 192.168.1.4
(以上操作在一台服务器上操作即可,状态将同步到其他服务器)

gluster>peerprobe (ip)(后续增加节点时使用)
gluster>peerdetach (ip) (后续删除节点时使用)  可以使用参数 force
gluster>peer status对等体状态
NumberofPeers: 3
Hostname:192.168.1.2
Uuid:67d37243-4332-4324-b497-92cf3d4fa2c1
State:Peerin Cluster (Connected)
Hostname:192.168.1.3
Uuid:0e8f17ba-c061-4537-ac3a-f625600c6663
State:Peerin Cluster (Connected)
Hostname:192.168.1.4
Uuid:66149333-6235-4bcc-82ae-b2fd011794db
State:Peerin Cluster (Connected)

6、建立卷(192.168.1.1上操作)

gluster
gluster>volume create gv0 replica 2 192.168.1.1:/brick1  192.168.1.2:/brick1
建立卷时有三种模式:StripeRAID0)、ReplicateRAID1)和DHT(分布式Hash),默认是DHT,  后边跟的数字意思是几个为1组,此示例中为2个为一组建立replica卷,类似RAID1

##如果直接在/分区建立的文件夹,会提示/root 分区警告,则需要加上force
gluster>volume create gv0 replica 2 10.8.9.13:/brick1  10.8.9.107:/brick1  force

7、向卷中添加brick(192.168.1.1上操作)
gluster>volumeadd-brick gv0 192.168.1.3:/brick1  192.168.1.4:/brick1
可在动态在线增加brick
若是副本卷,则一次添加的Bricks 数是replica 的整数倍;stripe 具有同样的要求
我的动态增加方法(指定两个IP做主备)
gluster>volume add-brickgv0 replica 2 10.8.9.115:/brick1 10.8.9.118:/brick1 force

在线增加brick后,还需重新平衡各节点数据。
gluster>volume rebalance gv0 start开始平衡
startingrebalanceon volume gv0 has been successful
gluster>volume rebalance gv0 status
rebalancestep1: layout fix in progress
gluster>volumerebalance gv0 status
rebalancecompleted重新平衡完成
查看卷信息:
gluster> volume info

8、启动卷
gluster>volumestart gv0

查看卷信息:
       gluster>volume info
卷停止
       gluster>volume stop gv0

将创建的卷启动,才能进行客户端挂载;stop能够将系统卷停止,无法使用;此外gluster未提供restart的重启命令
#gluster>volume delete gv0  #删除卷
//删除卷操作能够将整个卷删除,操作前提是需要将卷先停止

9、客户端挂载
由于安装包时,安装了gluster客户端,所以测试机同时担当客户端/服务器的角色,
也建议在分布式文件系统这样使用。
mount-t glusterfs  192.168.1.1:/gv0  /data
备注:客户端可任意挂载各节点IP地址,gv0 的数据都是一样的
各节点均可挂载自己ip地址,这也符合gluster的设计思想,无元数据服务器,无单点故障。

Mount failed. Please check the log file for more details.
如果报错,则要加载fuse

至此,gluster的配置及初期使用已经介绍完毕,配置使用极为简单,理念及步骤清晰,但要想提升性能及在生产环境中使用,还需进一步的测试及优化。
三、测试篇
  我的实际环境部署:
  在原有的4台节点上,再增加两节点,互为replica 模式,一共6节点:
  gluster> volumeinfo
  
  Volume Name: gv0
  Type:Distributed-Replicate
  Volume ID: caa12bc8-31eb-49ca-bd86-cbd31771b010
  Status: Started
  Number of Bricks: 3 x 2 = 6  
  #3Bricks ,每个bricks还有一个备bricks互为replica 2模式
  Transport-type:tcp
  Bricks:
  Brick1:10.8.9.13:/brick1
  Brick2:10.8.9.107:/brick1
  Brick3:10.8.9.115:/brick1  #新增加
  Brick4: 10.8.9.118:/brick1  #新增加
  Brick5:10.8.9.112:/brick1
  Brick6:10.8.9.114:/brick1
  
测试一:
客户端挂载glusterfs  10.8.9.115 节点,上传总共5G小文件
发现5G小文件被均匀打散,分布在以上六台服务器的/brick1 目录
查看每个节点的/brick1目录,发现:
10.8.9.1310.8.9.107 /brick1 每个文件目录大小一样1.2G
10.8.9.11510.8.9.118 /brick1 每个文件目录大小一样2G
10.8.9.11210.8.9.114 /brick1 每个文件目录大小一样1.8G
以上3组服务器/brick1 目录文件合计5G
测试二:
客户端挂载glusterfs  10.8.9.115节点,上传一个5G的大文件test.img
发现 test.img 只存在10.8.9.11510.8.9.118  /brick1目录
其他服务器没有该文件。
总结:
replica模式下,增加节点,可以增加整个分布式文件系统的存储总量,并且提升整个文件存储系统的性能,其中的replica模式还能实现数据的高可用性。
replica模式下,不进行对大文件的切割,而是存放在其中一组节点(客户端连接的节点优先)。



四、节点删除、修复篇
  
10.8.9.11510.8.9.118  节点互为 replica 模式
  
移除其中一节点测试:
gluster>peerdetach (ip) (后续删除节点时使用)  可以使用参数 force
报错:
gluster> peer detach 10.8.9.115
peer detach: failed: Brick(s) with the peer 10.8.9.115exist in cluster
可使用force 删除。(正常环境下,不建议强制删除,这里为了测试所以用force)
gluster> peer detach 10.8.9.115 force
gluster> peer status  
Hostname: 10.8.9.115
Uuid: cef74bc3-64ba-4f74-8a56-113e63eb467d
State: Peer in Cluster (Disconnected)

利用命令移除10.8.9.115节点后,客户端执行命令 du -sh  /data 挂载的数据大小不变。
客户端上传数据后,10.8.9.118 /brick1目录数据比 10.8.9.115  /brick1 10M
重新添加节点10.8.9.115 ,
gluster>peer probe 10.8.9.115
查看连接状态正常:gluster> peer status
过一段时间后,10.8.9.118 /brick1目录数据 10.8.9.115  /brick1 数据一样
另外:
如果在10.8.9.115 服务停掉后,rm -rf  /brick1/* 发现 /brick1/ 下面有个
.glusterfs  是用来恢复数据用的,启动节点后,数据直接从.glusterfs里面恢复。



删除一组节点测试
关闭两台服务器系统 10.8.9.115   10.8.9.118节点。
或者强制删除两个节点。
客户端执行du -sh /data 挂载的数据总大小减少50G。客户端挂载的目录里面文件一部分丢失。
该步骤主要测试:其中一组(主备)服务器丢失后,数据的完整性。

重新增加这两台节点,或者系统重启,打开cluster服务,
gluster> peer status 显示的节点数都正常连接后,客户端执行:du -sh /data  挂载的数据总大小恢复。

客户端连接节点测试()
  客户端连接 10.8.9.115
  直接关闭节点10.8.9.115 系统,
  查询节点状态出于失效状态:
  Hostname: 10.8.9.115
  Uuid:2886b235-0983-42a9-a7dc-8b27c5813625
  State: Peer inCluster (Disconnected)

客户端df -h查询:
glusterfs#10.8.9.115:/gv0  148G 7.5G  133G   6% /data
上传1G的数据,发现数据尽然能上传,并且数据已经分布到其他的节点。
说明,客户端利用glusterfs 挂载目录,连接的节点不存在单点故障。


五、扩容、缩减篇
缩减节点步骤:
系统的扩容及缩容可以通过如上节点管理、Brick 管理组合达到目的。
(1) 扩容时,可以先增加系统节点,然后添加新增节点上的Brick 即可。
(2) 缩容时,先移除Brick ,然后再进行节点删除则达到缩容的目的,且可以保证数据不丢失
1.移除brick
若是副本卷,则移除的Bricks 数是replica 的整数倍;stripe 具有同样的要求。
因此,副本卷replica 2模式)需要移除一对brick数据会移动到其他的节点上。

gluster> volume remove-brickgv0 10.8.9.112:/brick1 10.8.9.114:/brick1
查看状态
gluster> volume remove-brickgv0 10.8.9.112:/brick1 10.8.9.114:/brick1 status

2.移除节点:
gluster>peer detach 10.8.9.112
gluster>peer detach 10.8.9.114




###############################################################
替换 /brick1

1、先增加一个节点
gluster>peer probe 10.8.9.112
2、替换步骤
10.8.9.115:/brick1替换到 10.8.9.112:/brick1

替换前状态:
gluster>volume info
Volume Name: gv0
Type: Distributed-Replicate
Volume ID: caa12bc8-31eb-49ca-bd86-cbd31771b010
Status: Started
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: 10.8.9.13:/brick1
Brick2: 10.8.9.107:/brick1
Brick3: 10.8.9.115:/brick1
Brick4: 10.8.9.118:/brick1

2.1、开始替换
我挂载的目录是一级目录所以提示报错,需要加force
volume replace-brick gv0 10.8.9.115:/brick110.8.9.112:/brick1 start force

2.2、查看状态:
gluster> volume replace-brick gv010.8.9.115:/brick1 10.8.9.112:/brick1 status
volume replace-brick: success: Number of filesmigrated = 218   Migration complete

2.3commit 提交替换任务
gluster> volume replace-brick gv010.8.9.115:/brick1 10.8.9.112:/brick1 commit
volume replace-brick: success: replace-brick commitsuccessful

替换后状态:
gluster> volume info

Volume Name: gv0
Type: Distributed-Replicate
Volume ID: caa12bc8-31eb-49ca-bd86-cbd31771b010
Status: Started
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: 10.8.9.13:/brick1
Brick2: 10.8.9.107:/brick1
Brick3: 10.8.9.112:/brick1
Brick4: 10.8.9.118:/brick1

客户端上传数据,新节点 10.8.9.112 10.8.9.118   /brick目录数据一样,说明2台节点互为主备。
移除掉的节点10.8.9.115 /brick 数据大小,没有发生变化,说明已经被剔除。
这个时候可以删除节点10.8.9.115服务器了
gluster>peer detach 10.8.9.115
       peerdetach: success


六、系统运维篇
1、系统配额
1.1开启/关闭系统配额
# gluster volume quota VOLNAME enable/disable
//在使用系统配额功能时,需要使用enable将其开启;disable为关闭配额功能命令。
1.2设置(重置)目录配额
# gluster volume quota VOLNAME limit-usage /directorylimit-value
#gluster volume quota dht_vol limit-usage /quota 10GB
//如上,设置dht_vol卷下的quota子目录的限额为10GB
PS:这个目录是以系统挂载目录为根目录”/”,所以/quota即客户端挂载目录下的子目录quota
1.3配额查看
# gluster volume quota VOLNAME list
# gluster volume quota VOLNAME list /directory name
//可以使用如上两个命令进行系统卷的配额查看,第一个命令查看目的卷的所有配额设置,第二个命令则是执行目录进行查看。
//可以显示配额大小及当前使用容量,若无使用容量(最小0KB)则说明设置的目录可能是错误的(不存在)
1.4地域复制、灾备(geo-replication)
# gluster volume geo-replication MASTER SLAVE start/status/stop
地域复制是系统提供的灾备功能,能够将系统的全部数据进行异步的增量备份到另外的磁盘中。
#gluster volume geo-replication dht_vol192.168.2.104:/mnt/sdb1 start
//如上,开始执行将dht_vol卷的所有内容备份到2.104下的/mnt/sdb1中的task,需要注意的是,这个备份目标不能是系统中的Brick
1.5 I/O信息查看
Profile Command 提供接口查看一个卷中的每一个 brick IO 信息。
#gluster volume profile VOLNAME start
//启动profiling,之后则可以进行IO信息查看

#gluster volume profile VOLNAME info
//查看IO信息,可以查看到每一个BrickIO信息

# gluster volume profile VOLNAME stop
//查看结束之后关闭profiling功能
1.6 Top监控
Top command 允许你查看bricks 的性能例如:read, write, file opencalls, file read calls, file write calls, directory open calls, and directoryreal calls
所有的查看都可以设置top 数,默认100

# gluster volume top VOLNAME open [brickBRICK-NAME] [list-cnt cnt]
//查看打开的fd

#gluster volume top VOLNAME read [brick BRICK-NAME][list-cnt cnt]
//查看调用次数最多的读调用

#gluster volume top VOLNAME write [brick BRICK-NAME][list-cnt cnt]
//查看调用次数最多的写调用

# gluster volume top VOLNAME opendir [brickBRICK-NAME] [list-cnt cnt]
# gluster volume top VOLNAME readdir [brickBRICK-NAME] [list-cnt cnt]
//查看次数最多的目录调用

# gluster volume top VOLNAME read-perf [bsblk-size count count] [brick BRICK-NAME] [list-cnt cnt]
//查看每个Brick的读性能

# gluster volume top VOLNAME write-perf [bsblk-size count count] [brick BRICK-NAME] [list-cnt cnt]
//查看每个Brick的写性能




gluster 性能优化、报错解决:
peer 节点从一个集群,加入到另外一个集群的时候,节点不能启动 glusterd 报错解决方法:

[root@server114 glusterfs]# vi/usr/local/glusterfs/etc/glusterfs/glusterd.vol
volume management
    typemgmt/glusterd
    option working-directory /var/lib/glusterd
    optiontransport-type socket,rdma
    optiontransport.socket.keepalive-time 10
    optiontransport.socket.keepalive-interval 2
    optiontransport.socket.read-fail-log off
#   optionbase-port 49152

/var/lib/glusterd  里面有记录信息,删除下面的所有信息,清空历史记录配置文件,服务即可启动



性能调优示例:
gluster volume start file-backup
gluster volume quota file-backup enable
gluster volume quota file-backup limit-usage /800TB
gluster volume set file-backup auth.allow192.168.10.31,192.168.12.27
gluster volume set file-backupperformance.cache-size 4GB
gluster volume set file-backupperformance.flush-behind on
gluster volume info file-backup

  





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-670395-1-1.html 上篇帖子: openstack运维实战系列(九)之cinder与glusterfs结合 下篇帖子: GlusterFS客户端进程分析
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表