理解 OpenStack 高可用(HA):Neutron 分布式虚拟路由

Posted 开源云中文社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了理解 OpenStack 高可用(HA):Neutron 分布式虚拟路由相关的知识,希望对你有一定的参考价值。

Neutron 作为 OpenStack 一个基础性关键服务,高可用性(HA)和扩展性是它的基本需求之一。对 neutron server 来说,因为它是无状态的,我们可以使用负载均衡器(Load Balancer)比如 HAProxy 来实现其 HA 和扩展性;对于 Neutron L3 Agent 来说,一个带外(Out-of-band)的 HA 实现方案可以使用 PeaceMaker,但是这会大大增加系统的复杂性,另一个就是之前介绍的 VRRP,但是它也存在不少问题:


(1)需要额外的硬件来组成 VRRP 组,这会带来成本增加
(2)它无法解决扩展性问题,东-西和南-北网络流量都需要经过活动的 VRRP Router。而 Juno 中引入的 DVR 功能正是用来解决这两点不足的。


  1. 基础知识

1.1 路由 (Routing)

1.1.1 路由策略 (使用 ip rule 命令操作路由策略数据库)


ip rule 命令:

  • Usage: ip rule [ list | add | del ] SELECTOR ACTION (add 添加;del 删除; llist 列表)

  • [ flowid CLASSID ]

  • TABLE_ID := [ local | main | default | new | NUMBER ]


例子:


在 Linux 系统启动时,内核会为路由策略数据库配置三条缺省的规则:

  • 32766 匹配任何条件 查询路由表main(ID 254) 路由表main(ID 254)是一个通常的表,包含所有的无策略路由。系统管理员可以删除或者使用另外的规则覆盖这条规则。

  • 32767 匹配任何条件 查询路由表default(ID 253) 路由表default(ID 253)是一个空表,它是为一些后续处理保留的。对于前面的缺省策略没有匹配到的数据包,系统使用这个策略进行处理。这个规则也可以删除。


不要混淆路由表和策略:规则指向路由表,多个规则可以引用一个路由表,而且某些路由表可以没有策略指向它。如果系统管理员删除了指向某个路由表的所有规则,这个表就没有用了,但是仍然存在,直到里面的所有路由都被删除,它才会消失。


1.1.2 路由表 (使用 ip route 命令操作静态路由表)

所谓路由表,指的是路由器或者其他互联网网络设备上存储的表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳的传输路径,并将该数据有效地传送到目的站点。由此可见,选择最佳路径的策略即路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用,表中包含的信息决定了数据转发的策略。打个比方,路由表就像我们平时使用的地图一样,标识着各种路线,路由表中保存着子网的标志信息、网上路由器的个数和下一个路由器的名字等内容。路由表根据其建立的方法,可以分为动态路由表和静态路由表。


linux 系统中,可以自定义从 1-252个路由表,其中,linux系统维护了4个路由表:

  • 0#表: 系统保留表

  • 253#表: defulte table 没特别指定的默认路由都放在改表

  • 254#表: main table 没指明路由表的所有路由放在该表


路由表的查看可有以下二种方法:

  • ip route list table table_number

  • ip route list table table_name


路由表序号和表名的对应关系在 /etc/iproute2/rt_tables 文件中,可手动编辑。


路由表添加完毕即时生效,下面为实例:

  • ip route add default via 192.168.1.1 table 1 在一号表中添加默认路由为192.168.1.1

  • ip route add 192.168.0.0/24 via 192.168.1.2 table 1 在一号表中添加一条到192.168.0.0网段的路由为192.168.1.2


以下面的路由表为例:




各字段说明:


  • destination:目的网段

  • interface:到达该目的地的本路由器的出口ip

  • gateway: 下一跳路由器入口的 ip,路由器通过 interface 和 gateway 定义一调到下一个路由器的链路。通常情况下,interface 和 gateway 是同一网段的metric 跳数,该条路由记录的质量,一般情况下,如果有多条到达相同目的地的路由记录,路由器会采用metric值小的那条路由


根据子网掩码,可以将路由分为三种类型:



理解 OpenStack 高可用(HA):Neutron 分布式虚拟路由(一)







设置和查看路由表都可以用 route 命令,设置内核路由表的命令格式是:route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]


其中:


比如:

  • route add 0.0.0.0 mask 0.0.0.0 192.168.12.1

  • route add 10.41.0.0 mask 255.255.0.0 10.27.0.1 metric 7


关于 src 属性:




本文转载自:http://geek.csdn.net/news/detail/75200


以上是关于理解 OpenStack 高可用(HA):Neutron 分布式虚拟路由的主要内容,如果未能解决你的问题,请参考以下文章

OpenStack Mitaka HA高可用搭建

openstack 高可用(HA)- Mariadb

高可用OpenStack(Queen版)集群-4.keystone集群

高可用OpenStack(Queen版)集群-5.Glance集群

高可用OpenStack(Queen版)集群-6.Nova集群

高可用OpenStack(Queen版)集群-8.Horizon集群