关于多个tracker的负载均衡问题

发布于 2022-09-30 19:21:06 字数 603 浏览 15 评论 0

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

凉栀 2022-10-07 19:21:06

回复 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要根据负载来均衡,那自己想办法实现吧。

嘿嘿嘿 2022-10-07 19:21:06

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中第一个能连通的链接吗?

风蛊 2022-10-07 19:21:06

回复 3# chenfeng111

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

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

听风念你 2022-10-07 19:21:06

我在两台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服务器上,如何解决啊?

盛夏尉蓝 2022-10-07 19:21:06

回复 5# chenfeng111

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

谎言月老 2022-10-07 19:21:06

本帖最后由 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)

空‖城人不在 2022-10-07 19:21:06

本帖最后由 happy_fish100 于 2011-04-07 16:52 编辑

回复 7# chenfeng111

sorry,不懂LVS
不过,你可以确认一下LVS是否正常工作。
在LVS服务器上通过
netstat -an | grep 22122
检查一下是否在侦听22122端口

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文