负载均衡(Load Balance)

1.高并发

高并发就是使用多个线程或者多个进程,同时处理不同的操作。简而言之就是每秒内有多个请求同时访问。

2.负载均衡

负载均衡:将请求/数据均匀分摊到多个操作单元上执行,负载均衡的关键在于均匀,这也是分布式系统架构设计中必须考虑的因素之一。

3.Tomcat的并发量

tomcat的最大承受请求是250个,当每秒有300个请求同时访问tomcat时,tomcat已经开始承受不住 ,出现波动。

常见的互联网分布式架构,分为客户端层,反向代理nginx层,站点层,服务层,数据层。只需要实现将请求/数据均匀分摊到多个操作单元上执行,就可以实现负载均衡。

Nginx初探

1.什么是Nginx

Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件代理服务器。由俄罗斯的Igor Sysoev开发,其特点是占用内存少,并发能力强。

官方实测Nginx能够支撑5万并发链接,并且CPU,内存等资源消耗却非常低,运行非常稳定。

2.为什么会有nginx

为了解决热点问题,合理的将请求均匀的分摊到各个服务器上

3.Nginx和apache的优缺点

轻量级,同样起web 服务,比apache 占用更少的内存及资源高并发,nginx 处理请求是异步非阻塞(如前端ajax)的,而apache 则是阻塞型的,在高并发下nginx能保持低资源低消耗高性能高度模块化的设计,编写模块相对简单还有,它社区活跃,各种高性能模块出品迅速(十几年时间发展)
apache 相对于nginx 的优点: Rewrite重写 ,比nginx 的rewrite 强大模块超多,基本想到的都可以找到少bug ,nginx 的bug 相对较多。(出身好起步高)
Nginx 配置简洁, Apache 复杂

Nginx安装

http://pjyn8dgy4.bkt.clouddn.com/%E9%85%8D%E7%BD%AENginx%E6%9C%8D%E5%8A%A1.txt

Nginx配置

1.负载均衡配置

nginx支持以下负载均衡机制:

轮询负载均衡:对应用程序服务器的 请求以循环方式分布,

加权负载均衡:在轮询负载均衡的基础上加权

最少连接数:将下一个请求分配给活动链接数最少的服务器

ip-hash:哈希函数用于确定下一个请求(基于客户端ip地址)应该属于哪个服务器

2.1默认负载均衡配置

使用nginx进行负载平衡的最简单配置可能如下所示:

http { 
    upstream keyword{ 
        server node01; 
        server node02; 
        server node03; 
    } 

    server { 
        listen 80; 
	server_name  localhost;
        location / {
            proxy_pass http://keyword;
        }
    } 
}

在上面的示例中,在srv1-srv3上运行相同应用程序的3个实例。如果没有专门配置负载均衡方法,则默认为循环法。所有请求都被 代理到服务器组keyword,并且nginx应用HTTP负载平衡来分发请求。

2.2加权负载均衡

通过使用 服务器权重,还可以进一步影响nginx负载均衡算法,谁的权重越大,分发的请求就越多。

upstream keyword {
        server srv1.example.com weight=3;
        server srv2.example.com;
        server srv3.example.com;
  }

2.3最少连接负载均衡

在连接负载最少的情况下,nginx会尽量避免将过多的请求分发给繁忙的应用程序服务器,而是将新请求分发给不太繁忙的服务器,避免服务器过载。

upstream keyword {
        least_conn;
        server srv1.example.com;
        server srv2.example.com;
        server srv3.example.com;
    }

2.4会话持久性

上述的负载均衡机制不能保证相同的客户端总是定向到相同的服务器,如果需要将客户端绑定到特定的应用程序服务器。换句话说,就是始终选择相同的服务器,使客户端的会话具有持久性。

ip-hash负载均衡机制就有这种特性。使用ip-hash,客户端的ip地址将用作散列键,以确定应该为客户端的请求选择服务器组中的哪台服务器。此方法可以确保来自同一个客户端的请求将始终定向到同一台服务器。

upstream keyword {
    ip_hash;
    server srv1.example.com;
    server srv2.example.com;
    server srv3.example.com;
}

3.Nginx的访问控制

Nginx可以对ip的访问进行控制,allow代表允许,deny代表禁止。

location / {
        deny 192.168.2.180;
        allow 192.168.78.0/24;
        allow 192.168.1.0/32;
        deny all;
        proxy_pass http://keyword;
}

从上到下的顺序,匹配到了便跳出。如上的例子先禁止了1个,接下来允许了2个网段,最后未匹配的IP全部禁止访问.