lvs基于系统内核实现软负载均衡,而haproxy和nginx是基于第三方应用实现的软负载均衡。
haproxy是基于四层和七层的转发,是专业的负载均衡软件
nginx既是web服务器、缓存服务器、又是反向代理服务器,可以做七层和四层的转发
lvs是基于四层的负载均衡,所以做不了基于url和目录的转发
在并发性大的时候用lvs,一般中小型公司就nginx或haproxy,如果只是单纯的负载均衡的话就用haproxy,若是web服务器建议使用nginx。
nginx比apache占用更少的内存和资源,抗并发能力强。nginx处理请求是异步非阻塞,apache是阻塞型的,在高并发下nginx仍能保持低资源低功耗高性能。apache的rewirte功能比nginx强大,模块也多,nginx的bug稍多一些。一般情况下如果对于性能要求高的话就选择nginx,若是追求稳定则使用apache
是为了提高用户访问前端页面的速度,减少了对后台应用的访问次数。将动态资源与静态分开部署,是将静态资源部署在nginx服务器上,把动态资源部署在应用服务器上。根据一定规则将静态请求全部请求到nginx上,将动态请求请求到tomcat上,以达到动静分离
四层负载均衡是基于ip+端口进行转发的,复杂度低,传输效率高,因为不需要解析具体的消息内容,但是安全性比较低,七层负载均衡是基于url或者主机ip进行转发的,复杂度高,传输效率相比四层比较低,但是安全性高,功能也比较丰富,比如会话保持、图片压缩等。对比来看两者最大的区别就是效率和功能的区别。四层负载均衡架构设计比较简单,无需解析具体消息内容,在网络吞吐量和处理能力上相对比较高,而七层负载均衡的优势则体现在功能多控制灵活强大
系统层面:增大文件句柄打开数。临时修改 ulimit –SHn 永久生效vim /etc/security/limits.conf
服务层面:每个进程的最大文件打开数设置的高一点。worker_rlimit_nofile
cpu的亲和设置,把nginx的进程绑定到不同的cpu,减少进程频繁切换cpu带来的资源损耗。worker_processes 8 最多开启8个,8个以上性能不在提升,稳定性也会变差。1.9版本之后可以设置为auto
选择epoll模型,io多路复用,将worker_connections 10240
设置keepalive_timeout会话保持时间
开启GZIP压缩
设置proxy超时时间
配置日志。方便排错
访问控制,流量控制
开启高效传输 sendfile on tcp_nopush on tcp_nodelay on
内核参数优化
会话保持的作用:为了确保与某个用户的所有请求能够由一台服务器进行处理
使用第三方模块nginx-sticky-module-ng,使用ip_hash、url_hash
在nginx配置文件中设置,如果后端地址比较多,则需要一个upstream模块定义一个后端地址池,在server模块中定义一个location模块利用proxy_pass转发到此地址池,做样的做法还起到了七层负载均衡的作用
在nginx配置文件中设置,如果后端地址比较多,则需要一个upstream模块定义一个后端地址池,在server模块中定义一个location模块利用proxy_pass转发到此地址池,做样的做法还起到了反向代理的作用
在配置文件中添加
server_tokens off;
ngx_http_referer_module,并在server块中添加Vaild_referers none
处理不了动态请求,单进程多线程模式,进程死掉会影响很多用户
- 400 Bad Request:请求无效或语法错误。
- 401 Unauthorized:未授权,需要身份验证。
- 403 Forbidden:服务器拒绝执行请求。
- 404 Not Found:请求的资源不存在。
- 500 Internal Server Error:服务器内部错误。
- 501 Not Implemented:服务器不支持请求的功能。
- 502 Bad Gateway:网关或代理服务器收到无效响应。
- 503 Service Unavailable:服务器暂时不可用。
- 504 Gateway Timeout:网关或代理服务器超时。