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

本文深入分析OpenStack Neutron的DVR(分布式虚拟路由)高可用性,包括Juno和Kilo版本的要求,DVR的安装配置,以及DVR Router的创建和网络包走向。详细解释了SNAT、FIP(浮动IP)的工作流程,并探讨了不同场景下的虚机通信路径。
摘要由CSDN通过智能技术生成

在上一篇理解OpenStack 高可用(HA):Neutron 分布式虚拟路由(上)中,详细介绍了基础知识和Neutron的传统,本文详进行分析。

3. 安装和功能分析

3.1 安装和配置

Juno 版本中 DVR 的要求如下:

  • 使用 ML2 plugin
  • 使用 L2pop mechanism driver
  • 使用 Openvswitch mechanism driver, 安装 OVS agent 在所有的计算节点上
  • 所有的计算节点连接外网
  • Juno 中只支持 Tunnel 虚拟网络模式 (VXLAN or GRE)。 Kilo 版本中会增加 VLAN 模式的支持。

3.1.1 安装

使用两个结算节点。在每个计算节点上安装并配置 L3 Agent:

(1)修改系统配置


root@compute2:/var/log/nova# vi /etc/sysctl.conf
root@compute2:/var/log/nova# sysctl -p
net.ipv4.ip_forward = 1
net.ipv4.conf.all.rp_filter = 0
net.ipv4.conf.default.rp_filter = 0

(2)安装 neutron-l3-agent: apt-get install neutron-l3-agent

(3)增加一块访问外网的网卡 eth3

(4)创建 OVS bridge:ovs-vsctl add-br br-ex

(5)增加新的网卡到该 bridge 上:ovs-vsctl add-port br-ex eth3

(6)配置 L3 Agent

interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
use_namespaces = True
external_network_bridge = br-eth3

(7)配置 Metadata Agent

3.1.2 配置 DVR

控制节点 /etc/neutron/neutron.conf router_distributed = True 注意:需要设置 l3_ha = false 来禁用 VRRP
计算节点

/etc/neutron/l3_agent.ini

/etc/neutron/plugins/ml2/ml2_conf.ini

agent_mode = dvr

enable_distributed_routing = True

 
网络节点

/etc/neutron/l3_agent.ini

/etc/neutron/plugins/ml2/ml2_conf.ini

agent_mode = dvr_snat

enable_distributed_routing = True

 

注意还需要配置使用 l2_population。

对普通用户来说,neutron 会根据管理员在控制节点上的配置项 router_distributed 的值,来决定是创建普通 Router 还是 DVR Router;对管理员来说,还可以使用 –distributed {True,False} 参数来指定是否创建 DVR 模式的 router。

经过以上配置后的 neutron agent如下。可以看到,除了网络节点外,所有的计算介绍上也部署了 L3 Agent 和 Metadata Agent。

s1@controller:~$ neutron agent-list
+--------------------------------------+--------------------+----------+-------+----------------+---------------------------+
| id                                   | agent_type         | host     | alive | admin_state_up | binary                    |
+--------------------------------------+--------------------+----------+-------+----------------+---------------------------+
| 04c360d0-3066-4f04-9af2-d4ef8586ad2b | L3 agent           | network  | :-)   | True           | neutron-l3-agent          |
| 2ef04905-4a37-4de8-a8f0-9c6488a592b7 | Open vSwitch agent | network  | :-)   | True           | neutron-openvswitch-agent |
| 3f307355-2167-4b15-affa-9f296f698752 | DHCP agent         | network  | :-)   | True           | neutron-dhcp-agent        |
| 54609006-a769-4b17-b175-1a834e6e7a26 | Open vSwitch agent | compute1 | :-)   | True           | neutron-openvswitch-agent |
| 90c87c01-1cd1-48b0-8369-30f44c058574 | Loadbalancer agent | network  | :-)   | True           | neutron-lbaas-agent       |
| 951b8efc-1f2c-4a51-84d1-2261ff31c12c | Metadata agent     | compute2 | :-)   | True           | neutron-metadata-agent    |
| 99d13b27-89f8-4abe-bc03-3f69f5e7e0cc | Metadata agent     | network  | :-)   | True           | neutron-metadata-agent    |
| aa8cf021-7f3d-4667-9d92-4d77d4c4fb59 | L3 agent           | compute2 | :-)   | True           | neutron-l3-agent          |
| beec232b-48d7-4424-83e2-8cc4e49ec339 | L3 agent           | compute1 | :-)   | True           | neutron-l3-agent          |
| d65bbede-4b1d-4914-8c8b-ab591975828f | Metadata agent     | compute1 | :-)   | True           | neutron-metadata-agent    |
| e3f83dcf-27f2-4c91-bead-adebcab1e3c7 | Open vSwitch agent | compute2 | :-)   | True           | neutron-openvswitch-agent |
+--------------------------------------+--------------------+----------+-------+----------------+---------------------------+

3.2 DVR Router 流程

3.2.1 创建 DVR Router

(1)创建如下的 DVR Router:

图片描述

可以看到该 router 被分布在neutron network 节点和计算节点上:

s1@controller:~$ neutron l3-agent-list-hosting-router dvr-r1
+--------------------------------------+----------+----------------+-------+
| id                                   | host     | admin_state_up | alive |
+--------------------------------------+----------+----------------+-------+
| 04c360d0-3066-4f04-9af2-d4ef8586ad2b | network  | True           | :-)   |
| beec232b-48d7-4424-83e2-8cc4e49ec339 | compute1 | True           | :-)   |
+--------------------------------------+----------+----------------+-------+

(2)网络节点上,创建了 SNAT network namespace。该 netns 中,对router 的每一个网络,都有一个 qg 或者 sg interface:

root@network:/home/s1# ip netns exec snat-e8f12f7a-6938-4e65-88c4-97e4cb211b27 ip addr
42: qg-32878e35-a2: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default #对应 port 1,连接外网
    link/ether fa:16:3e:4a:40:48 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.115/24 brd 192.168.1.255 scope global qg-32878e35-a2
       valid_lft forever preferred_lft forever
44: sg-4f80ec3d-f2: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default #对应 port 2,连接内网1
    link/ether fa:16:3e:82:a9:ca brd ff:ff:ff:ff:ff:ff
    inet 81.1
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值