Content
0.序
1.分布式
2.集群
3.负载均衡
4.弹性
5.失效转移
0.序
本文主要是介绍分布式和集群,并实现集群的高可用性。
1.分布式
分布式是指将不同的业务分布在不同的地方。举个例子:小明的公司有3个系统(系统A、系统B、系统C) ,这三个系统所做的业务不同,被部署在3个独立的机器上运行, 他们之间互相调用(当然是跨域网络的), 通力合作完成公司的业务流程。
现在问题来了,系统A是公司的门户网站,用户访问量大的时候,速度可能会很慢,也可能会挂掉,这就造成系统可用性降低。怎么解决呢?
2.集群
小明的公司不差钱,就多买几台机器,小明把系统A一下子部署几份,每一份都是系统A的一个实例,对外提供同样的服务。
可是对于用户来说一下子出现这么多系统A,每个系统的IP都不 一样,到底该访问哪一个呢?如果所有的用户都访问服务器1.1,那么其他二个服务器一直都闲着,这是钱多啊!
3.负载均衡
小明想尽可能的让3个机器上的系统A都能工作,并且为了同一台机器访问量太大造成系统不可用,这时希望让3个机器上的系统A工作均衡一下,比如要3万个请求,那就让3个服务器各处理1万请求(理想情况),这叫负载均衡。很明显,这个负载均衡的工作最好独立出来, 放到独立的服务器上 (例如Ngnix):
这样虽然充分利用服务器了,但是如果负载均衡服务器挂掉了呢?
没办法,只能将负载均衡也搞个集群,不过和系统A的集群有两点不同:这个新的集群中虽然有两个机器,但我们可以用某种办法,让这个集群对外只提供一个IP地址, 也就是说用户看到的好像只有一个机器;同一时刻,我们只让一个负载均衡的机器工作, 另外一个原地待命。 如果工作的那个挂掉了,待命的那个就顶上去。
4.弹性
双11要来了,访问量是平时的几十倍,为了满足大量的请求,小明申请再买了几十台服务器,一下子把系统A部署了几十份,可是双11过后,访问量恢复正常,几十个服务器用不上了。因为这事被领导狠狠的批评了,小明了解云计算后,知道云端可以轻松的创建、删除虚拟的服务器,那样就可以轻松地解决增减服务器了。于是小明的系统具备了一定弹性。
5.失效转移
上面的系统看似很美好,但是当一个用户第一次访问被负载均衡代理到系统A服务器1.1并登录后,服务器1.1保留了用户的登录信息;当用户再次发送请求时被负载均衡代理到系统A服务器1.2,由于这台服务器没有用户的登录信息,所以导致用户需要重新登录。所以,实施负载均衡的时候,我们必须考虑Session的问题。一种办法是把状态信息在集群的各个服务器之间复制,不过不推荐使用。还有一种办法,就是把状态信息集中存储在一个地方,让集群的各个服务器都能访问到。