1
2
3
4
5
6
7
作者:李晓辉

联系方式:

微信:Lxh_Chat

邮箱:939958092@qq.com

这篇文章只是介绍如何安装和配置Neutron网络服务本身,我们将在后续的文章中介绍如何安装和配置Neutron网络服务的后端支持服务,这些后端负责实现虚拟网络的创建和管理,是Neutron服务的重要组成部分。

前言

在云计算环境中,网络服务是实现虚拟机之间以及虚拟机与外部网络通信的关键组件。OpenStack作为一个功能强大的开源云平台,提供了灵活的网络管理解决方案。Neutron作为OpenStack的核心网络服务组件,负责管理和配置虚拟网络资源,支持多种网络拓扑和虚拟化技术。本文将详细介绍如何在OpenStack环境中安装和配置Neutron网络服务,帮助你搭建一个高效、灵活且可靠的云平台网络架构。

Neutron服务概述

Neutron的作用

Neutron是OpenStack中的网络服务组件,其主要功能包括:

  1. 虚拟网络管理:提供虚拟网络资源的管理功能,如虚拟交换机、虚拟路由器、子网、端口等的创建、配置和删除。

  2. 网络拓扑支持:支持多种网络拓扑结构,包括扁平网络、VLAN网络、VXLAN网络等,满足不同场景下的网络需求。

  3. 安全组管理:通过安全组规则控制虚拟机之间的流量,实现网络访问控制,保障虚拟机的安全。

  4. 负载均衡:提供负载均衡服务,支持虚拟机之间的流量分发,提高系统的可用性和性能。

  5. 与计算服务集成:与Nova服务紧密集成,为虚拟机提供网络连接,确保虚拟机能够正常访问网络资源。

Neutron的架构

Neutron服务由以下几个主要组件构成:

  1. neutron-server:提供RESTful API接口,供用户和管理员管理网络资源。

  2. neutron-plugin-agent:运行在网络节点上,负责管理虚拟网络设备,如虚拟交换机、虚拟路由器等。

  3. neutron-dhcp-agent:提供DHCP服务,为虚拟机分配IP地址。

  4. neutron-l3-agent:管理虚拟路由器,实现虚拟网络之间的路由转发。

  5. neutron-metadata-agent:提供元数据服务,使虚拟机能够获取配置信息。

  6. neutron-metering-agent(可选):用于网络流量计量,支持网络带宽监控。

  7. 数据库:Neutron使用关系型数据库(如MariaDB)存储网络资源的配置信息。

工作原理

Neutron的工作原理可以概括为以下几个步骤:

  1. API请求处理:用户通过Neutron API发送请求,如创建网络、子网、端口等。neutron-server组件接收这些请求,并将其转发给相应的服务组件。

  2. 资源分配与配置:根据用户的请求,neutron-server与数据库交互,分配网络资源,并将配置信息传递给相应的网络节点。

  3. 网络设备管理neutron-plugin-agent根据配置信息,管理虚拟网络设备,如创建虚拟交换机、配置端口等。

  4. 网络服务提供neutron-dhcp-agent为虚拟机分配IP地址,neutron-l3-agent管理虚拟路由器,实现网络之间的路由转发。

  5. 元数据服务neutron-metadata-agent为虚拟机提供元数据服务,使虚拟机能够获取配置信息。

通过以上机制,Neutron服务确保了虚拟网络资源的高效管理和灵活配置,为OpenStack环境中的虚拟机提供了可靠的网络连接。接下来我将详细介绍如何在OpenStack环境中安装和配置Neutron网络服务。

准备neutron数据库

在控制节点上创建Neutron数据库和用户,并分配权限

1
mysql -uroot -pLiXiaohui
1
2
3
4
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'LiXiaohui';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'LiXiaohui';
exit

创建nova服务用户和角色

加载管理员环境变量文件,创建Neutron服务用户并添加到service项目中。

1
source adminrc.sh
1
2
3
4
5
6
7
8
9
10
11
[root@controller ~]# openstack user create --domain default --password LiXiaohui neutron
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | f63963ed733f48e9acdeaaf0d4b00b07 |
| name | neutron |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
1
[root@controller ~]# openstack role add --project service --user neutron admin

创建neutron服务和endpoint

创建neutron服务

1
2
3
4
5
6
7
8
9
10
[root@controller ~]# openstack service create --name neutron --description "OpenStack Networking" network
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Networking |
| enabled | True |
| id | 0501b46a9152497d96dee63653ac6b46 |
| name | neutron |
| type | network |
+-------------+----------------------------------+

创建endpoint

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[root@controller ~]# openstack endpoint create --region RegionOne network public http://controller:9696
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | dbe8552ab73a4d9fa247f473b3dc1996 |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 0501b46a9152497d96dee63653ac6b46 |
| service_name | neutron |
| service_type | network |
| url | http://controller:9696 |
+--------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne network internal http://controller:9696
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | a982e24225034b50bd325c158813f901 |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 0501b46a9152497d96dee63653ac6b46 |
| service_name | neutron |
| service_type | network |
| url | http://controller:9696 |
+--------------+----------------------------------+
[root@controller ~]# openstack endpoint create --region RegionOne network admin http://controller:9696
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 9c6373c019904792b72e97466d704c6c |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 0501b46a9152497d96dee63653ac6b46 |
| service_name | neutron |
| service_type | network |
| url | http://controller:9696 |
+--------------+----------------------------------+

启用模块支持

启用必要的内核模块并配置网络桥接参数

1
2
3
4
5
6
7
8
9
cat <<EOF | sudo tee /etc/modules-load.d/openstack.conf
br_netfilter
EOF
modprobe br_netfilter
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sudo sysctl --system

接下来需要根据你的网络架构选择并配置网络后端,例如 Linux BridgeOpen vSwitch (OVS)。这些后端负责实现虚拟网络的创建和管理,是Neutron服务的重要组成部分。

在OpenStack中,Neutron支持多种网络后端,常见的有:

  1. Linux Bridge:适用于简单的网络环境,使用Linux内核的桥接功能来实现虚拟网络。

  2. Open vSwitch (OVS):功能更强大,支持复杂的网络拓扑和高级特性,如VLAN、VXLAN等。

我们将在接下来的文章中,继续介绍Neutron服务中的网络后端部署,敬请期待哦。