glusterfs——peer节点管理

1. 相关命令

添加peer:  gluster peer probe Host (Host为peer的主机名)

删除peer:  gluster peer detach Host

查看peer状态:  gluster peer status

2. 大概流程

添加删除节点大概流程简单来说就是:gluster向glusterd建立tcp连接,并发送rpc请求;glusterd收到请求后,与远端节点的glusterd通信执行具体的动作;最后回复gluster最终处理结果。

再细一点(以添加peer节点为例):本地glusterd与远端glusterd之间的通信,双方均会向对方建立TCP连接,完成握手工作,发送添加节点请求,并最终更新节点信息。

glusterfs——peer节点管理_第1张图片

注:实际上,远端glusterd在收到probe_query的rpc请求后便向本地glusterd建立tcp连接,然后执行后续的动作,因此双方的请求交互流程是穿插进行的,上图仅为了方便理解。

进一步深入:在glusterd之间的交互过程中,glusterd会记录peer节点的相关状态,在收到rpc请求的回复或者对端的rpc请求时,根据peer的当前状态在状态数组中找到对应的事件处理数组,然后根据具体的事件进行相应处理,直到交互完成(glusterd中有一事件链表,收到rpc请求的回复或者对端的rpc请求时可能会往事件列表中添加不同的事件,然后从列表中取出事件进行相应处理,事件的处理过程中也可能会往事件链表中添加新的事件,即触发新的动作)。

glusterfs——peer节点管理_第2张图片

再以添加peer节点为例,内部的关键函数调用流程如下图所示:

glusterfs——peer节点管理_第3张图片

在收到rpc请求回复后调用对应的*_cbk函数,这些函数往事件链表中添加不同的事件,然后调用glusterd_friend_sm函数循环从事件链表中取出事件并进行处理。

事件链表的大概情况为:

glusterfs——peer节点管理_第4张图片

3. 相关日志信息记录

在交互过程中,peer节点的中间状态以及最终状态,glusterd都会在文件中记录。

文件存储的默认路径为 /var/lib/glusterfsd/peers/

在未获取到peer节点的uuid是,文件名为peer节点的主机名,也就是命令"peer probe"指定的主机名,当得知对端节点的uuid后,以uuid的内容作为文件名。

文件中记录了对端节点的uuid,主机名以及当前状态state。

glusterfs——peer节点管理_第5张图片

你可能感兴趣的:(glusterfs——peer节点管理)