AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 582822
Accepted
Luke Cousins
Luke Cousins
Asked: 2014-03-19 02:09:55 +0800 CST2014-03-19 02:09:55 +0800 CST 2014-03-19 02:09:55 +0800 CST

使用 Keepalived 进行主动/主动 HAProxy 设置的任何问题

  • 772

抱歉,如果以前有人问过这个问题,但我似乎找不到太多关于它的信息。

我们将使用 HAProxy 来平衡我们的 MariaDB Galera 集群。我在这方面看到的所有文章/教程都使用 Keepalived(或类似的东西)来进行主动/被动 HAProxy 设置。

是否有充分的理由说明您不应该进行主动/主动设置?

每个 HAProxy 节点可以有一个固定 IP,也可以有一个浮动 IP。正常情况下,请求是在两个 HAProxy 节点之间共享的,如果一个节点宕机,另一个会使用它的浮动 IP 并处理两个 IP 下的请求。当另一个重新启动时,它会重新获取其浮动 IP 和负载份额。

我很感激你对此的意见。

卢克

load-balancing
  • 2 2 个回答
  • 11254 Views

2 个回答

  • Voted
  1. Best Answer
    HBruijn
    2014-03-19T07:33:31+08:002014-03-19T07:33:31+08:00

    对于同一资源,不要使用两个虚拟 IP 地址进行主动/主动设置的重要注意事项是

    • 您如何通过两个虚拟 IP 分配请求
    • 您如何处理粘性会话、亲和性、持久性等,即当后续请求开始转到虚拟 IP1 然后转到虚拟 IP2 时会发生什么,您是否需要将这些请求转到同一后端服务器。
    • 当虚拟 IP 地址故障转移到另一台主机时会发生什么?
    • 3
  2. user5994461
    2020-04-27T15:35:25+08:002020-04-27T15:35:25+08:00

    2020 年更新:keepalived已经过时了一段时间,因为它在虚拟云 (AWS) 中不起作用。

    一点历史

    曾几何时,办公室里有一个(思科)互联网路由器。路由器为所有机器提供互联网访问,这很好。

    ...然后路由器死了,每个人的互联网都被破坏了,而且很糟糕。

    事实证明,任何东西都需要两个才能有冗余。因此,思科开始提供成对的可协同工作的路由器。

    这是通过称为HSRP、VRRP或CARP的协议完成的。HSRP是解决问题的原始 cisco 制造的协议。它后来被标准化为VRRP https://www.rfc-editor.org/rfc/rfc3768(1998年),并被大多数网络设备和供应商实施。BSD 人重新发明了他们自己的协议CARP来做同样的事情,由于对许可或专利的担忧,他们无法采用 VRRP。

    Keepalived(和 uCARP)是实现 VRRP(和 CARP)的软件。可以在两个常规 Linux 服务器上设置它以在它们之间进行故障转移。

    AWS 的崛起与 VRRP 的终结

    VRRP如何运作?对于初学者来说,它需要一个浮动 IP,比如说 192.168.1.254,在任何时间点只有一个路由器拥有该 IP 的所有权。网络中的设备只是将流量发送到该(浮动)IP 并到达活动路由器,他们不知道它是浮动的,也不在乎。两台路由器不断相互通信,如果其中一台挂掉,另一台路由器接管 IP 并开始处理流量。

    此时需要熟悉 OSI 网络第 2 层和第 3 层(MAC 和 IP)。网络设备使用MAC和IP地址进行通信,地址使用ARP 解析。

    浮动 IP 被接管的概念涉及网络堆栈中的许多恶作剧(上面的所有首字母缩略词),它不是完全设计的,也不是预期的行为。

    在物理网络上,多台计算机以物理方式插入一个以太网交换机,它通常可以工作。

    在虚拟机上,它通常不起作用。虚拟网络必须处理网络流量(MAC 和 IP 层),它通常会阻止魔术数据包或隔离虚拟主机以防止 VRRP 运行。

    在主要的虚拟云(AWS、Google 和 co)上。这绝对行不通,而且是故意的。想象一下,如果一个 AWS 实例可以从另一个 Linux 实例(可能来自另一个客户)接管 IP(所有流量)。我勒个去?!

    云和 CDN 解决方案

    云提供商提供负载均衡器解决方案,请参阅 AWS ELB 和 Google Cloud 负载均衡器。它们带有针对此问题的内置冗余,因此您不必考虑它。keepalived 已经过时了。

    下一个方面是 CDN(CloudFlare、Akamai)。如今,所有公共网站都运行在提供缓存、过滤和 DDoS 保护的 CDN 后面。CDN 可以在多个上游服务器之间提供负载平衡。只需配置所有单独的服务器,流量就会被拆分。

    最后但并非最不重要的。keepalived 只允许在众多服务器中拥有一个活动服务器,轻描淡写会浪费资源。这实际上是现实世界中的一个灾难性问题,因为事情需要扩展,而不能通过设计扩展。今天使用的故障转移解决方案(如在云和 CDN 中发现的那样)旨在将流量分配到多个活动的目的地。实现起来要复杂得多,并且是在不同的层上累积完成的(参见DNS, Anycast, OSPF, BGP)。keepalived 不再是全局的一部分。

    • -1

相关问题

  • 网络负载平衡服务器无法相互通信

  • 用于网络监控的路由/代理 SNMP 陷阱(或 Netflow、通用 UDP 等)的解决方案?

  • 防止拒绝服务攻击的最佳技术是什么?

  • 添加备份互联网连接需要哪些硬件?

  • 什么是最有效的 Windows 负载平衡解决方案?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve