免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 11440 | 回复: 7
打印 上一主题 下一主题

[FastDFS] 关于多个tracker的负载均衡问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-25 10:25 |只看该作者 |倒序浏览
1、假如使用fastdfs的客户很多,超出单个tracker的能力(10K),我使用多个tracker,前面是否能有lvs做负载均衡?
2、TrackerGroup tg = new TrackerGroup(new InetSocketAddress[]{new InetSocketAddress("192.168.41.51", 22122),new InetSocketAddress("192.168.41.42", 22122)});
                TrackerClient tc = new TrackerClient(tg);
                TrackerServer ts = tc.getConnection();
这段代码能否根据负载均衡访问一个负载较轻的tracker?不能的话怎么办?
3、http下载通过Tracker Server自带的Web Serverr跳转方式,怎样才能返回给用户一个url使用户使用改url下载时能访问负载较轻的tracker,然后跳转到storage?

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
2 [报告]
发表于 2011-03-25 11:12 |只看该作者
回复 1# chenfeng111

1、假如使用fastdfs的客户很多,超出单个tracker的能力(10K),我使用多个tracker,前面是否能有lvs做负载均衡?

个人认为没必要走LVS。
当然LZ可以尝试一下。

2、TrackerGroup tg = new TrackerGroup(new InetSocketAddress[]{new InetSocketAddress("192.168.41.51", 22122),new InetSocketAddress("192.168.41.42", 22122)});
                TrackerClient tc = new TrackerClient(tg);
                TrackerServer ts = tc.getConnection();
这段代码能否根据负载均衡访问一个负载较轻的tracker?不能的话怎么办?

不会。目前仅实现了简单的轮询机制。

3、http下载通过Tracker Server自带的Web Serverr跳转方式,怎样才能返回给用户一个url使用户使用改url下载时能访问负载较轻的tracker,然后跳转到storage?

最简单是轮询方式。通常采用这种方式就够用了。
如果LZ要根据负载来均衡,那自己想办法实现吧。

论坛徽章:
0
3 [报告]
发表于 2011-03-25 11:30 |只看该作者
2、TrackerGroup tg = new TrackerGroup(new InetSocketAddress[]{new InetSocketAddress("192.168.41.51", 22122),new InetSocketAddress("192.168.41.42", 22122)});
                TrackerClient tc = new TrackerClient(tg);
                TrackerServer ts = tc.getConnection();

ts是前面设置的多个Tracker中第一个能连通的链接吗?

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
4 [报告]
发表于 2011-03-25 11:37 |只看该作者
回复 3# chenfeng111

TrackerGroup tg = new TrackerGroup(new InetSocketAddress[]{new InetSocketAddress("192.168.41.51", 22122),new InetSocketAddress("192.168.41.42", 22122)});

出于性能考虑,这行应该初始化一次即可。而不是每次创建。
更多细节,建议看一下代码。

论坛徽章:
0
5 [报告]
发表于 2011-04-06 10:07 |只看该作者
我在两台tracker(192.168.41.51、192.168.41.42)前加了个lvs(192.168.41.222),lvs采用DR方式。

TrackerGroup tg = new TrackerGroup(new InetSocketAddress[]{new InetSocketAddress("192.168.41.222", 22122)});

TrackerClient tc = new TrackerClient(tg);

TrackerServer ts = tc.getConnection();

运行到最后一句时报拒绝连接到222服务器上,如何解决啊?

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
6 [报告]
发表于 2011-04-06 11:55 |只看该作者
回复 5# chenfeng111

这个应该和LVS有关,你检查一下LVS设置和工作状态吧。

论坛徽章:
0
7 [报告]
发表于 2011-04-07 16:21 |只看该作者
本帖最后由 chenfeng111 于 2011-04-07 16:23 编辑

lvs配置如下:
#!/bin/bash
#description:start directserver
case "$1" in

start)

echo "start LVS of DirectorServer"

/sbin/ip addr add 192.168.41.222/24 dev eth1
#echo "net.ipv4.ip_forward = 1" > /etc/sysctl.conf > /dev/null 2>&1

#sysctl -p

echo "1" > /proc/sys/net/ipv4/ip_forward

ipvsadm -C

ipvsadm -A -t 192.168.41.222:22122 -s wlc

ipvsadm -a -t 192.168.41.222:22122 -r 192.168.41.42:22122 -g
ipvsadm -a -t 192.168.41.222:22122 -r 192.168.41.51:22122 -g

#ipvsadm -a -t 192.168.26.222:80 -r 192.168.41.42:22122 -g

;;

stop)

echo "stop LVS of DirectorServer"
/sbin/ip addr del 192.168.41.222/24 dev eth1
#echo "net.ipv4.ip_forward = 0" > /etc/sysctl.conf > /dev/null 2>&1

#sysctl -p

echo "0" > /proc/sys/net/ipv4/ip_forward

ipvsadm -C

;;

*)

echo "Usage: $0{start|stop}"

exit 1

esac



错误信息如下:
connect to server 192.168.41.222:22122 fail
java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(Unknown Source)
        at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
        at java.net.PlainSocketImpl.connect(Unknown Source)
        at java.net.SocksSocketImpl.connect(Unknown Source)
        at java.net.Socket.connect(Unknown Source)
        at org.csource.fastdfs.TrackerGroup.getConnection(TrackerGroup.java:46)
        at org.csource.fastdfs.TrackerGroup.getConnection(TrackerGroup.java:71)
        at org.csource.fastdfs.TrackerClient.getConnection(TrackerClient.java:58 )
        at org.csource.fastdfs.test.Test1.main(Test1.java:25)

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
8 [报告]
发表于 2011-04-07 16:34 |只看该作者
本帖最后由 happy_fish100 于 2011-04-07 16:52 编辑

回复 7# chenfeng111

sorry,不懂LVS
不过,你可以确认一下LVS是否正常工作。
在LVS服务器上通过
netstat -an | grep 22122
检查一下是否在侦听22122端口
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP