如何使用本地BGP路由创建高可用性集群(本地bgp路由选择的过程)

如何使用本地BGP路由创建高可用性集群(本地bgp路由选择的过程)

浏览次数:
信息来源: 用户投稿
更新日期: 2026-01-15
文章简介

如果一个节点发生故障,高可用性(HA)系统能够立即将其工作负载重定向到另一个节点。HA集群实施通常会尝试消除单点故障。此类集群通常用于关键数据库、业务应用程序和其他不能容忍停机的系统。 HA集群的运

2025阿里云双十一服务器活动

如果一个节点发生故障,高可用性(HA)系统能够立即将其工作负载重定向到另一个节点。HA集群实施通常会尝试消除单点故障。此类集群通常用于关键数据库、业务应用程序和其他不能容忍停机的系统。

HA集群的运行正常运行时间各不相同,并且可能从三个九(99.9%)到五个九不等,甚至超过承诺的系统年度正常运行时间百分比。如果HA系统的实施和维护成本低于您在系统停机时产生的费用,那么它对您的企业来说是值得的。

边界网关协议(BGP)是一种标准化的外部网关协议,旨在在Internet上的自治系统(AS)之间交换路由和可达性信息。BGP可以说是所有Internet协议中最重要的,因为它将数千个不同的Internet服务提供商(ISP)粘合在一起。

