了解Nginx的高可用就接触到了这几个概念,一开始对这些概念还有点迷糊。区分这几个概念概念的最好方法就是搭建一个同时包含他们三个的架构。如下图:
当然,他们三个组合的架构其实有很多种,这只是其中一种。
接下来通过问答的形式理清这些概念。
为什么要有这么复杂的架构?
所有的问题起源与一台服务器的单机性能不够。一台不够就再加几台,形成集群,于是同一个服务运行再多个服务器上了。但随之而来的就有一个问题,客户端怎么知道要访问谁?假设集群中的每台服务器都有公网IP的话,那么可以通过将IP绑定域名,可以让DNS轮询,决定使用哪个IP。这样的结果就是,往往所有流量都全部取到一台服务器上,等这台服务器承受不了流量挂了,就切换到下一台服务器上,这就如同灾难转移,葫芦娃救爷爷。这样集群就形同虚设了,我们认为集群应该是平均分摊流量的,这时候我们就需要使用负载均衡了。
负载均衡当然好,这意味着所有流量都要经过Nginx,即使Nginx吞吐量比Tomcat优秀或许能承受住所有流量,但是也有挂的风险。一旦Nginx挂了,整个系统都不可用了,所以我们需要保证Nginx 高可用。
要保证高可用自然可以想到加一个备机,在主机挂了就切换成备机。
这样的方案确实可靠,但是有些浪费,因