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

[经验分享] GlusterFS的安装与使用

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-3-11 08:45:41 | 显示全部楼层 |阅读模式
#######################################
#####   网络架构                      #
#######################################
两台服务器 M1 M2
M1 为GlusterFS 主服务器,ip为192.168.1.138
M2 为GlusterFS 热备服务器,ip为192.168.1.139
M1 也是client客户端

(一) IP设置


#######################################
####   服务环境安装                 ###
#######################################
(一) fuse的安装
1 检查fuse是否安装
[iyunv@M1 ~]# modprobe -l | grep fuse #检查是否已经安装了fuse,执行这条命令如果有东西输出则直接跳到第二步,如果没有东西输出则说明fuse没有安装则安装fuse

kernel/fs/fuse/fuse.ko
kernel/fs/fuse/cuse.ko

2 安装fuse
#tar -zxvf fuse-2.7.4glfs11.tar.gz

#cd fuse-2.7.4glfs11
#./configure

#make
#checkinstall

(二) 安装glusterFS(M1,M2上执行相同的操作)
[iyunv@M1 ~]# cd /data/software/
[iyunv@M1 software]# tar -zxvf glusterfs-3.4.0.tar.gz
[iyunv@M1 glusterfs-3.4.0]# cd glusterfs-3.4.0
[iyunv@M1 glusterfs-3.4.0]# ./configure --prefix=/data/apps/glusterfs
# 如果出现下面错误
checking for flex... no
checking for lex... no
configure: error: Flex or lex required to build glusterfs.
解决方法 [iyunv@M1 glusterfs-3.4.0]# yum -y install flex
# 如果出现下面错误
configure: error: GNU Bison required to build glusterfs.
解决方法 [iyunv@M1 glusterfs-3.4.0]# yum -y install bison
[iyunv@M1 glusterfs-3.4.0]# make
[iyunv@M1 glusterfs-3.4.0]# make install

# 检验安装是否成功
[iyunv@M1 glusterfs-3.4.0]# ldconfig
[iyunv@M1 glusterfs-3.4.0]# /home/data/apps/glusterfs/sbin/glusterfs --version # 输出版本信息,则说明安装成功

################################################
####    glusterfs 环境配置与客户端挂载           #
################################################
一 glusterfs 启动
[iyunv@M1 glusterfs-3.4.0]# service glusterd start (M1,M2上都执行相同的操作)

二 添加防火墙规则   (M1,M2都做相同的操作,注意防火墙规则顺序) 注:防火墙部分等下再做测试
[iyunv@M1 glusterfs-3.4.0]# iptables -I INPUT -p tcp --dport 24007 -j ACCEPT

[iyunv@M1 glusterfs-3.4.0]# service iptables save

三 添加节点
[iyunv@M1 glusterfs-3.4.0]# /data/apps/glusterfs/sbin/gluster peer probe 192.168.1.139 (只要在在M1上)

四 创建副本卷
[iyunv@M1 ~]# mkdir /data/share  (M1,M2上创建的存储数据的文件夹)
[iyunv@M2 ~]# mkdir /data/share

[iyunv@M1 ~]# chown -R www:www /data/share
[iyunv@M2 ~]# chown -R www:www /data/share

[iyunv@M1 ~]# /data/apps/glusterfs/sbin/gluster volume create bbs_img replica 2 192.168.1.{138,139}:/data/share
volume create: bbs_img: success: please start the volume to access data  # 创建名称为bbs_img的副本卷用于挂载,分别存储在192.168.1.138,192.168.1.139的/data/share的文件夹中

[iyunv@M2 ~]# /data/apps/glusterfs/sbin/gluster volume start bbs_img
volume start: bbs_img: success (启动副本卷可以在M1或者M2上执行)

五 挂载
在M1上创建挂载点
[iyunv@M1 ~]# mkdir /data/wwwroot/web/share
[iyunv@M1 ~]# chown -R www:www /data/wwwroot/web/share
[iyunv@M1 glusterfs]# mount.glusterfs 192.168.1.138:/bbs_img /data/wwwroot/web/share  # 这里客户端可以挂载任意ip地址,可以是192.168.1.139,所得到的数据都是一样的

# 我们切换到www用户创建文件
[iyunv@M1 glusterfs]# su -l www
[www@M1 share]$ echo "111111111111111" > 1.txt
[www@M1 share]$ echo "222222222222222" > 2.txt
# 注意我们不要在服务器上添加内容,这样会导致内容紊乱,应该直接在挂载点添加内容
# 此时在m1和m2上都创建了文件说明挂载已经成功了
[www@M1 share]$ ll /data/share/  # 每次卸载挂载这个文件夹的所有者都会切换成root,应该注意这点
total 16
-rw-rw-r-- 2 www www 16 Mar  9 01:50 1.txt
-rw-rw-r-- 2 www www 16 Mar  9 01:50 2.txt
[iyunv@M2 ~]# ll /data/share/
total 16
-rw-rw-r-- 2 www www 16 Mar  9 01:50 1.txt
-rw-rw-r-- 2 www www 16 Mar  9 01:50 2.txt


