在 OpenStack 的 Neutron 中,创建网络的过程涉及多个组件的协同工作。以下是详细的步骤分析:
1. 用户请求
用户通过 Neutron API 发送创建网络的请求。这通常是通过命令行工具(如 openstack 或 neutron)或 OpenStack 的 Dashboard 发起的。
openstack network create my-network
2. Neutron Server 接收请求
Neutron Server 是 Neutron 的核心组件,它负责接收和处理所有 API 请求。当收到创建网络的请求时,Neutron Server 会解析请求中的参数,如网络名称、是否为外部网络等。
3. 调用 Neutron Plugin
Neutron Server 通过 RPC 调用 Neutron Plugin 来处理具体的网络创建逻辑。在 OpenStack 中,常用的插件是 ML2(Modular Layer 2)插件。
4. 创建网络资源
Neutron Plugin 会根据用户提供的参数(如网络名称、MTU、是否共享等)创建网络资源。如果用户没有指定网络 ID,插件会自动生成一个唯一的 ID。
5. 存储网络信息
创建的网络信息会被存储到 Neutron 的数据库中。这包括网络的基本属性,如名称、ID、是否为外部网络等。
6. 返回创建结果
Neutron Plugin 完成网络创建后,会将创建的网络信息返回给 Neutron Server。Neutron Server 再将这些信息返回给用户,用户可以通过 API 或命令行工具查看新创建的网络。
7. 后续操作
创建网络后,通常还需要创建子网和路由器来使网络可用。例如,可以使用以下命令创建子网和路由器:
openstack subnet create --network my-network --subnet-range 192.168.1.0/24 my-subnet
openstack router create my-router
openstack router add subnet my-router my-subnet
涉及的组件
- Neutron Server:处理 API 请求。
- Neutron Plugin:具体实现网络创建逻辑,如 ML2 插件。
- 数据库:存储网络资源信息。
注意事项
- 确保 Neutron 的配置文件(如
neutron.conf和ml2_conf.ini)正确配置,以便正确处理网络创建请求。 - 创建外部网络时,需要指定外部网络的物理网络和网络类型。
通过以上步骤,Neutron 能够灵活地创建和管理网络资源,为 OpenStack 环境中的虚拟机提供网络连接。