Dai Chong's blog

负载均衡是什么?

 负载均衡建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。

 负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

为什么要做负载均衡

  • 服务器总是崩溃怎么办?
  • 一台服务器扛不住大量的并发怎么办?
  • ……

 有了这些问题,我相信你一定会用得到这个技术。最让人高兴的一点是:只需要你懂点nginx的配置就能完美的驾驭负载均衡的配置,至于配置之后可能出现的问题,再慢慢去研究也不迟。

架构图

 从上图可以看出,我们利用负载均衡可以很好的应对并发请求过高的情况,使每一台服务器发挥最大的效用。

负载均衡的实现方式

  • 轮询(rr) :按时间顺序逐一分配到不同的后端服务器(默认);

  • 权重(weight):加权轮询(wrr)。weight值越大,分配到的访问率越高;

  • 源IP地址hash调度方法(ip_hash):将每个请求按访问IP的hash值来分配,来自同一个IP固定访问一个后端服务器;

  • 最少连接数(least_conn):当server拥有不同的权重时为wlc,当所有后端主机;连接数相同时,则使用wrr,适用于长连接(keepalive_timeout不为0);

实战配置

 准备三台服务器:(1)192.168.133.128(调度器)(2)192.168.133.129(服务器1)(3)192.168.133.130(服务器2)
 在调度服务器中配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
upstream 192.168.133.128{
server 192.168.133.129:80 weight=1;
server 192.168.133.130:80 weight=1;
}

server {
listen 80;
server_name localhost;

#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;

client_max_body_size 50m;
client_body_buffer_size 256k;

location / {
proxy_pass http://192.168.133.128;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;

}

 其他服务器server_name都配置成自己的IP就行。在各自的服务Html里命名,加以区分。

测试


 评论