免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: hanool
打印 上一主题 下一主题

用nginx做负载均衡,上传文件是否能不经过nginx服务器呢? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2012-05-18 13:52 |只看该作者
把配置贴出来了。

1) 安装ipvsadm.x86_64:ipvsadm-1.25-9.el6.x86_64
2)修改内核参数
虚机
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.eth0.send_redirects = 1
sysctl –p
实机
net.ipv4.ip_forward = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

3)设置如在均衡机器
ipvsadm -A -t 192.168.100.233:80 -s rr         //虚拟IP为192.168.100.233

4) 添加这个负载均衡IP
ipvsadm -a -t 192.168.100.233:80 -r 192.168.100.211 -g -w 1
ipvsadm -a -t 192.168.100.233:80 -r 192.168.100.213 -g -w 1

5) 配置均衡器虚拟Ip
ifconfig eth0:0 192.168.100.233 broadcast 192.168.100.233 netmask 255.255.255.255 up
route add -host 192.168.100.233 dev eth0:0

配置实际机器虚拟ip
ifconfig lo:0 192.168.100.233 broadcast 192.168.100.233 netmask 255.255.255.255 up
route add -host 192.168.100.233 dev lo:0

6)在realserver上使用arptables,看有人这么用的。
arptables -F
arptables -A IN -d 192.168.100.233 -j DROP
arptables -A OUT -s 192.168.100.233 -j mangle --mangle-ip-s 192.168.100.211

arptables -F
arptables -A IN -d 192.168.100.233 -j DROP
arptables -A OUT -s 192.168.100.233 -j mangle --mangle-ip-s 192.168.100.213

论坛徽章:
3
处女座
日期:2014-11-05 11:02:4315-16赛季CBA联赛之四川
日期:2015-12-10 14:37:4015-16赛季CBA联赛之天津
日期:2017-09-08 18:39:34
12 [报告]
发表于 2012-05-18 14:25 |只看该作者
芬达7402 发表于 2012-05-18 13:23
看来我的思路有问题。我是这么考虑的:采用DR模式的lvs把请求转发给后端真实服务器B或者C,然后B或C直接与客 ...


客户端的访问,是每一个请求都要经过LVS来转发到真实服务器的吧,所以大数据流是绕不开这个负载均衡器的

欢迎大家讨论指正  

论坛徽章:
0
13 [报告]
发表于 2012-05-18 15:04 |只看该作者
先抛个砖头,大家指正。

负载机、web服务器,这些都用一个虚拟IP;client是跟这个虚拟Ip通信的。

通信时,使用的层3 的IP地址相同,用一个统一的虚拟IP。

不同之处是层2的mac地址不通,各个机器都不一致。因此,lvs dr模式在arp上面动了一些手脚。

我开始理:如果负载器在转发http数据包的时候,给这个包的目的地址mac改为某个web服务器的。以后后续的通信都是web和client的了。这个显然跟现在的结果不一致。我理解有误。
如果client端的在收到web server的ack后把mac地址改成web的mac,就会避免这个问题吧,YY的。

论坛徽章:
3
处女座
日期:2014-11-05 11:02:4315-16赛季CBA联赛之四川
日期:2015-12-10 14:37:4015-16赛季CBA联赛之天津
日期:2017-09-08 18:39:34
14 [报告]
发表于 2012-05-18 15:28 |只看该作者
我理解的DR的流程是这样的

一个完整的请求过程:

client 请求--> DR vip --> DR重新封包(将原来 VIP:DR MAC  改为 VIP:RS MAC) --> RS 与 Client 三次握手,应答 (使用 VIP:RS MAC)

论坛徽章:
0
15 [报告]
发表于 2012-05-19 08:55 |只看该作者
本帖最后由 阿新3389_cu 于 2012-05-19 08:58 编辑

LZ的架构思路不对噢!

应该把上传文件直接就存放在nginx上面,无需存放在后端服务器,这样这些静态文件就可以由nginx直接处理,效率更高!如果这些静态文件量过大,单独做个文件服务器,用NFS iSCSI等等挂载在nginx服务器上

压力再大需要在nginx这层做负载均衡

另外,不管是用nginx还是lvs做负载均衡,目的是要减轻后端的压力,不要把nginx和lvs服务器看成一个软件,把他们想象成虚拟F5硬件,他们就像交换机路由器,负责数据交换

论坛徽章:
0
16 [报告]
发表于 2012-05-21 16:35 |只看该作者
谢谢你的解答

如果有大量用户同时往服务器上传大文件的话,假设现在只有一个nginx作为节点,那么这个节点在必然是整个系统IO的性能瓶颈?
再假设这个节点的带宽为1G,如果有100个用户同时上传文件,那么每个用户分的带宽是1G/100;当有100000个客户上传,那么上传的性能就会降到1G/100000了,对吧?
所以,希望能让传输文件的工作放在nginx后来完成,就能提高带宽。
不知道有什么好的办法吗?

论坛徽章:
0
17 [报告]
发表于 2012-05-22 10:04 |只看该作者
按你这个思路应该是用LVS类似的从IP层做的均衡,而不是会话层

论坛徽章:
13
15-16赛季CBA联赛之同曦
日期:2016-01-28 19:52:032015亚冠之北京国安
日期:2015-10-07 14:28:19NBA常规赛纪念章
日期:2015-05-04 22:32:03处女座
日期:2015-01-15 19:45:44卯兔
日期:2014-10-28 16:17:14白羊座
日期:2014-05-24 15:10:46寅虎
日期:2014-05-10 09:50:35白羊座
日期:2014-03-12 20:52:17午马
日期:2014-03-01 08:37:27射手座
日期:2014-02-19 19:26:54子鼠
日期:2013-11-30 09:03:56狮子座
日期:2013-09-08 08:37:52
18 [报告]
发表于 2012-05-22 10:07 |只看该作者
Yuri.G. 发表于 2012-05-22 10:04
按你这个思路应该是用LVS类似的从IP层做的均衡,而不是会话层


是这样哦,。。

论坛徽章:
0
19 [报告]
发表于 2012-05-22 16:33 |只看该作者
貌似lvs也不行
这样看来只能用dns 做负载均衡了。。。

论坛徽章:
0
20 [报告]
发表于 2012-05-22 23:42 |只看该作者
估计LZ你还没有搞明白,不管是多少G的上传流量,和前端nginx或者lvs的IO性能是没关系的,他们只负责数据的传输,而不会写入到磁盘,就像交换机传输数据,最终是写在服务器的磁盘上,而不会先写到交换机上,服务器再从交换机上下载数据,IO的瓶颈只会在文件服务器上

另外如果你用dns做负载均衡,上传数据会写在后端不同的服务器上,后端服务器数据的同步是一大麻烦,我前面说过如果量过大,最简单的方法专门弄个文件服务器用NFS同时挂载在后端服务器和前端nginx服务器上

1,上传数据 你可以通过dns nginx lvs 等等负载均衡到后端服务器,但最后要写在文件服务器上

2,请求数据 通过nginx + 文件服务器 发送
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP