我正在研究如何设置由三个 CentOS 5.4 盒组成的负载平衡服务器解决方案。其中两个盒位于一个设施中,第三个盒位于另一个设施中。
我目前正在设置 heartbeat、ldirectord、ipvsadm 来平衡机器的负载,但我不确定它是否能与
我不太了解所有这些工作原理的细节,但当这些服务器不在同一 LAN 上时,负载平衡能否正常工作?我不确定 heartbeat 是否使用 SNMP 发送信号,这只能通过 LAN 工作。有人试过这个或找到其他解决方案吗?
答案1
这是一个很大的话题,很快就会变得复杂。CAP 定理是一个很好的起点,因为它确定了必须做出的更高层次的选择。
当您处理编写繁重的 Web 应用程序时,在保持数据完整性的同时在 Internet 上分配负载会变得更加困难。以读取为中心的应用程序(搜索!)更容易分配,因为您不必担心写入数据的后勤工作。
互联网服务提供商允许 Linux 实质上成为第 4 层交换机。我最成功的是在第 2 层(ARP/以太网链路层)使用它,这将是我的首选,但使用类似LVS隧道适用于在广播层上没有连接的地理上分离的服务器。请注意,ipvsadm 是 ipvs 的用户空间工具,ldirectord 是管理 ipvs 资源的守护进程。
心跳实际上已经取代了起搏器。要监控另一台服务器,必须有多个链接。服务器之间没有串行或冗余物理连接的风险要大得多。即使是两个站点之间心跳监控的多个物理上不同的互联网连接也必然会中断。这就是数据风险发挥作用的地方,因为自动故障转移可能会因裂脑而导致数据损坏。没有理想的方法来减轻这种风险。
您可以在故障转移过程中注入更多逻辑。例如:
如果路径 1 发生故障,路径 2 也发生故障,则该进程未运行,我无法执行此操作 - 然后进行故障转移。
这虽然降低了风险,但即便如此,仍不一定能够在短距离内物理连接服务器。
对于静态内容,很容易使用内容分发网络。
可以使用以下方法实现简单的负载平衡和故障转移轮询 DNS,这更容易出错。
边界网关协议是一种可以实现网络层高可用性的网络协议。
最终,只要有足够的资金(时间/资源),就可以制定适当的 SLA 以实现高可用性。您的预算将是您的最终约束。定义您的要求,然后看看您可以在预算范围内完成什么,因为会有妥协。
我经常发现,至少在编写繁重的应用程序的情况下,在同一物理前提下实现高可用性和自动故障转移更有意义。作为灾难恢复计划和 SLA 的一部分,将手动故障转移流程设置为物理上独立的站点,这样既可以保持数据完整性,又可以保持优质的服务水平。
答案2
在不同位置拥有不同的服务器应该不是问题,除非它们可以互相访问。
问题在于它们之间的带宽以及您在其上传输的数据。Heartbeat
不使用 snmp,可以是多播、单播或广播。它是一种特定协议(无论如何 snmp 在局域网之间工作,因为它是一种 udp 协议)。
哪种服务正在尝试负载平衡?
答案3
另一个想法是实现具有高可用性的 DRBD。请查看此网站http://www.drbd.org/home/what-is-drbd/