################################################
##     glusterfs管理                               #
################################################

一 节点管理
1 查看节点状态
[iyunv@M1 glusterfs]# /data/apps/glusterfs/sbin/gluster peer status
Number of Peers: 1

Hostname: 192.168.1.139
Uuid: cd25b695-6266-4720-8f42-ffb34179b4fb
State: Peer in Cluster (Connected)
2 移除节点  # 现在我们在M1上把M2移除掉
[iyunv@M1 glusterfs]# /data/apps/glusterfs/sbin/gluster peer detach 192.168.1.139
peer detach: failed: Brick(s) with the peer 192.168.1.139 exist in cluster
# 默认情况下节点是移除不了的,我们可以强制移除(不建议强制移除节点)

[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster peer detach 192.168.1.139 force  # 强制移除节点(不建议)
peer detach: success
[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster peer status # 再次查看状态
peer status: No peers present


3 添加节点
[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster peer probe 192.168.1.139

二 卷管理
1 创建卷(这里我只介绍副本卷)
[iyunv@M1 ~]# /data/apps/glusterfs/sbin/gluster volume create bbs_img replica 2 192.168.1.{138,139}:/data/share

2 查看卷信息
[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster volume info

3 查看卷状态
[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster volume status

4 启动/停止卷
//data/apps/glusterfs/sbin/gluster volume start/stop volumename
// 客户端挂载卷之前要先启动,在卷停止之前要先把客户端的挂载卸载
[iyunv@M1 share]# umount /home/data/wwwroot/web/share
[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster volume stop bbs_img


三 Brick管理
1 添加Brick
若是副本卷,则一次添加的Bricks数是replica的整数倍
# 现在我们为bbs_img添加2个Brick(前面我们的Brick数为2)
[iyunv@M1 share]# mkdir /data/share2
[iyunv@M1 share]# chown www:www /data/share2
[iyunv@M2 share]# mkdir /data/share2
[iyunv@M2 share]# chown www:www /data/share2
[iyunv@localhost mnt]# /data/apps/glusterfs/sbin/gluster volume add-brick bbs_img 192.168.1.{138,139}:/data/share2
volume add-brick: success   # 这样就达到了扩容的作用

[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster volume info

Volume Name: bbs_img
Type: Distributed-Replicate
Volume ID: cacb4587-c9b4-4d38-84d1-99dbe2c28477
Status: Started
Number of Bricks: 2 x 2 = 4
Transport-type: tcp
Bricks:
Brick1: 192.168.1.138:/data/share
Brick2: 192.168.1.139:/data/share
Brick3: 192.168.1.138:/data/share2
Brick4: 192.168.1.139:/data/share2
# 扩容时,可以先增加系统节点,然后添加新增节点上的Brick即可。

2 移除Brick
若是副本卷,则移除的Bricks数是replica的整数倍。
# 现在我们移除刚刚添加的两个Brick
[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster volume remove-brick bbs_img 192.168.1.{138,139}:/data/share2 start

# 在执行开始移除之后,可以使用status命令进行移除状态查看。
[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster volume remove-brick bbs_img 192.168.1.{138,139}:/data/share2 status

# 使用commit命令执行Brick移除,则不会进行数据迁移而直接删除Brick,符合不需要数据迁移的用户需求。
[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster volume remove-brick bbs_img 192.168.1.{138,139}:/data/share2 commit

3 替换Brick
我们把 192.168.1.139:/data/share 替换为 192.168.1.138:/data/share2
[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster volume replace-brick bbs_img 192.168.1.139:/data/share 192.168.1.138:/data/share2 start
如果发生这个错组 volume replace-brick: failed: /data/share2 or a prefix of it is already part of a volume 说明 /data/share2 曾经是一个Brick。具体解决方法
[iyunv@M1 share]# rm -rf /data/share2/.glusterfs
[iyunv@M1 share]# setfattr -x  trusted.glusterfs.volume-id /data/share2
[iyunv@M1 share]# setfattr -x trusted.gfid /data/share2
//如上,执行replcace-brick卷替换启动命令,使用start启动命令后,开始将原始Brick的数据迁移到即将需要替换的Brick上。

# 查看是否替换完
[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster volume replace-brick bbs_img 192.168.1.139:/data/share 192.168.1.138:/data/share2 status

# 在数据迁移的过程中,可以执行abort命令终止Brick替换。
[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster volume replace-brick bbs_img 192.168.1.139:/data/share 192.168.1.138:/data/share2 abort

# 在数据迁移结束之后,执行commit命令结束任务,则进行Brick替换。使用volume info命令可以查看到Brick已经被替换。

[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster volume replace-brick bbs_img 192.168.1.139:/data/share 192.168.1.138:/data/share2 commit

# 此时我们再往 /data/wwwroot/web/share 上添加数据的话,数据会同步到 192.168.1.138:/data/share 和 192.168.1.138:/data/share2 上。而不会同步到192.168.1.139:/data/share 上。

下面替换回来
这里我们在M2上执行
[iyunv@M2 ~]# rm -rf /data/share/.glusterfs
[iyunv@M2 share]# setfattr -x  trusted.glusterfs.volume-id /data/share
[iyunv@M2 share]# setfattr -x trusted.gfid /data/share

[iyunv@M2 data]# /data/apps/glusterfs/sbin/gluster volume replace-brick bbs_img 192.168.1.138:/data/share2 192.168.1.139:/data/share start
[iyunv@M2 data]# /data/apps/glusterfs/sbin/gluster volume replace-brick bbs_img 192.168.1.138:/data/share2 192.168.1.139:/data/share status
[iyunv@M2 data]# /data/apps/glusterfs/sbin/gluster volume replace-brick bbs_img 192.168.1.138:/data/share2 192.168.1.139:/data/share commit

[iyunv@M2 data]# chown www:www /data/share
[iyunv@M1 share]# chown www:www /data/share (有可能要更改)
此时再在服务器上创建文件,则又同步到 192.168.1.139:/data/share上面了

###################################
####    数据复制                 ##
###################################

一数据复制
我们同步一份数据到
192.168.1.138 /data/share3上
[iyunv@M1 share]# mkdir /data/share3
[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster volume geo-replication bbs_img /data/share3 start
Starting geo-replication session between bbs_img & /data/share3 has been successful
[iyunv@M1 share]# ll /data/share3
total 28
-rw-rw-r-- 1 www www 16 Mar  9 01:50 1.txt
-rw-rw-r-- 1 www www 16 Mar  9 01:50 2.txt
..........................................
-rw-rw-r-- 1 www www 17 Mar  9 04:05 7.txt

[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster volume geo-replication bbs_img /data/share3 status  # 查看同步状态
NODE                 MASTER               SLAVE                                              STATUS   
---------------------------------------------------------------------------------------------------
M1                   bbs_img              /data/share3
                                      OK   
[iyunv@M1 share]# /data/apps/glusterfs/sbin/gluster volume geo-replication bbs_img /data/share3 stop   # 停止同步,如果同步不停止则会一直增量同步
Stopping geo-replication session between bbs_img & /data/share3 has been successful

#####################################################
#          故障处理                                    #
#####################################################

一 挂载服务器故障:
我们使用的是 mount.glusterfs 192.168.1.138:/bbs_img /data/wwwroot/web/share  这种方式进行挂载。如果192.168.1.138(M1) 网络故障怎么办?
1 手动切换
步骤:
umount  /data/wwwroot/web/share
mount.glusterfs 192.168.1.139:/bbs_img /data/wwwroot/web/share # 重新挂载到192.168.1.139(M2)上
2 使用shell脚本每隔10s扫描一遍如果192.168.1.138服务器有问题则重新挂载并退出程序
[iyunv@M2 data]# yum -y install nmap # 安装端口扫描工具
[iyunv@M1 shell]# vim gfs_keepalive.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash
# nmap 192.168.1.138 的 24007端口判断端口是否已经开启
flag=0
while [ "$flag" == "0" ]
do
hostup=$( /usr/bin/nmap -p 24007 192.168.1.138 | grep 'Host is up' )
portup=$( /usr/bin/nmap -p 24007 192.168.1.138 | grep 'tcp open' )
if [ "$hostup" == "" ] || [ "$portup" == "" ];then
# 先卸载服务在重新挂载到另一台服务器
/bin/umount /data/wwwroot/web/share
/sbin/mount.glusterfs 192.168.1.139:/bbs_img /data/wwwroot/web/share
flag=1
fi
/bin/sleep 10
done



二 数据紊乱问题
# 比如192.168.1.139:/data/share上数据紊乱。但客户端数据没紊乱,这时192.168.1.139:/data/share会自动同步客户端的数据

三 数据恢复
如果客户端误删数据
1 备份客户端数据
2 可以采用每天的备份直接替换掉客户端的数据

运维网声明 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-45494-1-1.html 上篇帖子: 在linux(CentOS)下无法挂载glusterfs原因及解决方法 下篇帖子: GlusterFS 正式推出,支持 OpenStack
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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