英文原文:Seesaw: scalable and robust load balancing 作者:Joel Sing,谷歌网站可靠性工程师;翻译:Guokai Han 。
就像所有好的项目一样,这个项目也是为了解决实际问题而产生的。
作为网站可靠性工程师,我们负责管理 Google 公司的基础设施。我们平时需要处理大量的内部使用的服务,而这些服务需要负载均衡来保障其可伸缩性和可靠性。在 2012 年,我们有两个不同的平台来提供负载均衡,它们都有不同程度的管理和稳定性的挑战。为了缓解这方面的问题,我们团队开始着手寻找一个替代的负载均衡平台。
在评估了一些包括现有的开源项目的平台之后,我们没能找出一个能够满足我们所有需求的平台,所以我们决定自己着手开发一个可靠和可伸缩的负载均衡平台。需求并不太复杂,我们需要能够处理单播(unicast)和任播(anycast)虚拟 IP (VIPs) 流量,使用 NAT 和 DSR (也被称为 DR) 执行负载均衡,执行针对后端的健康检查。特别是,我们需要一个容易管理的平台,可以自动部署配置的变化。
原有的两个平台之一是基于 Linux LVS 构建的,它在网络层提供了必要的负载均衡。这方面已被证明是成功的,所以我们选择在新的平台中保留它。在项目初期我们就确定了几个设计决定,首先是使用 Go 语言,因为它提供了实现并发的强大方法(goroutines 和 channels) 以及方便的进程间通信(net/rpc)机制。其次是要实现一个模块化的多进程架构。第三,如果遇到了未知状态,能够简单地退出(abort)和终止(terminate)进程,这种情况理想上是做故障转移和/或自我恢复。
经过一段时间地集中开发,作为原有的两个平台的替代品,我们完成并成功部署了 Seesaw v2 。总体而言,它让我们提高了服务可用性并降低了管理开销。我们很高兴能够把它分享出来,希望其他企业也能够从中受益。Seesaw v2 的项目地址是:https://github.com/google/seesaw 。
|