1,主要分为三大模块
2,Nginx集群搭建。
集群后负载均衡四种方式:
一,轮询法(默认):将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载,性能
upstream tomcat_server { server 192.168.10.11:8080 weight=1; server 192.168.10.12:8080 weight=1; }
二,加权轮询法(weight):不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同,给性能高的加权,性能低的减少权重,weight的值越大分配到的访问概率越高
upstream tomcat_server { server 192.168.10.11:8080 weight=1; server 192.168.10.12:8080 weight=2; }
三,源地址哈希法:同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问(可以解决session问题)
upstream tomcat_server { ip_hash; server 192.168.10.11:8080 weight=1; server 192.168.10.12:8080 weight=1; }
四,最小连接数法:根据后端服务器当前的连接情况,动态地选取其中当前积压连接,数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率
upstream tomcat_server { least_conn; server 192.168.10.11:8080 weight=1; server 192.168.10.12:8080 weight=1; }
五,Fair:根据后端服务器的响应时间来分配请求,响应时间短的优先分配(比weight、ip_hash更智能的负载均衡算法。需安装upsteram_fair模块)
upstream tomcat_server { fair; server 192.168.10.11:8080 weight=1; server 192.168.10.12:8080 weight=1; }
• 下载地址:https://github.com/gnosek/nginx-upstream-fair/tree/master
• 解压zip:unzip nginx-upstream-fair-master.zip
• 增加模块: ./configure --prefix=/opt/nginx --add-module=/opt/nginx-upstream-fair-master
• defalut_port问题修改:cd nginx-upstream-fair-master
• sed -i 's/default_port/no_port/g' ngx_http_upstream_fair_module.c
• make
• make install
六,url_hash:按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器(提高后端缓存服务器的效率,需安装Nginx的hash软件包)
upstream tomcat_server { hash $request_uri; server 192.168.10.11:8080 weight=1; server 192.168.10.12:8080 weight=1; }
• 下载地址:https://github.com/evanmiller/nginx_upstream_hash
• 解压zip:unzip nginx_upstream_hash-master.zip
• 增加模块: ./configure --prefix=/opt/nginx --add-module=/opt/ nginx_upstream_hash-master
• make
• make install
3,打日志(访问日志,错误日志)
$remote_addr: 客户端的ip地址(代理服务器,显示代理服务ip) $remote_user: 用于记录远程客户端的用户名称(一般为“-”) $time_local: 用于记录访问时间和时区 $request: 用于记录请求的url以及请求方法 $status: 响应状态码,例如:200成功、404页面找不到等。 $body_bytes_sent: 给客户端发送的文件主体内容字节数 $http_user_agent: 用户所使用的代理(一般为浏览器) $http_x_forwarded_for: 可以记录客户端IP,通过代理服务器来记录客户端的ip地址 $http_referer: 可以记录用户是从哪个链接访问过来的
4,Nginx动静分离:动态请求跟静态请求分开(Nginx 处理静态页面,Tomcat处理动态页面)
1. 一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案
2. 一种是动态跟静态文件混合在一起发布,通过 nginx 来分开
5,nginx优化
1,高并发下Nginx配置限流
2,高并发下Nginx安全配置
3,Nginx配置优化之进程数、并发连接数、系统优化
4, Nginx配置优化之长连接
5, Nginx配置优化之压缩
6,Nginx配置优化之状态监控
7,Nginx与其它解决方案搭配组合
高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求
高并发相关常用的一些指标有响应时间(Response Time),吞吐量(Throughput)单位时间内处理的请求数量,每秒查询率QPS(Query Per Second)每秒响应请求数,并发用户数等