在集群系统中,请求 ->nginx->分发到多个tomcat服务器
DNS层
可以采用一个DNS service 把请求的网址解析成多个ip,每个ip对应到一个tomcat服务器
服务器层
可以在nginx的conf文件中把多个服务器的ip配置好,然后设置转发规则,对请求做反向代理转发到不同Ip
- 轮换转发
- 随机转发
- 权重转发
单点问题
只有一个nginx做转发,如果故障,会出现单点问题
影子主机:可以弄两个nginx,一个备用,一个出问题了转到另一个
怎么知道出问题了?
keepalived:可以定时给每个nginx发心跳,检测哪个出问题了,自动把请求转换到其他机器上
nginx有处理速度上限怎么办?
可以用lvs(Linux Virtual Server,Linux虚拟服务器):请求先到lvs(集群)+keepalived(检测lvs做主从切换),再转发到nginx,再转发到tomcat
当做为负载均衡服务器的nginx和lvs处理相同的请求时,所有的请求和响应流量都会经过nginx;但是使用lvs时,仅请求流量经过lvs的网络,响应流量由后端服务器的网络返回。
当作为后端的服务器规模庞大时,nginx的网络带宽就成了一个巨大的瓶颈。
nginx 工作在第七层(应用层),lvs 工作在第四层(传输层),当流量太大的时候可以用lvs做负载均衡