双master双volume下的容灾

241 views
Skip to first unread message

Saxon Yan

unread,
May 9, 2016, 9:26:20 PM5/9/16
to Seaweed File System
我在同台机器上,按照一下命令启动
su -l seaweedfs -c "/opt/app/seaweedfs/weed -v=3 master -port=9333 -ip=192.168.1.108 -mdir=/opt/seaweedfs/m1 -peers=192.168.1.108:9333,192.168.1.108:9334 -defaultReplication=100 > /opt/log/seaweedfs_m1.log 2>&1 &" -s /bin/bash
su -l seaweedfs -c "/opt/app/seaweedfs/weed -v=3 master -port=9334 -ip=192.168.1.108 -mdir=/opt/seaweedfs/m2 -peers=192.168.1.108:9333,192.168.1.108:9334 -defaultReplication=100 > /opt/log/seaweedfs_m2.log 2>&1 &" -s /bin/bash
su -l seaweedfs -c "/opt/app/seaweedfs/weed -v=3 volume -port=8081 -ip=192.168.1.108 -dir=/opt/seaweedfs/v1 -mserver=192.168.1.108:9333 -dataCenter=dc1 > /opt/log/seaweedfs_v1.log 2>&1 &" -s /bin/bash
su -l seaweedfs -c "/opt/app/seaweedfs/weed -v=3 volume -port=8082 -ip=192.168.1.108 -dir=/opt/seaweedfs/v2 -mserver=192.168.1.108:9333 -dataCenter=dc2 > /opt/log/seaweedfs_v2.log 2>&1 &" -s /bin/bash

然后我杀掉9333端口的这个进程
观察log,有如下几个现象
1、9334的log报了几次如下的log,持续大概半分钟
http: proxy error: dial tcp 192.168.1.108:9333: getsockopt: connection refused
没有选举自己为leader
2、8081和8082的log一直报
I0510 09:25:11 31460 list_masters.go:18] list masters result :
I0510 09:25:11 31460 list_masters.go:18] list masters result :{"Peers":["192.168.1.108:9333"]}
I0510 09:25:11 31460 store.go:65] current master nodes is nodes:[192.168.1.108:9333 192.168.1.108:9334], lastNode:0
I0510 09:25:11 31460 store.go:48] Reset master 192.168.1.108:9333 from: [192.168.1.108:9333 192.168.1.108:9334]
I0510 09:25:11 31460 volume_server.go:88] Volume Server Failed to talk with master 192.168.1.108:9333: Post to http://192.168.1.108:9333/dir/join: Post http://192.168.1.108:9333/dir/join: dial tcp 192.168.1.108:9333: getsockopt: connection refused
I0510 09:25:12 31460 list_masters.go:18] list masters result :
I0510 09:25:12 31460 list_masters.go:18] list masters result :{"Peers":["192.168.1.108:9333"]}
I0510 09:25:12 31460 store.go:65] current master nodes is nodes:[192.168.1.108:9333 192.168.1.108:9334], lastNode:1
I0510 09:25:12 31460 store.go:327] Failed to join http://192.168.1.108:9334/dir/join with response:
I0510 09:25:12 31460 store.go:48] Reset master 192.168.1.108:9334 from: [192.168.1.108:9333 192.168.1.108:9334]
I0510 09:25:12 31460 volume_server.go:88] Volume Server Failed to talk with master 192.168.1.108:9333: unexpected end of JSON input


所以想了解下,如何解决这个master的leader的问题,以及volume的更换mserver的问题

Saxon Yan

unread,
May 9, 2016, 9:32:27 PM5/9/16
to Seaweed File System
补充一下,我重新启动

