官方文档:

https://www.vultr.com/docs/high-availability-on-vultr-with-floating-ip-and-bgp

https://www.vultr.com/docs/configuring-bgp-on-vultr

1、由于我们没有自己的IP段以及自己的BGP ASN号,那么就从官方租赁。

https://my.vultr.com/bgp/

用上面的表格填写资料

这里的路由表宣告,我选择的是Default Only,默认出口只有一个的时候,就选择这个。很多出口可以选择Full Table模式。这里我也不是很清楚。

对了。收到BGP的ASN号和密码以后,所有的VPS需要重启一次,才可以使用BGP。

2、关闭防火墙,关闭enforce

systemctl stop firewalld

sed -i s#SELINUX=enforcing#SELINUX=disable#g /etc/selinux/config

getenforce

3、安装bird

yum -y install bird

yum install net-tools

4、假设第一台服务器的VIP是1.2.3.4,IP是1.1.1.1,第二台服务器的IP是2.2.2.2,当前测试环境为centos7.x

VIP需要你自己去vultr自己租赁一个公网IP,这个IP不可以绑定到其他机器!

第一台服务器的配置:设置开机启动以下命令:chmod +x /etc/rc.d/rc.local把下面的命令,写到/etc/rc.d/rc.local创建一个回环接口,dummy1,关闭回环接口的命令为rmmod dummyip link add dev dummy1 type dummy
ip link set dummy1 up
ip addr add dev dummy1 1.2.3.4/32查看回环接口的IP:
# 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

5、备份bird默认配置

mv /etc/bird.conf /etc/bird.conf.bak

vi /etc/bird.conf

log "/var/log/bird" all;

router id 1.1.1.1;

protocol device
{
    scan time 5;
}

protocol direct
{
    interface "dummy1";
}

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

YOURAS and YOURPASSWORD 是你之前第一步提交工单,vultr给你的ASN号,以及密码。

6、设置开机启动bird服务:systemctl enable bird.service

这边有一个关键的步骤,service bird start,启动服务,会报错。提示你:unable to connect to server control socket (/var/run/bird.ctl): connection refused

我插了下系统日志/var/log/messages,提示对日志文件/var/log/bird没有权限,所以你这边要先去创建一个这个文件,然后给它赋权777,chmod 777 /var/log/bird

还有一种可能性,就是你的配置文件是错的,那么用下面两条命令可以检查:

bird -p检查你的配置是否有错误服务启动以后,
birdc configure可以保存你的配置
It is now working, I am editing the configuration, and check if they all
fine by "", then after I do "birdc configure" to save the
configuration in bird.conf.

7、查看服务bird日志:

cat /var/log/bird

8、查看bgp状态,要确认有Established状态

Start the BIRD service service bird start, and wait a few seconds. Check that the BGP session has been established:

# 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:      169.254.169.254
    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

If everything is working properly, you should see "Established" next to BGP state. A common problem here is having a firewall blocking the BGP port (TCP 179). Also, if this instance was deployed before Vultr set up your BGP session, it will need to be restarted via the control panel before BGP is available. If you're still having problems, look at /var/log/bird for further details

查看bgp路由表

birdc show route9、关闭一个dummy接口ip link set dummy1 down10、我们现在来配置第二台服务器:前面的步骤都是一样,唯独在修改bird的配置文件的时候有点区别:vi /etc/bird.conf

log "/var/log/bird" all;

router id 2.2.2.2;

protocol device
{
scan time 5;
}

protocol direct
{
interface "dummy1";
}

protocol bgp vultr
{
local as<<YOURAS>>;

source address 2.2.2.2;
import none;
export all;
graceful restart on;
next hop self;
multihop 2;
neighbor 169.254.169.254 as 64515;
password
"<<YOURPASSWORD>>";

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

11、现在可以测试了

一直长ping VIP 1.2.3.4,然后shutdown第一台服务器的

ip link set dummy1 down

,ping还是可以继续,并不会断。

vultr 上实现高可用冗余浮动公网IP出口(使用BIRD+BGP协议)High Availability on Vultr with Floating IP and BGP的更多相关文章

