路由器提供项目 VM 实例与更广泛网络的连接。此路由器由所有项目网络共享。因为只有一个路由器,所以项目网络无法使用重叠的 IP 地址。
该路由器在连接路由器与外部网络的接口上执行双向网络地址转换 (network address translation, NAT)。项目可以有许多浮动 IP(公共 IP),具体数量取决于项目需要或浮动 IP 配额所允许的数量。这些浮动 IP 与需要外部连接的 VM 实例关联。
创建路由器需要配置 Neutron L3 代理。此代理将自动在分配给 Nova 实例的地址和浮动 IP 地址之间创建一对一的 NAT 映射。L3 代理还支持专用网络之间的通信。
缺省情况下,会禁用同一个项目的专用网络之间的路由。要更改此行为,请将 /etc/neutron/l3_agent.ini 配置文件中的 allow_forwarding_between_networks 设置为 True。设置该参数后,重新启动 neutron-l3-agent SMF 服务。
此过程介绍了如何针对外部网络创建路由器。部分步骤需要编辑配置文件。因此,在此过程中使用终端窗口比使用 Horizon 系统信息显示板更方便。
在安装了 Neutron 服务的节点上执行以下步骤。本文档根据前面章节所述样例体系结构定位控制器节点上的服务。
开始之前
确保如如何安装并配置 Neutron中所述完成了 Neutron 的配置。
controller# svcadm enable -rs ipfilter
controller# ipadm set-prop -p forwarding=on ipv4
controller# export OS_USERNAME=neutron controller# export OS_PASSWORD=service-password controller# export OS_TENANT_NAME=service controller# export OS_AUTH_URL=http://$CONTROLLER_ADMIN_NODE:5000/v2.0
controller# neutron router-create router-name
该命令显示路由器名称及对应的 ID。使用此 ID 在下一步中更新配置文件。
controller# svcadm enable neutron-l3-agent
在将外部网络添加到路由器之后,可以添加关于路由器的更多信息。
controller# neutron router-show router-name
此示例说明如何针对外部网络创建路由器。
controller# svcadm enable -rs ipfilter controller# ipadm set-prop -p forwarding=on ipv4 controller# export OS_USERNAME=neutron controller# export OS_PASSWORD=service-password controller# export OS_TENANT_NAME=service controller# export OS_AUTH_URL=http://$CONTROLLER_ADMIN_NODE:5000/v2.0 controller# neutron router-create ext-router Created a new router: +-----------------------+--------------------------------------+ | Field | Value | +-----------------------+--------------------------------------+ | admin_state_up | True | | external_gateway_info | | | id | f89b24ed-42dd-48b0-8f4b-fd41887a3370 | | name | ext-router | | status | ACTIVE | | tenant_id | 7d1caf0854b24becb28df5c5cabf72cc | +-----------------------+--------------------------------------+
此时,更新 /etc/neutron/l3_agent.ini 文件中的 router_id。
router_id = f89b24ed-42dd-48b0-8f4b-fd41887a3370
然后,启用 L3 代理服务。
controller# svcadm enable neutron-l3-agent