su -l seaweedfs -c "/opt/app/seaweedfs/weed -v=3 master -port=9333 -ip=192.168.1.108 -mdir=/opt/seaweedfs/m1 -peers=192.168.1.108:9333,192.168.1.108:9334 -defaultReplication=100 > /opt/log/seaweedfs_m1.log 2>&1 &" -s /bin/bash
看到9334选举为leader
两个volume虽然指定mserver为9333,log显示:Volume Server Connected with master at 192.168.1.108:9333,但也注册到9334上了,因为9334的log里显示
I0510 09:28:57 29098 master_server.go:89] [ 192.168.1.108:9334 ] 192.168.1.108:9334 becomes leader.
I0510 09:29:00 29098 node.go:208] topo adds child dc1
I0510 09:29:00 29098 node.go:208] topo:dc1 adds child DefaultRack
I0510 09:29:00 29098 node.go:208] topo:dc1:DefaultRack adds child 192.168.1.108:8081
I0510 09:29:00 29098 node.go:208] topo adds child dc2
I0510 09:29:00 29098 node.go:208] topo:dc2 adds child DefaultRack
I0510 09:29:00 29098 node.go:208] topo:dc2:DefaultRack adds child 192.168.1.108:8082


在 2016年5月10日星期二 UTC+8上午9:26:20,Saxon Yan写道:

Chris Lu

unread,
May 10, 2016, 12:58:57 AM5/10/16
to Seaweed File System
Need 3 masters, or 5, or 7...
--
You received this message because you are subscribed to the Google Groups "Seaweed File System" group.
To unsubscribe from this group and stop receiving emails from it, send an email to seaweedfs+...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Saxon Yan

unread,
May 10, 2016, 1:06:12 AM5/10/16
to Seaweed File System
这个3、5、7是指存活的吗?

在 2016年5月10日星期二 UTC+8下午12:58:57,ChrisLu写道:

Chris Lu

unread,
May 10, 2016, 1:32:36 AM5/10/16
to Seaweed File System
平时需要有3个master, 这样可以有一个down掉。

Saxon Yan

unread,
May 10, 2016, 8:21:51 AM5/10/16
to Seaweed File System
恩,实验了下,一开始起来3个,然后down掉一个后,能正常选举

现在碰到另外一个问题
我起了三个master,分别是9333、9334、9335,9334被选举为leader
我写入的时候,是随机选择一个master写入,写入9334一直报{"error":"Post http://192.168.1.108/dir/assign: dial tcp 192.168.1.108:80: getsockopt: connection refused"}
然后我重启9334,发现9334说自己是I am the leader!,而9335里也有becomes leader.
然后我继续写入,发现现在轮到9335一直报{"error":"Post http://192.168.1.108/dir/assign: dial tcp 192.168.1.108:80: getsockopt: connection refused"}

我看了下netstat -nlutp,并没有监听80端口
指点下如何解决哈,我这几天都在弄这个,想用于生产的
我建了个Q群,群号是114117674

在 2016年5月10日星期二 UTC+8下午1:32:36,ChrisLu写道:

Saxon Yan

unread,
May 10, 2016, 8:47:14 AM5/10/16
to Seaweed File System
对了,我写入的地址是http://master/submit,如
http://192.168.1.108:9333/submit
http://192.168.1.108:9334/submit
http://192.168.1.108:9335/submit

在 2016年5月10日星期二 UTC+8下午8:21:51,Saxon Yan写道:

Saxon Yan

unread,
May 10, 2016, 9:03:06 AM5/10/16
to Seaweed File System
测试到现在,总结下
三个master,通过php的curl,往leader里写入,一直都报{"error":"Post http://192.168.1.108/dir/assign: dial tcp 192.168.1.108:80: getsockopt: connection refused"},往其他两个master里写入没有问题
然后通过linux的curl命令curl -F file=@./hello.txt http://master/submit,无论往哪个master写入,都没有问题


在 2016年5月10日星期二 UTC+8下午8:47:14,Saxon Yan写道:

Chris Lu

unread,
May 10, 2016, 9:46:25 AM5/10/16
to Seaweed File System
192.168.1.108 在哪里设的?怎么会dial up 80端口?

Saxon Yan

