以下最小需求支持概念验证环境,使用核心服务和几个:term:`CirrOS`实例:

 

控制节点: 1 处理器, 4 GB 内存5 GB 存储,两张网卡

 

计算节点: 1 处理器, 2 GB 内存10 GB 存储,两张网卡

 

上面的是最小的硬件支持,不过你最好要超过这个硬件支持。

为了避免混乱和为OpenStack提供更多资源,我们推荐你最小化安装你的Linux发行版。同时,你必须在每个节点安装你的发行版的64位版本。

控制节点的管理IP192.168.10.100eth0另外的IP192.168.111.134eth1

控制节点的管理IP192.168.10.200eth0另外的IP192.168.111.135eth1

下面是各个服务的密码

openstack的搭建_第1张图片

一开始我们就要关闭防火墙

systemctl stop firewalld

setenforce 0

vim /etc/selinux/config

SELINUX=permissive

/etc/hosts文件加入

192.168.10.100  controller

192.168.10.200  compute

如图:

让服务器把controller解析为192.168.10.100,把compute解析为192.168.10.200

openstack的搭建_第2张图片

配置yum文件

创建并写入/etc/yum.repos.d/yum.repo文件以下内容

[yum]

name=yum

baseurl=ftp://192.168.10.84/redhat

enabled=1

gpgcheck=0

 

 

[openstack]

name=openstack

baseurl=ftp://192.168.10.84/openstack-newton/

enabled=1

gpgcheck=0

如图:

openstack的搭建_第3张图片

配置时间同步

yum install chrony -y

上面的操作在两个节点上都要执行。

在控制节点上配置

编辑/etc/chrony.conf

加入上面两行

然后设置开机自启并启动服务。注意如果重启服务出现下面报错说明你可能打错了。

ln -s '/usr/lib/systemd/system/mariadb.service' '/etc/systemd/system/multi-user.target.wants/mariadb.service'

systemctl enable chronyd.service(开机自启)

systemctl start chronyd.service(开启服务)

下面在计算节点上,让它去同步controller的时间

注释上面的服务器,加入controller服务器

设置开机自启并启动服务

systemctl enable chronyd.service

systemctl start chronyd.service

在控制节点和计算节点都要安装openstack的客户端的包和openstack服务的安全策略(可能会卡顿,不过是正常的)

yum install python-openstackclient -y

yum install openstack-selinux -y

下面的是在控制节点上安装的

首先我们要先安装数据库

 yum install ftp://192.168.10.84/system-packages/systemd-libs-219-19.el7.x86_64.rpm --setopt=protected_multilib=false

yum install mariadb mariadb-server python2-PyMySQL -y

创建并编辑/etc/my.cnf.d/openstack.cnf文件,加入下面行

[mysqld]

bind-address = 192.168.10.100

default-storage-engine = innodb

innodb_file_per_table

max_connections = 4096

collation-server = utf8_general_ci

character-set-server = utf8

如图:

openstack的搭建_第4张图片

其中,192.168.10.100是控制节点的管理IP

设置开机自启并启动服务

systemctl enable mariadb.service

systemctl start mariadb.service

为了保证数据库服务的安全性,运行``mysql_secure_installation``脚本。特别需要说明的是,为数据库的root用户设置一个适当的密码。

mysql_secure_installation

wKiom1msDgDBxrK2AAAl12OFGoQ926.jpg

Telemetry 服务使用 NoSQL 数据库来存储信息,典型地,这个数据库运行在控制节点上。向导中使用MongoDB

下面也把这个数据库安装上去吧!

yum install mongodb-server mongodb -y

编辑/etc/mongod.conf这个文件

其中192.168.10.100是控制节点的管理IP

去掉smallfiles的注释

openstack的搭建_第5张图片

设置开机自启并启动服务

systemctl enable mongod.service

systemctl start mongod.service

下面安装消息队列,消息队列是keystone glance nova neutron都要用到的服务。它们用它来让计算节点和控制节点来通讯。同样的,这个也在控制节点上安装,一般没有写在哪里安装的都在控制节点上安装

yum install rabbitmq-server -y

设置开机自启并启动服务

systemctl enable rabbitmq-server.service

systemctl start rabbitmq-server.service

添加 openstack 用户

rabbitmqctl add_user openstack 000000

``openstack``用户配置写和读权限:

rabbitmqctl set_permissions openstack ".*" ".*" ".*"

如图:

openstack的搭建_第6张图片

认证服务认证缓存使用Memcached缓存令牌。缓存服务memecached运行在控制节点。在生产部署中,我们推荐联合启用防火墙、认证和加密保证它的安全。

执行以下命令安装

yum install memcached python-memcached -y

启动Memcached服务,并且配置它随机启动。

systemctl enable memcached.service

systemctl start memcached.service

下面配置keystone服务

mysql -uroot -p

create database keystone;

grant all privileges on keystone.* to keystone@'localhost' identified by '0000

00';

grant all privileges on keystone.* to keystone@'%' identified by '000000';

上面000000是用户keystone的密码。

生成一个随机值在初始的配置中作为管理员的令牌

openssl rand -hex 10

openstack的搭建_第7张图片

记住上面的随机数

yum install ftp://192.168.10.84/system-packages/python-jinja2-2.7.2-2.el7.noarch.rpm ftp://192.168.10.84/system-packages/python-zope-interface-4.0.5-4.el7.x86_64.rpm -y

yum install openstack-keystone httpd mod_wsgi -y

编辑/etc/keystone/keystone.conf文件

把刚刚的随机数加在admin_token后面

openstack的搭建_第8张图片

openstack的搭建_第9张图片

其中000000keystone的密码

``[token]``部分,配置Fernet UUID令牌的提供者。

如图:

openstack的搭建_第10张图片

初始化身份认证服务的数据库:

su -s /bin/sh -c "keystone-manage db_sync" keystone

初始化Fernet keys

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

编辑``/etc/httpd/conf/httpd.conf`` 文件,配置``ServerName`` 选项为控制节点

如图:

openstack的搭建_第11张图片

创建文件/etc/httpd/conf.d/wsgi-keystone.conf并加入以下内容

Listen 5000

Listen 35357

 

WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}

WSGIProcessGroup keystone-public

WSGIScriptAlias / /usr/bin/keystone-wsgi-public

WSGIApplicationGroup %{GLOBAL}

WSGIPassAuthorization On

ErrorLogFormat "%{cu}t %M"

ErrorLog /var/log/httpd/keystone-error.log

CustomLog /var/log/httpd/keystone-access.log combined

 

Require all granted

 

WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}

WSGIProcessGroup keystone-admin

WSGIScriptAlias / /usr/bin/keystone-wsgi-admin

WSGIApplicationGroup %{GLOBAL}

WSGIPassAuthorization On

ErrorLogFormat "%{cu}t %M"

ErrorLog /var/log/httpd/keystone-error.log

CustomLog /var/log/httpd/keystone-access.log combined

 

Require all granted

openstack的搭建_第12张图片

启动 Apache HTTP 服务并配置其随系统启动:

systemctl enable httpd.service

systemctl start httpd.service

配置认证令牌:

vim /etc/keystone/keystone.sh

export OS_TOKEN=6f7b8ee0788f18500b61

export OS_URL=http://controller:35357/v3

export OS_IDENTITY_API_VERSION=3

如图:

openstack的搭建_第13张图片

创建服务实体和身份认证服务:

openstack service create --name keystone --description "OpenStack Identity" identity

这时候会有一个报错信息是:Missing value auth-url required for auth plugin password

我们可以执行source /etc/keystone/keystone.sh

然后我们再去执行openstack service create --name keystone --description "OpenStack Identity" identity就不会报错了

openstack的搭建_第14张图片

创建认证服务的 API 端点:

openstack endpoint create --region RegionOne identity public http://controller:5000/v3

openstack endpoint create --region RegionOne identity internal http://controller:5000/v3

openstack endpoint create --region RegionOne identity admin http://controller:35357/v3

如图:

openstack的搭建_第15张图片创建域default

openstack domain create --description "Default Domain" default

创建 admin 项目:

openstack project create --domain default --description "Admin Project" admin

创建 admin 用户:

openstack user create --domain default --password-prompt admin

创建 admin 角色:

openstack role create admin

添加``admin`` 角色到 admin 项目和用户上:

openstack role add --project admin --user admin admin

创建``service``项目:

openstack project create --domain default --description "Service Project" service

常规(非管理)任务应该使用无特权的项目和用户。作为例子,本指南创建 demo 项目和用户。

创建``demo`` 项目:

openstack project create --domain default --description "Demo Project" demo

 

创建``demo`` 用户:

openstack user create --domain default --password-prompt demo

创建 user 角色:

openstack role create user

添加 user``角色到 ``demo 项目和用户:

openstack role add --project demo --user demo user

如图:

openstack的搭建_第16张图片

openstack的搭建_第17张图片

openstack的搭建_第18张图片

下面验证一下我们上面有没有问题

编辑 /etc/keystone/keystone-paste.ini 文件,找到[pipeline:public_api][pipeline:admin_api][pipeline:api_v3] admin_token_auth字段删除。

执行下面命令,重置环境变量

unset OS_TOKEN OS_URL

如果你不执行重置环境变量的命令可能会出现下面报错:

Only an authorized user may issue a new token

下面执行命令验证

openstack --os-auth-url http://controller:35357/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name admin --os-username admin token issue

openstack --os-auth-url http://controller:5000/v3 --os-project-domain-name default --os-user-domain-name default --os-project-name demo --os-username demo token issue

如图:

openstack的搭建_第19张图片

为了方便我们要创建两个脚本放在/etc/keystone目录下

创建admin-openrc 并添加如下内容

export OS_PROJECT_DOMAIN_NAME=default

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=000000

export OS_AUTH_URL=http://controller:35357/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

其中000000是认证服务中admin的密码。

如图:

创建demo-openrc并添加如下内容

export OS_PROJECT_DOMAIN_NAME=default

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=demo

export OS_USERNAME=demo

export OS_PASSWORD=000000

export OS_AUTH_URL=http://controller:5000/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

其中000000demo的密码。

如图:

openstack的搭建_第20张图片

验证一下我们的脚本有没有写错

source /etc/keystone/admin-openrc

openstack token issue

openstack的搭建_第21张图片

下面安装glance服务

(如果执行过database.shpassword.sh脚本就不用执行下面的四条命令)

mysql -u root -p

create database glance;grant all privileges on glance.* to 'glance'@'localhost'identified by '000000';

grant all privileges on glance.* to 'glance'@'%'  identified by '000000';

exit

000000glance用户的密码,可以更改的

source /etc/keystone/keystone.sh

创建 glance 用户:

openstack user create --domain default --password-prompt glance

添加 admin 角色到 glance 用户和 service 项目上。

openstack role add --project service --user glance admin

创建``glance``服务实体

openstack service create --name glance --description "OpenStack Image" p_w_picpath

创建镜像服务的 API 端点:

openstack endpoint create --region RegionOne p_w_picpath public http://controller:9292

openstack endpoint create --region RegionOne p_w_picpath internal http://controller:9292

openstack endpoint create --region RegionOne p_w_picpath admin http://controller:9292

如图

openstack的搭建_第22张图片

安装glance软件包:

yum install openstack-glance -y

编辑文件 /etc/glance/glance-api.conf 并完成如下动作:

 [database] 部分加入

connection = mysql+pymysql://glance:000000@controller/glance

其中000000glance的密码

 [keystone_authtoken]加入

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = glance

password = 000000

其中000000glance的密码

[paste_deploy]中加入

flavor = keystone

在 [glance_store] 部分,配置本地文件系统存储和镜像文件位置:

stores = file,http

default_store = file

filesystem_store_datadir = /var/lib/glance/p_w_picpaths/

 

openstack的搭建_第23张图片

openstack的搭建_第24张图片


wKiom1msFaOwsEVNAAAZdBUlU80937.jpg

vim /etc/glance/glance-registry.conf

 [database] 部分,加入

connection = mysql+pymysql://glance:000000@controller/glance

openstack的搭建_第25张图片

 [keystone_authtoken] 部分加入:

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = glance

password = 000000

其中000000glance用户的密码

openstack的搭建_第26张图片

[paste_deploy]部分加入

flavor = keystone

 

写入镜像服务数据库:

su -s /bin/sh -c "glance-manage db_sync" glance

如图

wKiom1msFwSittyWAAAlXyBi2VI244.jpg

systemctl enable openstack-glance-api.service

systemctl enable openstack-glance-registry.service

systemctl start openstack-glance-api.service

systemctl start openstack-glance-registry.service

下面我们来上传一下镜像看看有没有问题:

source /etc/keystone/admin_openrc

把镜像cirros-0.3.3-x86_64-disk.img上传到服务器上。

执行下面命令看看能不能上传镜像

openstack的搭建_第27张图片

上传镜像的时候可能会出现505的报错,如果有这个报错,一般是你的数据库连不上,你要看看你的数据库有没有问题,然后看看你的配置文件有没有写错,如果写错了你修改好了还要去执行下面命令,写入镜像服务数据库(命令是:su -s /bin/sh -c "glance-manage db_sync" glance),重启一下服务就可以啦

 

下面是nova配置

mysql -uroot -p

create database nova;

create database nova_api;

grant all privileges on nova_api.* 'nova'@’localhost’ identified by '000000';

grant all privileges on nova_api.* to 'nova'@'%' identified by '000000';

grant all privileges on nova.* to 'nova'@'localhost' identified by '000000';

grant all privileges on nova.* to 'nova'@'%' identified by '000000';

获得 admin 凭证来获取只有管理员能执行的命令的访问权限:

source /etc/keystone/admin_openrc

创建 nova 用户:

openstack user create --domain default --password-prompt nova

 nova 用户添加 admin 角色:

openstack role add --project service --user nova admin

创建 nova 服务实体:

openstack service create --name nova --description "OpenStack Compute" compute

创建 Compute 服务 API 端点

openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%\(tenant_id\)s

openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%\(tenant_id\)s

openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%\(tenant_id\)s

如图:

openstack的搭建_第28张图片

openstack的搭建_第29张图片

openstack的搭建_第30张图片

安装软件包

yum install ftp://192.168.10.84/system-packages/python-cheetah-2.4.4-5.el7.centos.x86_64.rpm ftp://192.168.10.84/system-packages/python-markdown-2.4.1-1.el7.centos.noarch.rpm -y

yum install openstack-nova-api openstack-nova-conductor \

openstack-nova-console openstack-nova-novncproxy \

openstack-nova-scheduler

编辑/etc/nova/nova.conf文件

``[DEFAULT]``部分加入

只启用计算和元数据API

enabled_apis = osapi_compute,metadata

配置RabbitMQ消息队列访问

rpc_backend = rabbit

使用控制节点的管理接口的IP 地址

my_ip = 192.168.10.100

使能 Networking 服务

use_neutron = True

默认情况下,计算服务使用内置的防火墙服务。由于网络服务包含了防火墙服务,你必须使用``nova.virt.firewall.NoopFirewallDriver``防火墙服务来禁用掉计算服务内置的防火墙服务

firewall_driver = nova.virt.firewall.NoopFirewallDriver

auth_strategy=keystone

如图:


[oslo_messaging_rabbit]中加入

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = 000000


wKiom1msG2_TcQaeAAAYlz-MGZ8000.jpg

上面是配置消息认证的其中000000是之前在做消息认证的时候创建的openstack用户的密码

[api_database]中加入

connection = mysql+pymysql://nova:000000@controller/nova_api

其中000000nova的密码

wKioL1msG3nAF7hPAAAgpj3ULH4053.jpg

[database]中加入

connection = mysql+pymysql://nova:000000@controller/nova

其中000000nova的密码

wKiom1msG5ShZ3JnAAAUAHKeVP0954.jpg

[keystone_authtoken]中加入

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = nova

password = 000000

openstack的搭建_第31张图片

[vnc]中加入

vncserver_listen = $my_ip

vncserver_proxyclient_address = $my_ip

wKiom1msG5XTsgvsAAAQF4ik11I595.jpg

[glance]中加入

api_servers = http://controller:9292

wKiom1msG5igdT6WAAARYXLJ1Sk844.jpg

[oslo_concurrency]中加入

lock_path = /var/lib/nova/tmp

wKioL1msG36h6WbXAAAVIzXcc0o192.jpg

su -s /bin/sh -c "nova-manage api_db sync" nova

su -s /bin/sh -c "nova-manage db sync" nova

openstack的搭建_第32张图片

开机自启并启动服务

systemctl enable openstack-nova-api.service

systemctl enable openstack-nova-consoleauth.service

systemctl enable openstack-nova-scheduler.service

systemctl enable openstack-nova-conductor.service

systemctl enable openstack-nova-novncproxy.service

systemctl start openstack-nova-api.service

systemctl start openstack-nova-consoleauth.service

systemctl start openstack-nova-scheduler.service

systemctl start openstack-nova-conductor.service

systemctl start openstack-nova-novncproxy.service

下面是在计算节点上执行的

yum install ftp://192.168.10.84/system-packages/python-jinja2-2.7.2-2.el7.noarch.rpm

yum install openstack-nova-compute -y

编辑/etc/nova/nova.conf

[DEFAULT]中加入

rpc_backend = rabbit

auth_strategy = keystone

my_ip = 192.168.10.200

use_neutron = True

firewall_driver = nova.virt.firewall.NoopFirewallDriver

wKiom1msG5bjFcgHAAAkn_rqhJ8290.jpg

[oslo_messaging_rabbit](一定要看清楚,后面是rabbit不是amqp)中加入

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = 000000

wKioL1msG33g9N7dAAAXUmhzrEI586.jpg

[keystone_authtoken]中加入

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = nova

password = 000000

[vnc]中加入

enabled = True

vncserver_listen = 0.0.0.0

vncserver_proxyclient_address = $my_ip

novncproxy_base_url = http://controller:6080/vnc_auto.html

[glance]中加入

api_servers = http://controller:9292

wKiom1msG5igdT6WAAARYXLJ1Sk844.jpg

[oslo_concurrency]中加入

lock_path = /var/lib/nova/tmp

wKioL1msHQrTH4Y0AAAVIzXcc0o728.jpg

确定您的计算节点是否支持虚拟机的硬件加速

egrep -c '(vmx|svm)' /proc/cpuinfo

如果这个命令返回了 one or greater 的值,那么你的计算节点支持硬件加速且不需要额外的配置。

如果这个命令返回了 zero 值,那么你的计算节点不支持硬件加速。你必须配置 libvirt 来使用 QEMU 去代替 KVM

编辑/etc/nova/nova.conf

[libvirt]中加入

virt_type = qemu

wKiom1msG5niZtLAAAAI_L6VFOo447.jpg

启动计算服务及其依赖,并将其配置为随系统自动启动

systemctl enable libvirtd.service

systemctl enable openstack-nova-compute.service

systemctl start libvirtd.service

systemctl start openstack-nova-compute.service

如果最后一个服务起不来,看看日志,有可能是消息认证出问题了,如果是消息认证出问题了,你就去看看/etc/nova/nova.conf文件中[oslo_messaging_rabbit]部分有没有错,如果错了你改好了之后最后一个服务还是起不来的话,你可以先用这个命令

systemctl stop openstack-nova-compute.service

systemctl start openstack-nova-compute.service

应该就可以啦。

下面我们来验证一下有没有问题

source /etc/keystone/admin_openrc

openstack compute service list

wKioL1msG36SawN0AAA3x4gPhPg055.jpg

这样就可以啦。

下面是neutron服务

下面命令是在控制节点上执行的

mysql -uroot -p

create database neutron;

grant all privileges on neutron.* to 'neutron'@'localhost' identified by '000000';

grant all privileges on neutron.* to 'neutron'@'%' identified by '000000';

获得 admin 凭证来获取只有管理员能执行的命令的访问权限

source /etc/keystone/admin_openrc

创建``neutron``用户

openstack user create --domain default --password-prompt neutron

添加``admin`` 角色到``neutron`` 用户:

openstack role add --project service --user neutron admin

创建``neutron``服务实体:

openstack service create --name neutron --description "OpenStack Networking" network

创建网络服务API端点:

openstack endpoint create --region RegionOne network public http://controller:9696

openstack endpoint create --region RegionOne network internal http://controller:9696

openstack endpoint create --region RegionOne network admin http://controller:9696

openstack的搭建_第33张图片

openstack的搭建_第34张图片


yum install ftp://192.168.10.1/system-packages/libxslt-python-1.1.28-5.el7.x86_64.rpm -y

yum install openstack-neutron openstack-neutron-ml2openstack-neutron-linuxbridge ebtables

您可以部署网络服务使用选项1和选项2两种架构中的一种来部署网络服务。

 

选项1采用尽可能简单的架构进行部署,只支持实例连接到公有网络(外部网络)。没有私有网络(个人网络),路由器以及浮动IP地址。只有``admin``或者其他特权用户才可以管理公有网络

 

选项2在选项1的基础上多了layer3服务,支持实例连接到私有网络。``demo``或者其他没有特权的用户可以管理自己的私有网络,包含连接公网和私网的路由器。另外,浮动IP地址可以让实例使用私有网络连接到外部网络,例如互联网

 

典型的私有网络一般使用覆盖网络。覆盖网络,例如VXLAN包含了额外的数据头,这些数据头增加了开销,减少了有效内容和用户数据的可用空间。在不了解虚拟网络架构的情况下,实例尝试用以太网最大传输单元 (MTU) 1500字节发送数据包。网络服务会自动给实例提供正确的MTU的值通过DHCP的方式。但是,一些云镜像并没有使用DHCP或者忽视了DHCP MTU选项,要求使用元数据或者脚本来进行配置。

下面我们安装私有网络。

yum install ftp://192.168.10.1/system-packages/libxslt-python-1.1.28-5.el7.x86_64.rpm -y

yum install openstack-neutron openstack-neutron-ml2   openstack-neutron-linuxbridge ebtables

编辑``/etc/neutron/neutron.conf`` 文件并完成如下操作

 [database] 部分,配置数据库访问:

connection = mysql+pymysql://neutron:000000@controller/neutron

000000是你的数据库的密码

``[DEFAULT]``部分,启用Modular Layer 2 (ML2)插件,路由服务和重叠的IP地址:

core_plugin = ml2

service_plugins = router

allow_overlapping_ips = True

rpc_backend = rabbit

auth_strategy = keystone

notify_nova_on_port_status_changes = True

notify_nova_on_port_data_changes = True

[oslo_messaging_rabbit]”部分加入

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = 000000

 

[keystone_authtoken]部分加入

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = neutron

password = 000000

[nova]加入

auth_url = http://controller:35357

auth_type = password

project_domain_name = default

user_domain_name = default

region_name = RegionOne

project_name = service

username = nova

password = 000000

[oslo_concurrency]部分加入

lock_path = /var/lib/neutron/tmp

编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件

[ml2]部分加入

type_drivers = flat,vlan,vxlan

tenant_network_types = vxlan

mechanism_drivers = linuxbridge,l2population

extension_drivers = port_security

[ml2_type_flat]部分加入

flat_networks = provider

[ml2_type_vxlan]部分加入

vni_ranges = 1:1000

[securitygroup]部分加入

enable_ipset = True

 

编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]中加入

physical_interface_mappings = eth1(不是管理IP的那张网卡)

[vxlan]部分加入

enable_vxlan = True

local_ip = IP(管理IP

l2_population = True

 

[securitygroup]部分加入

enable_security_group = True

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

 

编辑/etc/neutron/l3_agent.ini

[DEFAULT]

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver

external_network_bridge =

编辑``/etc/neutron/dhcp_agent.ini``文件

[DEFAULT]中加入

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver

dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq

enable_isolated_metadata = True

 

编辑``/etc/neutron/metadata_agent.ini

[DEFAULT]部分加入

nova_metadata_ip = controller

metadata_proxy_shared_secret = 000000

000000是元数据代理的密码

ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron

去计算节点执行

systemctl stop openstack-nova-compute.service

systemctl start openstack-nova-compute.service

systemctl enable neutron-linuxbridge-agent.service

systemctl start neutron-linuxbridge-agent.service

返回控制节点上

systemctl stop openstack-nova-api.service

systemctl start openstack-nova-api.service

systemctl enable neutron-server.service

systemctl enable neutron-linuxbridge-agent.service

systemctl enable neutron-dhcp-agent.service

systemctl enable neutron-metadata-agent.service

systemctl start neutron-server.service

systemctl start neutron-linuxbridge-agent.service

systemctl start neutron-dhcp-agent.service

systemctl start neutron-metadata-agent.service

systemctl enable neutron-l3-agent.service

systemctl start neutron-l3-agent.service

在控制节点上source /etc/keystone/admin-openrc

执行neutron ext-list

[root@controller neutron]# neutron ext-list

+---------------------------+---------------------------+

| alias                     | name                      |

+---------------------------+---------------------------+

| default-subnetpools       | Default Subnetpools       |

| availability_zone         | Availability Zone         |

| network_availability_zone | Network Availability Zone |

| binding                   | Port Binding              |

| agent                     | agent                     |

| subnet_allocation         | Subnet Allocation         |

| dhcp_agent_scheduler      | DHCP Agent Scheduler      |

| tag                       | Tag support               |

| external-net              | Neutron external network  |

| flavors                   | Neutron Service Flavors   |

| net-mtu                   | Network MTU               |

| network-ip-availability   | Network IP Availability   |

| quotas                    | Quota management support  |

| provider                  | Provider Network          |

| multi-provider            | Multi Provider Network    |

| address-scope             | Address scope             |

| subnet-service-types      | Subnet service types      |

| standard-attr-timestamp   | Resource timestamps       |

| service-type              | Neutron 服务类型管理      |

| extra_dhcp_opt            | Neutron Extra DHCP opts   |

| standard-attr-revisions   | Resource revision numbers |

| pagination                | Pagination support        |

| sorting                   | Sorting support           |

| security-group            | security-group            |

| rbac-policies             | RBAC Policies             |

| standard-attr-description | standard-attr-description |

| port-security             | Port Security             |

| allowed-address-pairs     | Allowed Address Pairs     |

| project-id                | project_id field enabled  |

+---------------------------+---------------------------+