Nginx应用
- Nginx是一款非常优秀的HTTP服务器软件
- 支持高达50000个并发连接数的响应
- 拥有强大的静态资源处理能力
- 运行稳定
- 内存、CPU等系统资源消耗非常低
- 目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力
反向代理
- 反向代理:当我们的网站访问量越来越大,一台tomcat 服务器已经无法满足服务需求,需要加服务器,但是服务器直接无法实现session共享,需要加一层(nginx),来转发控制,反向代理到三台服务器中某台,实现数据共享。
负载均衡
- 负载均衡:给服务器性能好的访问权重分配大,给服务性能差的分配流量少。
nginx负载均衡的模式(调度算法/策略)
-
rr 轮询 负载均衡模式 (自带的)
每个请求按时间顺序逐一分配到不同的后端服务器,如果超过了最大失败次数后(max_fails,默认1),在失效时间内(fail_timeout,默认10秒),该节点失效权重变为0,超过失效时间后,则恢复正常,或者全部节点都为down后,那么将所有节点都恢复为有效继续探测,一般来说rr可以根据权重来进行均匀分配。 -
least_conn 最少连接(自带的)
优先将客户端请求调度到当前连接最少的服务器。 -
weight 加权轮询(自带的)
weight代表权重的意思,用于指定轮询的几率,默认权重都是1,可以手动设置调整,权重越高,被分配的次数越多,weight权重和访问比例是成正比的,用于解决后端服务器性能不均衡时,调整访问比例。 -
ip_hash (自带的)
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,但是ip_hash会造成负载不均,有的服务请求接受多,有的服务请求接受少,所以不建议采用ip_hash模式,session 共享问题可用后端服务的 session 共享代替 nginx 的 ip_hash(使用后端服务器自身通过相关机制保持session同步)。 -
url_hash(第三方)
基于用户请求的uri做hash。和ip_hash算法类似,是对每个请求按url的hash结果分配,使每个URL定向到同一个后端服务器,但是也会造成分配不均的问题,这种模式后端服务器为缓存时比较好。 -
fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
七层反向代理
nginx服务器做七层反向代理:动静分离+负载均衡
vim /usr/local/nginx/conf/nginx.conf
三个Tomcat 后端服务器
weight
四层代理配置
四层代理配置=多个七层反向代理服务器+负载均衡
四层代理需要 在编译安装时添加 --with-stream 启用 stream模块,提供4层调度
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-file-aio \ #启用文件修改支持
--with-http_stub_status_module \ #启用状态统计
--with-http_gzip_static_module \ #启用 gzip静态压缩
--with-http_flv_module \ #启用 flv模块,提供对 flv 视频的伪流支持
--with-http_ssl_module #启用 SSL模块,提供SSL加密功能
--with-stream #启用 stream模块,提供4层调度
vim /usr/local/nginx/conf/nginx.conf
这两个ip地址对应的是两个七层反向代理服务器