注意:要求网络环境有一定要求,需要组播报文不被抑制才可以
具体限制场景:keepalived的限制场景
使用keepalied来实现vip。keepalived通过vrrp进行状态检测,leader选举,故障切换;同时通过发送garp报文来宣告vip,谁选中了leader,谁就发送garp去宣告vip
具体参考:keepalived原理与架构系列
每个node上运行一个agent,例如:gobgpd。然后不断的向交换机宣告一个vip,证明自己是此vip的后端,也即:此vip的流量转发到这里来。然后多个node都进行bgp宣告,此时可以做到vip的容灾,且当每个bgp路径的成本一致时,可以做到流量的负载均衡
bgp选路原则:
当到达同一目的地存在多条路由时,BGP依次对比下列属性来选择路由:
1、优选协议首选值(PrefVal)最高的路由。
协议首选值(PrefVal)是华为设备的特有属性,该属性仅在本地有效。
2、优选本地优先级(Local_Pref)最高的路由。
如果路由没有本地优先级,BGP选路时将该路由按缺省的本地优先级100来处理。
3、依次优选手动聚合路由、自动聚合路由、network命令引入的路由、import-route命令引入的路由、从对等体学习的路由。
4、优选AS路径(AS_Path)最短的路由。
5、依次优选Origin类型为IGP、EGP、Incomplete的路由。
6、对于来自同一AS的路由,优选MED值最低的路由。
7、依次优选EBGP路由、IBGP路由、LocalCross路由、RemoteCross路由。
8、优选到BGP下一跳IGP度量值(metric)最小的路由。
在IGP中,对到达同一目的地址的不同路由,IGP根据本身的路由算法计算路由的度量值。执行bestroute igp-metric-ignore命令后,BGP选路时忽略IGP Metric的比较。
9、优选Cluster_List最短的路由。
缺省情况下,BGP在选择最优路由时Cluster-List优先于Router ID。配置bestroute routerid-prior-clusterlist命令后,BGP在选择最优路由时Router ID优先于Cluster-List。
10、优选Router ID最小的设备发布的路由。
如果路由携带Originator_ID属性,选路过程中将比较Originator_ID的大小(不再比较Router ID),并优选Originator_ID最小的路由。
11、优选从具有最小IP Address的对等体学来的路由。
形成BGP等价负载分担的条件是“BGP选择路由的策略”的1至8条规则中需要比较的属性完全相同。
BGP负载分担:
BGP只能建立备份路由,不能建立等价路由.,但当到达同一目的地址存在多条等价路由时,可以通过BGP等价负载分担实现均衡流量的目的。形成BGP等价负载分担的条件是“BGP选择路由的策略”的1至8条规则中需要比较的属性完全相同。
具体参考:bgp原理系列
每个node上运行一个agent,通过不断检测节点状态与节点上服务的状态来判断本节点是不是健康节点,如果是则像etcd的特定key中写入自己的ip,且为key设置过期时间,如果发现此key已经有ip了,且ip不是自己,则不需要重复写入,证明有其它存活节点。如果ip是自己,则对key进行续约,如果发现自己不健康,且key中的ip是自己,则进行删除。