常见的负载均衡的方式
1 负载均衡
1.1 场景引入
Tomcat最大能承受的访问量是300,现在需要处理同时并发1000的访问量,应该怎么做?
1.2 负载均衡的概念
百度百科的解释。
负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
2 常见的负载均衡的方式
2.1 基于DNS
在DNS上做负载均衡。
2.2 基于反向代理服务器(Apache、Nginx)
正向代理和反向代理的区别。
Nginx的配置如下:1
upstream pandawork {
server 192.168.1.25;
server 192.168.1.30;
}
server {
listen 80;
server_name www.pandawork.net;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 12m;
client_body_buffer_size 128k;
client_body_temp_path data/client_body_temp;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_temp_path data/proxy_temp;
proxy_pass http://pandawork;
}
}
5种方式的分配:
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream pandawork {
server 192.168.1.25;
server 192.168.1.30;
}
2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream pandawork {
server 192.168.1.25 weight=10;
server 192.168.1.30 weight=10;
}
3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream pandawork {
ip_hash;
server 192.168.1.25
server 192.168.1.30;
}
4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream pandawork {
server 192.168.1.25;
server 192.168.1.30;
fair;
}
5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream pandawork {
server 192.168.1.25;
server 192.168.1.30;
hash $request_uri;
hash_method crc32;
}
2.3 基于NAT
NAT(Network Address Translation 网络地址转换)简单地说就是将一个IP地址转换为另一个IP地址,一般用于未经注册的内部地址与合法的、已获注册的Internet IP地址间进行转换。适用于解决Internet IP地址紧张、不想让网络外部知道内部网络结构等的场合下。每次NAT转换势必会增加NAT设备的开销,但这种额外的开销对于大多数网络来说都是微不足道的,除非在高带宽有大量NAT请求的网络上。 NAT负载均衡将一个外部IP地址映射为多个内部IP地址,对每次连接请求动态地转换为一个内部服务器的地址,将外部连接请求引到转换得到地址的那个服务器上,从而达到负载均衡的目的。
NAT负载均衡是一种比较完善的负载均衡技术,起着NAT负载均衡功能的设备一般处于内部服务器到外部网间的网关位置,如路由器、防火墙、四层交换机、专用负载均衡器
等,均衡算法也较灵活,如随机选择、最少连接数及响应时间等来分配负载。
NAT负载均衡可以通过软硬件方式来实现。软件的方式如Linux的iptables就可以实现。硬件方式就是集成了NAT服务的硬件,通常这样的硬件设备是第四层交换机和专用负载均衡器,第四层交换机的一项重要功能就是NAT负载均衡。
由于NAT是在第四层上做负载均衡,因此可用于出web外的多种服务,如ftp。
2.4 基于LVS
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
三种转发机制:
1 Virtual Server via NAT
2 Virtual Server via IP Tunneling
Virtual Server和响应服务器间建立IP隧道,响应服务器可以在远端,响应直接由响应服务器返回给客户端。
3 Virtual Server via Direct Routing
Virtual Server直接将请求转发给响应服务器,响应服务器和Virtual Server必须在一个物理局域网内,响应直接由响应服务器返回给客户端。
参考:http://www.360doc.com/content/12/1117/19/820209_248441825.shtml
2.5 基于NLB
NLB(Network Load Balancing),网络负载平衡。
特点:
(1)NLB集群可以将两台或更多服务器结合起来使用
(2)一个NLB集群最多支持32台计算机
(3)NLB集群只能用于各节点的服务与数据完全相同的情况
(4)增强 Web、FTP、VPN等服务的可靠性和可伸缩性
NLB的工作原理
(1)集群中的每台服务器都有固定IP地址
(2)集群中的每台服务器还有一个共同的IP地址–NLB的集群IP地址
(3)NLB将客户端的访问信息发送给群集中的所有节点
(4)NLB算法决定提供服务的节点–其他不提供服务的节点丢弃访问请求
(4)NLB通过单播或多播来确保算法的特点
2.6 基于硬件
比较流行的是F5,价格相当高,最便宜的也要10几万。
http://network.51cto.com/art/201004/196752.htm
http://network.51cto.com/art/201004/196752.htm