具有浮动IP和BGP的Vultr的高可用性

Vultr允许您组合我们的两个功能(浮动IP和BGP)以实现高可用性。

设定

您将需要在相同位置的两个实例和一个浮动IP。您还需要打开一个票证,请求在用于浮动IP的专用ASN上设置BGP。(如果您正在公共ASN上与我们一起运行BGP,则也可以使用此功能)

您还需要一个BGP守护程序,我们建议使用BIRD。通常可以通过操作系统的程序包管理器来获取BIRD。

我们将以192.0.2.10/32浮动IP为例,并198.51.100.99以其中一个实例的IP地址为例。

注意:你应该不会通过控制面板附加浮动IP任何特定的实例。如果通过控制面板连接了IP,则高可用性将无法正常运行。

IP配置

我们将使用Linux的“虚拟”接口来绑定IP地址。您可以使用以下命令创建它:

ip link add dev dummy1 type dummy
ip link set dummy1 up
ip addr add dev dummy1 192.0.2.10/32

确认此配置正确:

# ip addr show dev dummy1
5: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether ba:23:57:2c:ad:bc brd ff:ff:ff:ff:ff:ff
    inet 192.0.2.10/32 scope global dummy1

BIRD配置

接下来,我们将配置BIRD。这些说明在主机操作系统之间略有不同,请参阅本节底部的脚注。

创建一个/etc/bird.conf文件:

log "/var/log/bird" all;

router id 198.51.100.99;

protocol device
{
    scan time 60;
}

protocol direct
{
    interface "dummy1";
}

protocol bgp vultr
{
    local as <<YOURAS>>;
    source address 198.51.100.99;
    import none;
    export all;
    graceful restart on;
    next hop self;
    multihop 2;
    neighbor 169.254.169.254 as 64515;
    password "<<YOURPASSWORD>>";
}

您需要更新YOURASYOURPASSWORD并为您的帐户分配AS号和BGP密码。可以在Vultr控制面板中实例页面的BGP选项卡上找到此信息。

该配置文件将告诉BIRD查找dummy1接口,并通过BGP将其找到的任何IP通告给我们的基础架构。这意味着实例一运行,您就将开始接收流量,并且一旦崩溃,流量将停止。

FreeBSD配置

如果您将FreeBSD用作主机而不是Linux,则有一些区别。

  1. 需要重新编译内核以支持TCP MD5签名。这些说明不在本文的讨论范围之内。如果您的BSD内核不支持TCP MD5签名,您将在BIRD日志中看到以下输出。

    $ cat /var/log/bird
    2017-12-15 01:35:00 <INFO> Started
    2017-12-15 01:35:00 <ERR> vultr: Socket error: Kernel does not support TCP MD5 signatures
    
  2. BIRD配置文件位于/usr/local/etc/bird.confBSD上。

验证BGP连接

启动BIRD服务service bird start,然后等待几秒钟。检查BGP会话是否建立:

# birdc show proto all vultr
BIRD 1.5.0 ready.
name     proto    table    state  since       info
vultr    BGP      master   up     2016-01-15  Established
  Preference:     100
  Input filter:   REJECT
  Output filter:  ACCEPT
  Routes:         0 imported, 1 exported, 0 preferred
  Route change stats:     received   rejected   filtered    ignored   accepted
    Import updates:      255919581          0  255919581          0          0
    Import withdraws:      1905513          0        ---  257825094          0
    Export updates:              1          0          0        ---          1
    Export withdraws:            0        ---        ---        ---          0
  BGP state:          Established
    Neighbor address: 169.254.169.254
    Neighbor AS:      YOURAS
    Neighbor ID:      x.x.x.x (Host IP)
    Neighbor caps:    refresh enhanced-refresh restart-able AS4
    Session:          external multihop AS4
    Source address:   198.51.100.99
    Hold timer:       184/240
    Keepalive timer:  30/80

如果一切正常,您应该在BGP状态旁边看到“已建立”。这里的常见问题是防火墙阻止了BGP端口(TCP 179)。另外,如果在Vultr设置BGP会话之前部署了该实例,则需要在BGP可用之前通过控制面板重新启动它。如果仍有问题,请/var/log/bird查看更多详细信息。

测试中

您可以使用以下方法确保BIRD将路由发布给您的浮动IP:

# birdc show route
BIRD 1.5.0 ready.
192.0.2.10/32    dev dummy1 [direct1 2015-12-29] * (240)

为了确认它是否正常工作,您可以禁用dummy1接口(带有ip link set dummy1 down),然后重复该show route命令。BIRD将注意到该接口已消失,并将撤回路由。

生产用途

为了确保您的站点保持正常运行,您需要一台以上的服务器运行相同的BGP配置。如果任一实例发生故障,流量将动态重定向到其他实例之一。在特定位置使用此配置可​​以运行的实例数量没有限制,但是在任何给定时间只有一个实例处于活动状态。

在我们的某些位置,流量将在您以此方式配置的所有实例之间随机分配。最终,将以这种方式配置所有位置。如果要让一个实例获得所有流量(除非它处于脱机状态),则希望使用前缀来引导流量。

例如,如果您有两个实例:

  • 实例A-主实例,应正常接收所有流量
  • 实例B-备份实例,仅当实例A关闭时才应接收流量

为此,将以下部分添加到实例B的BIRD配置中,如下所示:

export filter {
    bgp_path.prepend(YOURAS);
    accept;
};

这样可以确保流量始终流向实例A,除非它掉线了。

如果您有一个实例C,那么它仅在A和B断开时才接收流量,您只需添加另一条'bgp_path.prepend'行即可。

IPv6设置

尽管您将使用“ bird6”代替“ bird”,并使用“ birdc6”代替“ birdc”,但此过程也可用于IPv6保留子网。

留下評論

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息