BGP保证网络的稳定性,保证路由器能够适应路由故障。它可以提供这样的功能,因为:

  • BGP从相邻的自治系统(AS)获取网络前缀可达性信息,同时每个子网向Internet通告其存在。BGP然后确保Ineternet中的所有路由器都知道这些子网。
  • BGP确定到网络前缀的最佳路由。BGP路由选择程序由本地路由器使用从相邻自治系统获得的前缀可达性信息执行。然后根据预设策略以及可达性信息确定最佳路由。
  • 除了其他协议之外,自治系统还可以使用内部版本的BGP通过其内部网络路由流量。这种技术称为本地或内部BGP(iBGP)。两者之间的主要区别在于,外部BGP(eBGP)运行在不同自治系统中的两个BGP路由器之间,而iBGP运行在同一自治系统中的两个BGP路由器之间。换句话说,iBGP服务是一种在单个数据中心区域内自动管理本地网络路由的方法。在本指南中,我们将使用OSI第4层故障转移解决方案创建一个基于本地BGP的高可用性集群。

    要遵循本指南,请确保您拥有:

  • 支持内部BGP路由的云供应商的用户帐户,或具有预配置BGP路由反射器的本地网络设置。我们将在本指南中使用CherryServers云基础设施。
  • 两台安装了Ubuntu20.04的服务器,因为HA集群的最小大小是一个双节点系统。
  • 可用于容错的虚拟IP地址(浮动IP、弹性IP等)。
  • 基本熟悉用于HA集群测试的ApacheWebServer(可选)。
  • 由于我们使用CherryServersCloud基础架构,第一步是创建CherryServers用户帐户。完成此操作后,您应该在您的帐户上创建启用BGP的项目。在项目创建过程中选择“激活BGP”选项以启动BGP会话跟踪:

    Cherry服务器BGP路由反射器现在已准备好从该项目中创建的任何服务器接收BGP会话信息。

    您现在已准备好为高可用性集群部署云基础设施。首先部署两台支持LocalBGP服务的服务器。您可以根据需要在专用服务器和智能VDS服务器之间进行选择。

    让我们部署两个按小时计费的SmartVDS服务器:

    接下来,您应该获得一个用于构建高可用性环境的虚拟IP地址。虚拟IP地址在业界有不同的名称,而在CherryServers中,它被称为浮动IP。让我们订购一个:

    至此,您应该拥有使用本地BGP创建高可用性集群所需的一切。您的项目中应该有两个活动服务器:

    以及不得分配给任何服务器的活动浮动IP地址:

    在您的服务器上设置BGP路由

    要使用本地BGP服务,您应该在服务器上安装BGP代理。我们将使用BIRD作为我们服务器的BGP路由守护进程。它允许您在服务器和CherryServersBGP反射路由器之间建立BGP会话。

    CherryServers为您提供了一个带有局部变量的帮助脚本,用于为您的每个服务器安装和配置BIRD。访问单个服务器并在网络-->本地BGP部分下找到帮助程序脚本:

    通过SSH登录服务器并将此脚本复制到服务器上的新文件中:

    chmodu+xconfigure-bgp.sh

    运行脚本以安装和配置BIRD服务。脚本完成后,将启动BGP会话以宣布IP地址并将路由通告到上游Cherry服务器BGP反射路由器。

    配置完第一台服务器后,通过SSH连接到第二台服务器并重复相同的步骤以在您的项目中启动两个BGP会话。

    即使BGP会话现在已建立,我们还没有为我们的BGP会话通告的网络接口配置IP地址。现在让我们指定将要公布给Cherry服务器BGP反射路由器的浮动IP地址。

    CherryServers为您提供了一个带有局部变量的帮助脚本,用于使用选定的浮动IP地址配置您的网络接口。访问单个服务器并在网络-->本地BGP部分下找到帮助程序脚本:

    通过SSH登录服务器并将此脚本复制到服务器上的新文件中:

    运行脚本在服务器上配置浮动IP地址。脚本完成后,您的浮动IP地址将定期公布给BGP反射路由器。这将使上游路由器能够通过本地BGP服务将流向此浮动IP地址的流量指向您的服务器。

    您可以通过运行以下命令确保已在服务器上成功配置本地BGP服务:

    如何使用本地BGP路由创建高可用性集群,本地bgp路由选择的过程

    完成第一台服务器的配置后,通过SSH连接到第二台服务器并重复相同的步骤,让两台服务器都公布您的浮动IP地址。

    您现在已经使用本地BGP服务成功配置了高可用性集群。您现在可以通过CherryServersClientPortal监控您的BGP会话和学习路由。

    打开网络-->本地BGP部分以获取有关本地BGP服务状态的最新信息:

    在左侧部分,您可以检查项目中是否有两个启用BGP的服务器。还有关于本地和远程AS编号的信息,以及Cherry服务器BGP反射路由器的IP地址。

    在右侧,您可以看到在您的服务器和BGP路由器之间建立的每个BGP会话的两个部分。更具体地说,有以下信息:

  • 下一跳——服务器的主机名及其IP地址
  • Pfx限制——路由器期望的已公布IP地址的数量。例如,如果您在项目中有两个浮动IP地址,您会看到其中的2/2是预期的。
  • BGP状态-BGP会话的状态,可以采用以下几个值:

  • 空闲——会话启动;
  • 连接——会话开始;
  • 活跃——会话活跃;
  • Established——会话已建立,正在传输数据;
  • 降级——会话仅与两个Cherry服务器BGP反射路由器中的一个建立
  • 现在是准备高可用性集群以进行测试的时候了。尽管有多种测试方法,但我们将安装ApacheWeb服务器并在每台服务器上创建不同的索引页面,以便能够跟踪当我们向刚刚配置的浮动IP地址发出HTTP请求时哪个服务器响应。

    现在让我们通过SSH登录到每个服务器并安装ApacheWeb服务器:

    aptupdate&&aptinstall-yapache2

    安装后Apache守护进程应该启动并运行。如果出现问题,您可以仔细检查我们的ApacheWeb服务器安装指南以解决问题。

    在第一台服务器上,让我们用自定义字符串覆盖默认的Apache索引页面"Hellofrommachine1":

    echo"Hellofrommachine1">/var/www/html/index.html

    在第二台服务器上用不同的字符串覆盖同一个文件"Greetingsfrommachine2":

    echo"Greetingsfrommachine2">/var/www/html/index.html

    现在,每次有人向第一台服务器发送HTTP请求时,您都会得到"Hellofrommachine1"响应,而第二台服务器将响应"Greetingsfrommachine2".

    您现在已准备好测试您的高可用性集群。

    打开一个新的终端窗口并查询浮动IP地址。使用默认每2秒重复一次curl查询的watch命令:

    watchcurl188.214.131.108

    您现在可以看到一条"Hellofrommachine1"消息,这意味着当您对浮动IP地址进行HTTP查询时,第一台服务器正在响应。

    现在重新启动机器1并查看响应消息如何变化:

    由于系统重启导致机器1暂时不可用,本地BGP服务将HTTP查询自动路由到机器2。

    如果您在客户端刷新BGP服务状态,您将看到以下输出:

    由于bgp-worker-1正在重新启动,其BGP会话已丢失,并且服务器此时没有连接路由器。

    如果您等待几分钟直到bgp-worker-1重新启动并再次刷新BGP服务状态,您应该会看到会话已自动重新建立:

    我们的curl查询的输出现在已更改为初始消息,因为BGP会话已重新建立:

    您现在已经在Cherry服务器上使用本地BGP服务成功部署和配置了一个高可用性集群。继续在它之上构建或将这个概念纳入您的生产系统,以使其在发生中断时更具弹性和可用性。

    标签:
    SSL加密有多重要(ssl加密的主要作用)
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!