Gluster升级遇到的问题
2016-12-21 15:16
218 查看
一、问题重现
我们已有9台部署有glusterfs3.7.2的服务器(
qserver0,
qserver1, …
qserver8),现在想新加入3台服务器(
qserver9,
qserver0,
qserver11)。11台机器的ip分别是:
192.168.0.130,
192.168.0.131, …,
192.168.0.141。我们一直都通过以下方式来安装
glusterfs:
step1:将以下内容新建到文件
/etc/yum.repos.d/glusterfs-epel.repo中
Place this file in your /etc/yum.repos.d/ directory
[glusterfs-epel]
name=GlusterFS is a clustered file-system capable of scaling to several petabytes.
baseurl=http://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/EPEL.repo/epel-releasever/basearch/
enabled=1
skip_if_unavailable=1
gpgcheck=1
gpgkey=http://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/rsa.pub
[glusterfs-noarch-epel]
name=GlusterFS is a clustered file-system capable of scaling to several petabytes.
baseurl=http://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/EPEL.repo/epel-$releasever/noarch
enabled=1
skip_if_unavailable=1
gpgcheck=1
gpgkey=http://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/rsa.pub
[glusterfs-source-epel]
name=GlusterFS is a clustered file-system capable of scaling to several petabytes. - Source
baseurl=http://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/EPEL.repo/epel-$releasever/SRPMS
enabled=0
skip_if_unavailable=1
gpgcheck=1
gpgkey=http://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/rsa.pub
step2:用以下命令安装
glusterfs
sudo yum install glusterfs-server
但此时的
LATEST版本已经是
glusterfs3.7.18了。
为保持一致性,我们直接将旧的9台机器update到gluster3.7.18。然后再从qserver8中添加qserver11节点:
sudo gluster peer probe 192.168.0.141
此时查看peer状态
sudo gluster peer status
qserver8机器上如下:
qserver11机器上如下:
[当时没有截图,汗。。。]也是State: Peer Rejected (Connected)的状态
二、问题探索
发现1:
通过对比qserver0~
qserver8和
qserver11中的
/var/lib/glusterfs中的内容,我们发现
qserver0~
qserer8中的
/var/lib/glusterfs/vols/{vol_name}/cksum的值都相同,但
qserver11中的
cksum值和他们不同。
怀疑1:
cksum的不同是问题的根源,考虑手动修改
cksum
发现2:
我在qserver11上手动将
cksum修改为和
qserver8一致,再重新启动
glusterd:
sudo systemctl restart glusterd
发现重启服务失败,
/var/log/glusterfs/etc-glusterfs-glusterd.vol.log中记录错误如下:
初步发现此时只能将
/var/lib/glusterfs整个文件夹删除再重新启动
结论1:一旦通过
qserver8将
qserver11porbe之后,
qserver11上的
glusterd就无法重启了。所以不能手动修改
qserver11的
cksum,考虑曲线救国,修改
qserver0~
qserver8上的
cksum
发现3:
先对qserver8进行尝试
修改
qserver8的
cksum和
qserver11上的一致,再重启
qserver8上的
glusterd,发现
qserver8上的
cksum又恢复了原来的值。由此可知,
glusterd在重启时会计算并重写
cksum。
进一步阅读
glusterfs-3.7.18源码,发现
cksum是对
/var/lib/glusterfs/vols/{vol_name}/info的内容进行计算。
对比
qserver8和
qserver11的
/var/lib/glusterfs/vols/{vol_name}/info内容,发现
qserver11中缺少一行
quota-version=0
怀疑2:
glusterfs-3.7.2的
info内容会存在
quota-version=0,但
glusterfs-3.7.18的
info内容并不会存在
quota-version=0。而
glusterfs在从
3.7.2升级到
3.7.18时,并不会更新已存在的
info的内容,从而导致了这种不一致。
发现4:
将qserver8中的
info中的
quota-version=0全部删去,再重新probe
qserver11。发现
qserver8和
qserver11正常连接:Status: Peer in Cluster(Connected)
qserver8和
qserver0~
qserver7连接异常: State: Peer Rejected (Connected)
结论2:由此我们可以印证,确实是因为
info不一致导致
cksum不一致,再导致rejected(connected)
发现5:
就在我考虑将qserver0~
qserver7也都像
qserver8那样修改时,发现一个问题:
sudo gluster volume status {vol_name}
qserver8上的
volume信息出错了,也就是说
qserver8其实是脱离了
qserver0~
qserver7了。如果将
qserver0~
qserver7也都修改了,虽然
qserver0~
qserver8和
qserver11互相peer in cluster了,但他们原来的volume都异常了
结论3:我们只能再次回归到
qserver11上,看看为什么怀疑1中发现的
qserver11就无法重启了。只要解决了
qserver11重启, 问题也就解决了
发现6:
通过修改glusterfs的日志打印级别至
DEBUG
sudo vim /usr/lib/systemd/system/glusterd.service
对照
/var/log/glusterfs/etc-glusterfs-glusterd.vol.log和
glustetfs-3.7.18的源代码,
log中提示是因为无法找到
qserver2。找到
glusterfs-3.7.18中对应的源码,知道
glusterd在启动的时候,会将
/var/lib/glusterd/vols/{vol_name}/中的
brick信息的
hostname,用
peers来解析。
因为
peers中只有probe失败之后的
qserver8信息,自然无法解析
qserver2
结论4:只要补全
qserver11中
/var/lib/glusterd/peers中的信息即可
三、问题解决
step1:
qserver8:
sudo gluster peer probe 192.168.0.141
step2:
qserver11:
根据
qserver8上的内容将
qserver8上的
/var/lib/glusterd/peers信息补全
step3:
qserver11:
将
/var/lib/glusterd/vols/{vol_name}/info中的
quota-version=0去掉
step4:
qserver11:
sudo systemctl restart glusterd
相关文章推荐
- 从 .net 1.1 升级到 2.0过程中遇到的问题及解决方法
- TortoiseSVN从1.2.6升级到1.3.2过程中遇到的问题
- 升级到MySQL 5.0.17一定遇到的四个问题
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- 升级到MySQL 5.0.17一定遇到的四个问题
- 升级到MySQL 5.0.17一定遇到的四个问题
- 升级到MySQL 5.0.17一定遇到的四个问题
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- 一次升级动易文章过程中遇到的问题
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- 从 CCS 1.1 升级到 CS 2.0 所遇到的问题和部分解决方法
- SQL2000升级到SQL2005遇到的问题
- 升级到ActiveSync 4.5后“可能”遇到的网络连接问题,以及解决方法
- 升级到MySQL 5.0.17一定遇到的四个问题
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- TortoiseSVN从1.2.6升级到1.3.2过程中遇到的问题
- 升级Portal5.1.0.1到5.1.0.4的时候遇到一点小问题
- 1楼 升级到MySQL 5.0.17一定遇到的四个问题
- Discuz论坛2.5 升级到PHP MySQL新版遇到的问题
- 升级到MySQL 5.0.17一定遇到的四个问题