unread,
May 10, 2016, 8:57:37 PM5/10/16
to Seaweed File System
我启动的命令就是5个
su -l seaweedfs -c "/opt/app/seaweedfs/weed -v=3 master -port=9333 -ip=192.168.1.108 -mdir=/opt/seaweedfs/m1 -peers=192.168.1.108:9333,192.168.1.108:9334,192.168.1.108:9335 -defaultReplication=100 > /opt/log/seaweedfs_m1.log 2>&1 &" -s /bin/bash
su -l seaweedfs -c "/opt/app/seaweedfs/weed -v=3 master -port=9334 -ip=192.168.1.108 -mdir=/opt/seaweedfs/m2 -peers=192.168.1.108:9333,192.168.1.108:9334,192.168.1.108:9335 -defaultReplication=100 > /opt/log/seaweedfs_m2.log 2>&1 &" -s /bin/bash
su -l seaweedfs -c "/opt/app/seaweedfs/weed -v=3 master -port=9335 -ip=192.168.1.108 -mdir=/opt/seaweedfs/m3 -peers=192.168.1.108:9333,192.168.1.108:9334,192.168.1.108:9335 -defaultReplication=100 > /opt/log/seaweedfs_m3.log 2>&1 &" -s /bin/bash

su -l seaweedfs -c "/opt/app/seaweedfs/weed -v=3 volume -port=8081 -ip=192.168.1.108 -dir=/opt/seaweedfs/v1 -mserver=192.168.1.108:9333 -dataCenter=dc1 > /opt/log/seaweedfs_v1.log 2>&1 &" -s /bin/bash
su -l seaweedfs -c "/opt/app/seaweedfs/weed -v=3 volume -port=8082 -ip=192.168.1.108 -dir=/opt/seaweedfs/v2 -mserver=192.168.1.108:9333 -dataCenter=dc2 > /opt/log/seaweedfs_v2.log 2>&1 &" -s /bin/bash
帮忙看下哪里用错了吗

我后来不断实验,发现开始几次的时候,三个master都是能成功写入,过一会儿,往leader里写入就一直报这个错误了

您有什么在线联系工具吗,这里效率太低了。。。

在 2016年5月10日星期二 UTC+8下午9:46:25,ChrisLu写道:

Chris Lu

unread,
May 10, 2016, 9:02:36 PM5/10/16
to Seaweed File System
看看你的php是怎么写的

Saxon Yan

unread,
May 10, 2016, 9:42:24 PM5/10/16
to Seaweed File System
有实时聊天工具吗

在 2016年5月11日星期三 UTC+8上午9:02:36,ChrisLu写道:

Saxon Yan

unread,
May 19, 2016, 8:16:32 AM5/19/16
to Seaweed File System
 /tmp下面有大量的weed.xxx.seaweedfs.log.INFO这类文件,可以删除吗

在 2016年5月11日星期三 UTC+8上午9:42:24,Saxon Yan写道:

Chris Lu

unread,
May 19, 2016, 12:47:07 PM5/19/16
to Seaweed File System
可以的

Saxon Yan

unread,
May 19, 2016, 10:02:55 PM5/19/16
to Seaweed File System
这个目录能指定吗,我设置的mdir是其他目录的,但tmp下面还是出现大量日志
另外,我上了生产环境,发现坑很大啊
1、今天早上5个master在半个小时内依次全部挂掉,找不到原因,我们的进程检测在0.1秒内发现并重启
2、重启后leader选举慢
3、选举完成后,发现leader存在多个
4、访问每个master的/dir/status?pretty=y,发现有几个master返回是空白
5、访问/dir/assign的时候,返回200,但body是空

以上能否优化下,包括稳定性和故障恢复速度

在 2016年5月20日星期五 UTC+8上午12:47:07,ChrisLu写道:

Chris Lu

unread,
May 19, 2016, 10:30:56 PM5/19/16
to Seaweed File System
做好测试。先用单个master测试。

Master不应该是使用瓶颈。需要做好volume id 的caching. 读的时候少访问master.

Chris

Saxon Yan

unread,
May 19, 2016, 11:26:07 PM5/19/16
to Seaweed File System
我现在是这样的
1、部署5个master和6个volume
2、写入的时候,如果已经有fid和url,直接往对应的volume写
3、如果没有fid,则随机选择一个master,访问dir/assign,获取fid和url,然后直接写入url/fid
4、访问的时候,直接访问url/fid

所以master只用于分配fid和url,读写都是volume

你看这样会不会有问题


在 2016年5月20日星期五 UTC+8上午10:30:56,ChrisLu写道:

Chris Lu

unread,
May 20, 2016, 1:19:37 AM5/20/16
to Seaweed File System
6个volume的话,用一个master就可以了。
Reply all
Reply to author
Forward
0 new messages