`

负载均衡(Load Banlance)

阅读更多

负载均衡:

负载均衡是把一个可并行计算的程序的任务(或者什么东西)分配到分布式系统的各个cpu上,从而最小化最终完成时间的问题。

 

LB  主要考虑2方面的耗费:

 

total_cost = computation_cost + communication_cost.

 

似乎这两个耗费之间存在矛盾,如果将负载都分配到一个cpu上,那么通信耗费肯定会很少,然而总的完成时间会加长。

如果将负载均匀的分布到各cpu上,通信耗费又会增加。所以,要折衷考虑。

 

LB 分静态LB 和动态LB算法。

 

(1)静态LB

        是在编译程序阶段,就固定好了确切的分配策略,在执行之前,将任务分配给个系统。在执行过程中,不存在计算机之间的通信

(2)动态LB

      是在执行过程中,根据分布式系统的运行情况,分配任务。

 

LVS DR 工作原理

记录一下LVS中DR模式的运行过程

一个主LDSERVER  , 可以有自己单独的ip(192.168.1.1),vip 设置为 vip1(192.168.1.100)

一个备份LDSERVER, 自己的ip(192.168.1.2)vip当然也是vip1(利用keepalived检测,出错时会接管)

几台REAL_SERVER,这些real server必须在一个同一个物理连接上,也就是通过交换机直接连接

 

假设有2台real server,

1的ip为 192.168.1.3

 

2号机的ip为 192.168.1.4

 

怎样添加共享的vip呢?将1,2号机上的lo上添加一个 lo:0  它的ip是vip, 广播也是vip

 

那么这个包的流程是怎样处理呢?

1)用户请求dns得到LDserver的ip,为什么?因为只有ldserver提供icmp ping的应答,其他real server虽然也有此vip,但是配置时都关掉了应答,所以自然请求包会首先到达LDserver。

2)LDserver根据规则将请求包的目的mac地址写成一个realserver的mac地址,发出去

3)realserver接到该包后(在一个物理连接上,如果不是自己的数据包,根据mac地址会丢掉)向上层递交,然后自己的一个lo:中的ip正好是目的ip,那就可以处理该包了,并且直接给用户应答的时候也不用修改源ip,因为自己有一个lo的ip就是那个vip。这个地方被自己困住了很久。

 

从而LD上只负责映射和记录映射,并不保存链接,从而不会受单台pc的连接数的限制,瓶颈上升到带宽和单位时间内可以记录映射,查找映射的计算上。

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics