参考资料:
官方配置文档(http://docs.openstack.org/mitaka/install-guide-rdo/common/get_started_networking.html)
网络节点的部署是个难点,所以后面如果有时间的话,我觉得很有必要单独开一篇文章来讲解这个。但是如果前面都是按照我的步骤来部署的话,我们可以先一边部署一边参照这篇博文去初步认识neutron。
经典架构
三条网络的作用:
External Network/API Network,这个网络是连接外网的,无论是用户调用Openstack的API,还是创建出来的虚拟机要访问外网,或者外网要ssh到虚拟机,都需要通过这个网络。
Instance Network,数据网络,虚拟机之间的数据传输通过这个网络来进行,比如一个虚拟机要连接另一个虚拟机,虚拟机要连接虚拟的路由都是通过这个网络来进行。
Management Network,管理网络,Openstack各个模块之间的交互,连接数据库,连接Message Queue都是通过这个网络来。
虽然我打算把networknode塞到controllerNode里面,但是也是用的三条网络,所以说无论怎么安装,原理基本上是一样的。
数据流
neutron分成多个模块分布在两个节点上,各个节点对应的服务如下。
Controller节点:
neutron-server,用于接受API请求创建网络,子网,路由器等,然而创建的这些东西仅仅是一些数据结构在数据库里面。
neutron-l3-agent,用于创建和管理虚拟路由器,当neutron-server将路由器的数据结构创建好,它是做具体的事情的,真正的调用命令行将虚拟路由器,路由表,namespace,iptables规则全部创建好。
neutron-dhcp-agent,用于创建和管理虚拟DHCP Server,每个虚拟网络都会有一个DHCP Server,这个DHCP Server为这个虚拟网络里面的虚拟机提供IP。
neutron-openvswith-plugin-agent,这个是用于创建虚拟的L2的switch的,在Network节点上,Router和DHCP Server都会连接到二层的switch上。
Compute节点:
neutron-openvswith-plugin-agent,这个是用于创建虚拟的L2的switch的,在Compute节点上,虚拟机的网卡也是连接到二层的switch上。
Neutron-controller部署
注意:下面的操作均在controller节点上
1.创建neutron数据库
创建Nova数据库和数据库中的nova用户,并授权为nova数据库的管理员
command:
mysql -u root -p123456
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '123456';
exit
OutPut:
[root@controller ~]# mysql -u root -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 68
Server version: 10.1.12-MariaDB MariaDB Server
Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE neutron;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye
[root@controller ~]#
2.创建neutron账号
在openstack中创建neutron账号,并授权为service project的管理员
[root@controller ~]# source ~/admin-openrc
[root@controller ~]# openstack user create --domain default --password-prompt neutron
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | 098b1a4d36d241ed87e979ec86d32722 |
| enabled | True |
| id | cdf1f68d3d91463daedfac4c83337fc3 |
| name | neutron |
+-----------+----------------------------------+
[root@controller ~]# openstack role add --project service --user neutron admin
3.创建neutron服务
创建neutron服务和其对应端口
[root@controller ~]# openstack service create --name neutron \
> --description "OpenStack Networking" network
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | OpenStack Networking |
| enabled | True |
| id | c297d9848e7144f3af54107f100a9d77 |
| name | neutron