Neutron的服务service与代理agent

通常Neutron环境由运行在一个或多个节点上的多个服务service和代理agent组成(尽管某些特殊环境可能不需要任何代理)。每个服务都提供了一些网络或API接口。特别感兴趣的有以下几个:

  • neutron-server. 提供API端点以及数据库访问点。它通常在称为控制器Controller的节点上运行。

  • Layer2 agent代理. 通过Open vSwitch, Linuxbridge或其它厂商的特殊技术为project网络提供分段和隔离的功能。 L2 agent 代理应在每个需要提供连接和保护功能的虚拟接口的节点上运行(通常是计算节点和网络节点)。

  • Layer3 agent. 运行在网络节点上,并提供东西向East-West和南北向North-South路由功能,外加一些先进服务功能,如FWaaS或VPNaaS。

在本文档中,我们将运行在每个节点的所有服务service、服务器server和代理agent统称为服务"service"。

入口点 Entry points

服务的入口点在setup.cfg文件的"console_scripts"段定义。这些入口点通常应该指向位于neutron/cmd/…路径下的main()函数。

注意:一些现存的vendor/plugin代理仍然在其它位置维护入口点。鼓励负责这些代理的开发人员应用以上的规则指南。

与 Eventlet 交互

Neutron广泛利用eventlet库为其服务提供异步的并发模型。为了正确使用它,以下内容应该记住。

如果服务使用了eventlet库,那么它不应该直接调用eventlet.monkey_patch(),而是在neutron/cmd/eventlet/…下维护其入口点main()。如果是这样,标准Python库将为入口点上的服务自动修补(monkey修补是在 python package file 中完成的。

注意:入口点’main()'函数可能只是间接位置,其指向一个位于他处的真正调用,类似于参考服务(referrence service)中的实现。如参考服务:DHCP、L3和neutron-server。

有关代码树建立背后的基本原理信息,请参见文档 the corresponding cross-project spec

连接到数据库 Connecting to the Database

只有neutron-server连接到neutron数据库。代理可能永远不会直连到数据库,因为这会破坏滚动升级能力。

配置选项 Configuration Options

除了数据库访问之外,配置选项也在neutron-server和agent之间分隔。服务和代理都可以加载neutron.conf文件,因为这个文件包含有内部Neutron RPCs的oslo.messaging配置,也可能包含特定于主机的配置,如文件路径。此外,neutron.conf文件包含数据库、Keystone、Nova凭据和仅供neutron-server使用的端点。

此外,neutron-server还可以加载插件特定的配置文件。agent不应该这样做。因为插件配置主要是站点范围的选项,而且插件为Neutron提供持久层,agent
应被指示为通过RPC作用于这些值。

每个代理都可以有自己的配置文件。这个文件应该在主文件neutron.conf之后加载,所有代理配置具有高优先级。agent特定的配置文件可能包含因Neutron部署中因主机不同而不相同的配置,如对于L3代理的external_network_bridge配置。如果任何代理需要访问超出Neutron RPC的外部服务,这样的端点应定义在agent特定配置文件中(如,metadata agent的nova元数据)。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页