为啥使用nginx的同时,前面还会有一层lvs;这里还要从原理上看
- nginx 工作在七层,nginx作为反向代理,接受客户端发来的请求,然后将请求转发给内网中的上游服务器,上游服务器处理完之后,把结果通过nginx返回给客户端(请求和响应都要经过nginx);这样nginx 可以根据响应情况标识后端服务状态,后端服务不可用时可以转发到其他服务,同时避免后续转发到错误后端
- lvs 工作在四层(效率相对高),使用lvs时,仅请求流量经过lvs的网络,响应流量由后端服务器的网络返回
如果仅使用nginx,因为请求和响应都得经过nginx,则nginx将会是瓶颈;如果只使用lvs,由于响应不经过lvs,如果后端服务错误,lvs无法感知,后续请求将出问题。
因此,通过lvs将请求打到多个nginx上,每个nginx后端再有几台应用服务器,那么结合两者的优势,既能避免单nginx的流量集中瓶颈,又能避免单lvs时系统请求错误率问题。