  1. Azure 上的高可用概念

    更多内容,添加公众号关注: 场景一: 某智能家居厂家,用户喊出“小X同学,帮我扫地”后,服务器宕机了,扫地机器人不能立即启动,于是,用户可能再连续喊几次后,无奈又习惯的按下了扫地机器人的启动按钮. 场 ...

  2. hadoop在zookeeper上的高可用HA

    (参考文章:https://www.linuxprobe.com/hadoop-high-available.html) 一.技术背景 影响HDFS集群不可用主要包括以下两种情况:一是NameNode ...

  3. Pod在多可用区worker节点上的高可用部署

    一. 需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布在同一个可 ...

  4. 在 Kubernetes 上运行高可用的 Kafka 集群

    转载自:https://www.qikqiak.com/post/deploy-kafka-ha-on-k8s/ Apache Kafka 是目前最流行的分布式消息发布订阅系统,虽然 Kafka 非常 ...

  5. MHA-Atlas-MySQL高可用(上)

    MHA-Atlas-MySQL高可用(上) 链接:https://pan.baidu.com/s/17Av92KQnJ81Gc0EmxSO7gA 提取码:a8mq 复制这段内容后打开百度网盘手机App ...

  6. hype-v上centos7部署高可用kubernetes集群实践

    概述 在上一篇中已经实践了 非高可用的bubernetes集群的实践 普通的k8s集群当work node 故障时是高可用的,但是master node故障时将会发生灾难,因为k8s api serv ...

  7. Linux下实现高可用软件-Keepalived基础知识梳理

    Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能.因此,Keepali ...

  8. MySQL高可用架构之MHA

    简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是 ...

  9. MySQL的高可用设计方案的记录

    一.看下常用的MySQL的高可用方案: 对上图的说明: 1)HeartBeat通过串口线或者以太网网线直连网卡对对端的服务做健康检查,并负责执行Drbd,MySQL,vip等资源的自动切换. 2)da ...

随机推荐

  1. Myelipse中xml约束文件的导入(以spring为例)

    为了在电脑处于未联网状态下,beans.xml中书写标签具有提示功能,需要在电脑本地导入约束文件,下面上图 注意:将location后缀添加到key中beans的后面 注意:导入 context,ao ...

  2. IDEA 热部署- 自动编译设置

    原文:https://www.cnblogs.com/TechSnail/p/7690829.html    &&   https://blog.csdn.net/qq_3129357 ...

  3. 通过阻止 touchstart 事件,解决移动端的 BUG

    在 iOS10 下,即使设置了 meta 标签的 user-scalable=no 依然不能阻止用户缩放. 解决此 BUG 的方法是阻止 PC 事件: document.addEventListene ...

  4. Centos7安装teamviewer 32/64位

    centos7安装teamviewer teamviewer安装包,自己去官网下吧,不用找了,估摸着就没有Centos7 64位的 所以直接下centos teamviewer 32位那个rpm包吧 ...

  5. SCS Characteristics

    Each SCS is an autonomous web application. For the SCS's domain, all data, the logic to process that ...

  6. 微软Azure通知中心 (Azure Notification Hubs)

    Azure Notification Hubs 提供简单的方法从后台(azure或者on-promise)去发送通知在不同的平台上面(iOS, Android, Windows, Kindle, Ba ...

  7. 动态quartz新增、修改、删除

    1.定义job导出类 public class MyQuartzJob implements Job { private static Logger logger = LoggerFactory.ge ...

  8. redmine和jenkins的ldap登录设置

    工具: softeera LDAP browser 流程: Authentication modes » test Name * Host * Port *  LDAPS Account Passwo ...

  9. 微信小程序学习之for循环

    一.使用自定义创建的json数据 1. 创建微信小程序项目后 在wxml文件中增加for循环 <block wx:for="{{posts_key}}" wx:for-ite ...

  10. Golang 端口复用测试

    先给出结论: 同一个进程,使用一个端口,然后连接关闭,大约需要30s后才可再次使用这个端口. 测试 首先使用端口9001连接服务端,发送数据,然后关闭连接,接着再次使用端口9001连接服务端,如果连接 ...