- 论坛徽章:
- 0
|
本帖最后由 ruying 于 2014-03-26 10:57 编辑
鱼大及各位。
我当前同时启动了两个tracker,分别是192.168.118.3和 118.4 ,他们各自服务器上也负担着storaged节点的工作。
我在启动tracker服务器的时候在两个trackerd.log上都看到了如下内容:
第一个tracker中开始显示错误,然后提示它服从另一个IP为leader节点- [2014-03-26 01:00:02] ERROR - file: tracker_proto.c, line: 37, server: 192.168.118.4:22122, recv data fail, errno: 107, error info: Transport endpoint is not connected
- [2014-03-26 01:00:03] ERROR - file: tracker_proto.c, line: 48, server: 192.168.118.4:22122, response status 95 != 0
- [2014-03-26 01:00:04] ERROR - file: tracker_proto.c, line: 48, server: 192.168.118.4:22122, response status 95 != 0
- [2014-03-26 01:00:05] INFO - file: tracker_relationship.c, line: 383, selecting leader...
- [2014-03-26 01:00:08] INFO - file: tracker_service.c, line: 955, the tracker leader is 192.168.118.4:22122
复制代码 第二个tracker的日志中显示他成为leader节点;- [2014-03-26 01:00:02] ERROR - file: tracker_service.c, line: 1575, cmd=65, client ip: 192.168.118.3, i am not the leader!
- [2014-03-26 01:00:03] ERROR - file: tracker_service.c, line: 1575, cmd=65, client ip: 192.168.118.3, i am not the leader!
- [2014-03-26 01:00:08] INFO - file: tracker_relationship.c, line: 383, selecting leader...
- [2014-03-26 01:00:08] INFO - file: tracker_relationship.c, line: 401, I am the new tracker leader 192.168.118.4:22122
复制代码 通过fdfs_monitor看到的结果,确实活动的tracker节点为192.168.118.4 ,屏显细节就不贴了。
我把老的leader节点关掉,则192.168.118.3顺利成为新的leader节点,哪怕192.168.118.4重新启动了tracker,也不会发生角色迁移。
原先我一直以为tracker节点就像DNS一样是一个很轻量级、很简单的构造,我认为他的所有信息都是来自storaged节点的主动推送,但今天看到leader角色选举,我觉得不是那么回事。
首先,我用搜索功能,搜索了诸如“FastDFS tracker 角色”“ i am not the leader!”这类关键字,但没搜到的任何有用信息;我又仔细看了很久的trackerd.conf ,也没看到有类似选举权重一类的设置。烦请各位高手给我介绍一下FastDFS 角色选举的问题行吗?
在我的认知范围里,如果有角色选举,则必然要考虑如下因素:
1,选举角色如何相互发现对方的?我没看到tracker.conf中有对其他角色的任何描述。请问两个角色相互发现,是靠发局域网广播,还是storage节点的主动推送信息?
2,选举角色的权重值怎么定义的?以上文为例,说为什么选192.168.118.4为leader节点?
3,备用节点的意义何在?我看来,所有的信息都是storage节点自己储存,并主动推送给tracker的,备用节点的数据是来自storage还是 tracker——leader?
4,如果集群中默认只有192.168.118.3一个tracker,则所有客户端都配置了118.3到自己的配置文件中,现在我新增了一个118.4的节点,且选举为leader节点了,当那些老客户端继续连接118.3的时候,备用节点会怎么做?
4-1,会处理客户的任何读写请求,并将结果反馈给leader节点,这个时候leader节点最大的作用是将这个变更扩散到其他的备用节点。
4-2,会处理客户的读请求,也就是说所有更改都必须在leader节点上进行,并由leader节点同步给各个备用节点。
4-3,备用节点就是名副其实的备用节点,不接收任何读写请求。
5,还是类似第四个问题,但我现在关注的是客户端,就是说客户端配置了配了192.168.118.3和118.4两个tracker,平时一直在连接118.4,突然118.4死掉了,客户怎么知道自己应该去向118.3重连?
6,当老的tracker leader节点死亡以后,在新的leader选举出来之前,是不是无法接收客户响应请求了?
7,我本来想在完成FDFS配置后,把tracker设置为监听所有端口请求,但客户端去连一个VIP,现在后端leader server 总是变,我没办法设置VIP,请问大家有什么好方法?
烦请鱼大和各位大神抽空给我介绍一下leader协商机制好吗?如果有现成的文档,仅仅是我自己没搜到答案,烦请各位朋友给我贴一下连接地址,我确实没搜到资料。
我并不懂开发,以上我的疑问,我自己都能组织测试测出来结果,但并非是我懒不愿意测试,而是觉得这种设计理念性的东西,懂行的人一字万金,比我瞎揣摩要精确的多。 |
|