vultr 上实现高可用冗余浮动公网IP出口(使用BIRD+BGP协议)High Availability on Vultr with Floating IP and BGP
官方文档:
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的更多相关文章
- Azure 上的高可用概念
更多内容,添加公众号关注: 场景一: 某智能家居厂家,用户喊出“小X同学,帮我扫地”后,服务器宕机了,扫地机器人不能立即启动,于是,用户可能再连续喊几次后,无奈又习惯的按下了扫地机器人的启动按钮. 场 ...
- hadoop在zookeeper上的高可用HA
(参考文章:https://www.linuxprobe.com/hadoop-high-available.html) 一.技术背景 影响HDFS集群不可用主要包括以下两种情况:一是NameNode ...
- Pod在多可用区worker节点上的高可用部署
一. 需求分析 当前kubernetes集群中的worker节点可以支持添加多可用区中的ECS,这种部署方式的目的是可以让一个应用的多个pod(至少两个)能够分布在不同的可用区,起码不能分布在同一个可 ...
- 在 Kubernetes 上运行高可用的 Kafka 集群
转载自:https://www.qikqiak.com/post/deploy-kafka-ha-on-k8s/ Apache Kafka 是目前最流行的分布式消息发布订阅系统,虽然 Kafka 非常 ...
- MHA-Atlas-MySQL高可用(上)
MHA-Atlas-MySQL高可用(上) 链接:https://pan.baidu.com/s/17Av92KQnJ81Gc0EmxSO7gA 提取码:a8mq 复制这段内容后打开百度网盘手机App ...
- hype-v上centos7部署高可用kubernetes集群实践
概述 在上一篇中已经实践了 非高可用的bubernetes集群的实践 普通的k8s集群当work node 故障时是高可用的,但是master node故障时将会发生灾难,因为k8s api serv ...
- Linux下实现高可用软件-Keepalived基础知识梳理
Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能.因此,Keepali ...
- MySQL高可用架构之MHA
简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是 ...
- MySQL的高可用设计方案的记录
一.看下常用的MySQL的高可用方案: 对上图的说明: 1)HeartBeat通过串口线或者以太网网线直连网卡对对端的服务做健康检查,并负责执行Drbd,MySQL,vip等资源的自动切换. 2)da ...
随机推荐
- Linq中left join之多表查询
using System; using System.Collections; using System.Collections.Generic; using System.Data; using S ...
- 记一次服务器路由跟踪 (2019-01-23 TODO)
记一次服务器路由跟踪 有用户反馈网站 无法访问. 现象如下: ping 没有反馈,确认了可以 ping 通其它的网站. tracert 跟踪到服务器商的内部就没的反应了. 同样一家的服务器商,另外一台 ...
- LOJ 2339 「WC2018」通道——边分治+虚树
题目:https://loj.ac/problem/2339 两棵树的话,可以用 CTSC2018 暴力写挂的方法,边分治+虚树.O(nlogn). 考虑怎么在这个方法上再加一棵树.发现很难弄. 看了 ...
- hanlp和jieba等六大中文分工具的测试对比
本篇文章测试的哈工大LTP.中科院计算所NLPIR.清华大学THULAC和jieba.FoolNLTK.HanLP这六大中文分词工具是由 水...琥珀 完成的.相关测试的文章之前也看到过一些,但本篇 ...
- centos中nodejs npm安装cordova
1.安装cordova npm install -g cordova --registry https://registry.npm.taobao.orgnpm install -g ionic -- ...
- piwik高负载加速之切换session存储位置
默认情况下,piwik的session是存储于根目录下面的tmp/sessions/路径下面的.而官方文档里面说,如果由于本地硬盘的原因,这种设置可能会导致系统被变慢,这在高负载系统应用中可能是不可以 ...
- 阅读<All Digital VCXO Replacement for Gigabit Transceiver Applications>笔记---XAPP589
阅读<All Digital VCXO Replacement for Gigabit Transceiver Applications>笔记---XAPP589 1. 2. 外部设备能为 ...
- 把指定的字符串翻译成 pig latin。
freecodecamp上的算法题: 把指定的字符串翻译成 pig latin. Pig Latin 把一个英文单词的第一个辅音或辅音丛(consonant cluster)移到词尾,然后加上后缀 & ...
- oracle 存储过程、游标参考实例
create or replace procedure INIT_DICT_QUEUECODE(p_queueId int,p_paramType in varchar2,p_queenName in ...
- WebGL和ThreeJs学习5--ThreeJS基本功能控件
Threejs 2017年6月6日 15:06 Stats: new Stats();性能监视器,性能测试的方法,引入 Stats.js http://www.hewebgl.com ...