1、高并发时代
单台tomcat在理想情况下可支持的最大并发数量在200~500之间,如果大于这个数量可能会造成响应缓慢甚至宕机。
解决方案是通过多台服务器分摊并发压力,这不仅需要有多台tomcat服务器,还需要一台服务器专门用来分配请求。这既是反向代理服务器
2、Nginx概述
Nginx是一款优秀的反向代理服务器程序,能够为若干台服务器提供反向代理服务,一方面为客户端提供一个统一访问的地址,一方面为后台多个服务器提供负载均衡 。
Nginx可以实现不仅可以实现反向代理,也可以实现正向代理,不过一般我们都是使用反向代理,即代理服务器集群,因为一般集群部署也是服务端
- 正向代理
nginx为客户端代理称为正向代理。客户端集群部署,可以通过访问同一个地址来访问服务端。
- 反向代理
nginx为服务端代理称之为反向代理。Nginx为访问服务端提供一个统一的接口,客户端只需要访问这个统一接口就可以访问到服务端。
3、Nginx使用
通过Nginx实现请求转发
例:当客户端访问http://www.pq.com时,由nginx转发给 http://127.0.0.1:8080端口进行处理
在nginx.conf中配置
http{
#为nginx配置一个虚拟服务器,
server {
#监听本机80端口
listen 80;
#接收对www.pq.com主机名的访问
server_name www.pq.com;
#对/即任意路径的访问进行处理
location / {
#转发到指定地址
proxy_pass http://127.0.0.1:8080;
}
#可以配置多个location
...
}
#可以配置多个server
...
}
通过server和location配置转发的地址。接下来用户可以通过访问 www.pq.com,实际请求是被转发到 127.0.0.1:8080
实现负载均衡
对服务端集群部署,如现在对于客户端的请求有三台服务器可以处理,nginx可以对这三台服务器进行负载均衡,并提供一个统一的接口给客户端访问
在nginx.conf中这样配置:
#upstream是nginx配置文件中的关键字,用来配置一组服务器地址供后续使用
upstream big1907{
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
}
server {
listen 80; #对80端口的访问
server_name www.pq.com; #对此主机名的访问
location / {
#转发到上面配置的服务器组
proxy_pass http://big1907;
}
}
对于三台服务器的请求可以都通过代理接口www.pq.com进行访问
- Nginx中的负载均衡策略
轮询 :默认不配置就是轮询。连接请求轮流分配给服务器。
IP哈希 :(客户端ip.hash()%服务器数量),根据余数决定请求去往哪个服务器
最少连接 :将连接请求分配给目前连接数最少的服务器
基于权重 :根据权重进行分配(权重值可以自定义,在地址后配置weight=x),权重值越大,被分配的连接就越多;如果直接配置为down,则该服务器不再被分配连接