centos7.4下安装部署openstack [newton版]


一、什么是openstack?

OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。

https://docs.openstack.org/zh_CN/         #官方帮助文档

https://en.wikipedia.org/wiki/OpenStack  #版本演进

https://www.cnblogs.com/panwenbin-logs/p/8410551.html  #参考文档

二、部署环境:

1.主机信息

主机名

IP地址

角色

版本

controller

192.168.80.184

控制节点

Centos7.4

compute01

192.168.80.185

计算节点

Centos7.4

各角色描述及需求:

控制器:

控制节点运行身份认证服务,镜像服务,管理部分计算和网络服务不同的网络代理。同样包括像SQL数据库,消息队列这样的支撑服务。

控制节点需要最少两块网卡。

计算:

计算节点运行操作实例的 :hypervisor计算部分。默认情况下使用 KVM 作为hypervisor。计算节点同样运行网络服务代理,用来连接实例到虚拟网络,通过:security groups 为实例提供防火墙服务。

这个服务可以部署超过1个计算节点。每个节点要求最少两个网络接口。

2.准备基础环境--控制节点和计算节点都要做--打开虚拟机虚拟化CPU功能

ifconfig          #两块网卡,一块用于远程管理一块上网

cat /etc/hosts   #通过域名通信

...

192.168.80.184 controller

192.168.80.185 compute01

:wq

vi /etc/hostname  #更改主机名后要重启系统,计算节点改为compute01,改完主机名需要reboot重启生效

controller

:wq

reboot

yum install -y chrony    #安装时间同步服务器

vi /etc/chrony.conf      #注释掉所有server开头的,添加如下内容,计算节点上controller改为从compute01

...

server controller iburst

allow 192.168.80.0/24    

:wq

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#启动时间同步服务并设置开机自启动

systemctl enable chronyd.service

systemctl start chronyd.service

 

chronyc sources    #同步时间

#关闭防火墙和selinux

systemctl disable firewalld.service

systemctl stop firewalld.service

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

setenforce 0

 

yum install -y centos-release-openstack-newton.noarch #安装和openstack对应版本相关的仓库

yum -y upgrade  #进行系统整体升级,升级完成后要重新启动操作系统

reboot

-----------------以下操作只对控制节点------------------

三、安装配置数据库服务(MySQL)

yum install python-openstackclient -y     #安装opnestack客户端

yum install mariadb mariadb-server python2-PyMySQL -y  #以下安装配置数据库服务


cp /usr/share/mariadb/my-medium.cnf /etc/my.cnf.d/openstack.cnf

vi /etc/my.cnf.d/openstack.cnf

[mysqld]

bind-address = 192.168.80.184

default-storage-engine = innodb

innodb_file_per_table

max_connections = 4096

collation-server = utf8_general_ci

character-set-server = utf8

:wq

#启动数据库服务,并将其配置为开机自启

systemctl enable mariadb.service   

systemctl start mariadb.service

netstat -anpt | grep mysqld

 

mysql_secure_installation   #初始化数据库,为了方便记忆,之后所有密码都设置为abc23

四、安装配置消息队列服务(rabbitmq)

yum install rabbitmq-server -y       #以下安装配置消息队列服务

 

systemctl enable rabbitmq-server.service

systemctl start rabbitmq-server.service

 

rabbitmqctl add_user openstack abc123                      #添加 openstack 用户

rabbitmqctl set_permissions openstack ".*" ".*" ".*"    #给openstack用户配置写和读权限

rabbitmq-plugins enable rabbitmq_management               #使用此插件实现 web 管理

systemctl restart rabbitmq-server.service

netstat -anpt | grep beam

 

访问RabbitMQ,访问地址是http://192.168.80.184:15672/,默认用户名密码都是guest

 

、安装配置Openstack身份认证服务(代码名称keystone。出于性能原因,这个配置部署Apache HTTP服务处理查询并使用Memcached存储tokens而不用SQL数据库)

1.服务简述

OpenStack:Identity service为认证管理,授权管理和服务目录服务管理提供单点整合。其它OpenStack服务将身份认证服务当做通用统一API来使用。此外,提供用户信息但是不在OpenStack项目中的服务(如LDAP服务)可被整合进先前存在的基础设施中。

为了从identity服务中获益,其他的OpenStack服务需要与它合作。当某个OpenStack服务收到来自用户的请求时,该服务询问Identity服务,验证该用户是否有权限进行此次请求

身份服务包含这些组件:

服务器

一个中心化的服务器使用RESTful 接口来提供认证和授权服务。

驱动

驱动或服务后端被整合进集中式服务器中。它们被用来访问OpenStack外部仓库的身份信息, 并且它们可能已经存在于OpenStack被部署在的基础设施(例如,SQL数据库或LDAP服务器)中。

模块

中间件模块运行于使用身份认证服务的OpenStack组件的地址空间中。这些模块拦截服务请求,取出用户凭据,并将它们送入中央是服务器寻求授权。中间件模块和OpenStack组件间的整合使用Python Web服务器网关接口。

当安装OpenStack身份服务,用户必须将之注册到其OpenStack安装环境的每个服务。身份服务才可以追踪那些OpenStack服务已经安装,以及在网络中定位它们。

2.服务需求:在配置 OpenStack 身份认证服务前,必须创建一个数据库及权限授权。

mysql -uroot -pabc123

CREATE DATABASE keystone;

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'abc123';

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'abc123';

flush privileges;

quit

3.服务安装

yum install openstack-keystone httpd mod_wsgi memcached python-memcached -y     #这里安装memcached是为了令牌更新用的

systemctl enable memcached.service && systemctl start memcached.service

netstat -tnlp|grep memcached

 

openssl rand -hex 10     #生成随机数,创建管理员令牌。这个值要记下来,后面会用到

0cfe644113b242e39878

 

cd /etc/keystone/

cp keystone.conf keystone.conf.bak   

egrep -v "^#|^$" keystone.conf.bak > keystone.conf

vi keystone.conf

[default]

admin_token = 0cfe644113b242e39878  #与上面生成的管理员令牌一致

[database]

connection = mysql+pymysql://keystone:abc123@controller/keystone #配置数据库访问地址

[token]

provider = fernet #配置 fernet token provider

:wq

 

su -s /bin/sh -c "keystone-manage db_sync" keystone #初始化身份认证服务的数据库

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone  #初始化Fernet key存储库

配置 Apache HTTP 服务器

sed -i 's/#ServerName www.example.com:80/ServerName controller/g' /etc/httpd/conf/httpd.conf      #修改配置文件中主机名为controller

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

 

systemctl enable httpd.service

systemctl start httpd.service

netstat -anpt | grep http   #80 35357 5000 端口监听

#35357用于管理, 只有admin_role可以使用 #5000用于业务,普通用户使用

 

创建服务实体和API端点

------------配置管理用户------------

[controller@ ~]# export OS_TOKEN=0cfe644113b242e39878        #配置认证令牌与上面生成的管理员令牌一致

[controller@ ~]# export OS_URL=http://controller:35357/v3    #配置端点URL

[controller@ ~]# export OS_IDENTITY_API_VERSION=3            #配置认证 API 版本

[controller@ ~]# env|grep ^OS                                    #查看设置是否生效

 

---------在Openstack环境中,认证服务管理服务目录。服务使用这个目录来决定您的环境中可用的服务。-------------

[controller@ ~]# openstack service create \

--name keystone \

--description "OpenStack identity" identity    #为身份认证服务创建服务实体

 

身份认证服务管理了一个与环境相关的 API 端点的目录。服务使用这个目录来决定如何与您环境中的其他服务进行通信。

OpenStack使用三个API端点变种代表每种服务:admin,internal和public。默认情况下,管理API端点允许修改用户和租户而公共和内部APIs不允许这些操作。

在生产环境中,处于安全原因,变种为了服务不同类型的用户可能驻留在单独的网络上。对实例而言,公共API网络为了让顾客管理他们自己的云在互联网上是可见的。

管理API网络在管理云基础设施的组织中操作也是有所限制的。内部API网络可能会被限制在包含OpenStack服务的主机上。此外,OpenStack支持可伸缩性的多区域。

 

[controller@ ~]# openstack endpoint create --region RegionOne   identity public http://controller:5000/v3        #创建认证服务的 API 端点

[controller@ ~]# openstack endpoint create --region RegionOne identity internal http://controller:5000/v3

[controller@ ~]# openstack endpoint create --region RegionOne identity admin http://controller:5000/v3

注:每个添加到OpenStack环境中的服务要求一个或多个服务实体和三个认证服务中的API 端点变种。

 

为进行管理操作,创建管理的项目、用户和角色

[controller@ ~]# openstack domain create --description "Default Domain" default                        #创建 domain域

[controller@ ~]# openstack project create --domain default --description "Admin Project" admin      #创建 admin 项目

[controller@ ~]# openstack user create --domain default  --password-prompt admin                       #创建 admin 用户,会提示输入密码

[controller@ ~]# openstack role create admin   #创建 admin 角色

[controller@ ~]# openstack role add --project admin --user admin admin      #添加 admin 角色到 admin 项目和用户上,这个命令执行后没有输出

每个服务包含独有用户的service 项目。创建"service"项目

[controller@ ~]# openstack project create --domain default --description "Service Project" service  


常规任务应该使用无特权的项目和用户,作为示例,创建一个demo项目和用户

[controller@ ~]# openstack project create --domain default  --description "Demo Project" demo  #创建demo项目

[controller@ ~]# openstack user create --domain default  --password-prompt demo   #提示输入密码

[controller@ ~]# openstack role create user  #创建 user 角色

[controller@ ~]# openstack role add --project demo --user demo user #添加 user 角色到 demo 项目和用户 ,你可以重复此过程来创建额外的项目和用户。

验证令牌获得

[controller@ ~]# unset OS_TOKEN OS_URL               #重置OS_TOKEN和OS_URL环境变量

[controller@ ~]# 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     #使用 admin 用户,请求认证令牌,密码:abc123

 

[controller@ ~]# 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     #使用 demo 用户,请求认证令牌,密码:abc123

 

前面我们使用环境变量和命令选项的组合通过openstack客户端与身份认证服务交互。为了提升客户端操作的效率,OpenStack支持简单的客户端环境变量脚本即OpenRC 文件创建 admin 和 demo项目和用户创建客户端环境变量脚本,为客户端操作加载合适的的凭证。

创建用户环境脚本

cd

[controller@ ~]# vi 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=abc123

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

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

:wq

[controller@ ~]# vi 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=abc123

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

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

:wq

[controller@ ~]# . admin-openrc   #加载admin-openrc文件来身份认证服务的环境变量位置和admin项目和用户证书

[controller@ ~]# . demo-openrc    #加载demo-openrc文件来身份认证服务的环境变量位置和admin项目和用户证书

[controller@ ~]# openstack token issue  #请求认证令牌信息

 

六、添加镜像服务glance

1.服务简述

OpenStack 的镜像服务 (glance) 允许用户发现、注册和恢复虚拟机镜像。它提供了一个 REST API,允许您查询虚拟机镜像的 metadata 并恢复一个实际的镜像。您可以存储虚拟机镜像通过不同位置的镜像服务使其可用,就像 OpenStack 对象存储那样从简单的文件系统到对象存储系统。

OpenStack镜像服务包括以下组件:

glance-api

  接收镜像API的调用,诸如镜像发现、恢复、存储。

glance-registry

  存储、处理和恢复镜像的元数据,元数据包括项诸如大小和类型。

glance-registry是私有内部服务,用于服务OpenStack Image服务。不要向用户暴露该服务数据库存放镜像元数据,用户是可以依据个人喜好选择数据库的,多数的部署使用MySQL或SQLite。

镜像文件的存储仓库

  支持多种类型的仓库,它们有普通文件系统、对象存储、RADOS块设备、HTTP、以及亚马逊S3。记住,其中一些仓库仅支持只读方式使用。

元数据定义服务

通用的API,是用于为厂商,管理员,服务,以及用户自定义元数据。这种元数据可用于不同的资源,例如镜像,工件,卷,配额以及集合。一个定义包括了新属性的键,描述,约束以及可以与之关联的资源的类型。

2. 部署需求:安装和配置镜像服务之前,必须创建创建一个数据库、服务凭证和API端点。

[controller@ ~]# mysql -uroot -pabc123  #创建数据并授权

CREATE DATABASE glance;

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'abc123';

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'abc123';

flush privileges;

quit

[controller@ ~]# . admin-openrc   #获得 admin 凭证来获取只有管理员能执行命令的访问权限

[controller@ ~]# openstack user create --domain default --password-prompt glance    #会提示输入密码

 

[controller@ ~]# openstack role add --project service --user glance admin    #添加 admin 角色到 glance 用户和 service 项目上,命令没有输出

[controller@ ~]# openstack service create --name glance --description "OpenStack Image" image  #创建glance服务实体

创建镜像服务的 API 端点

[controller@ ~]# openstack endpoint create --region RegionOne image public http://controller:9292  

 

[controller@ ~]# openstack endpoint create --region RegionOne image internal http://controller:9292

[controller@ ~]# openstack endpoint create --region RegionOne image admin http://controller:9292

3. 服务安装

[controller@ ~]# yum install openstack-glance -y

 

cd /etc/glance/

cp glance-api.conf glance-api.conf.bak

egrep -v "^#|^$" glance-api.conf.bak > glance-api.conf

vi glance-api.conf

[DEFAULT]

notification_driver = noop         #配置 noop 禁用通知,因为他们只适合与可选的Telemetry 服务

[database]

connection = mysql+pymysql://glance:abc123@controller/glance  #配置数据库访问地址

[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 = abc123

[paste_deploy]            #配置认证服务访问

flavor = keystone

[glance_store]            #配置本地文件系统存储和镜像文件位置

stores = file,http

default_store = file

filesystem_store_datadir = /var/lib/glance/images/

:wq

 

cp glance-registry.conf glance-registry.conf.bak

egrep -v "^#|^$" glance-registry.conf.bak > glance-registry.conf

vi glance-registry.conf

[database]

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

[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 = abc123

[paste_deploy]

flavor = keystone

:wq

 

su -s /bin/sh -c "glance-manage db_sync" glance  #将配置写入镜像服务数据库

#启动镜像服务、配置他们随机启动

systemctl enable openstack-glance-api.service openstack-glance-registry.service

systemctl start openstack-glance-api.service openstack-glance-registry.service   

验证操作

cd

[controller@ ~]# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img  #下载测试镜像文件

[controller@ ~]# openstack image create "cirros" --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public     #使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它

 

[controller@ ~]# openstack image list           #确认镜像的上传并验证属性

 

七、安装和配置 Compute 服务,即 nova

1.服务简述

    使用OpenStack计算服务来托管和管理云计算系统。OpenStack计算服务是基础设施即服务(IaaS)系统的主要部分,模块主要由Python实现。

OpenStack计算组件请求OpenStack Identity服务进行认证;请求OpenStack Image服务提供磁盘镜像;为OpenStack dashboard提供用户与管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定(例如,每个项目下可以创建多少实例)。OpenStack组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。

2.部署需求:创建Nova服务所需数据库及相关授权、服务凭证和API端点

controller控制端

[controller@ ~]# mysql -uroot -pabc123

CREATE DATABASE nova_api;

CREATE DATABASE nova;

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'abc123';

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY 'abc123';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'abc123';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'abc123';

flush privileges;

quit


[controller@ ~]# . admin-openrc   #获得admin权限

创建服务证书

[controller@ ~]# openstack user create --domain default --password-prompt nova     #创建nova用户,会提示输入密码

[controller@ ~]# openstack role add --project service --user nova admin             #添加admin 角色到 nova 用户

[controller@ ~]# openstack service create --name nova --description "OpenStack Compute" compute   #创建nova 服务实体

创建计算服务API端点

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

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

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

3.安装服务

[controller@ ~]# yum install -y \

openstack-nova-api \

openstack-nova-conductor \

openstack-nova-console \

openstack-nova-novncproxy \

openstack-nova-scheduler

 

cd /etc/nova/

cp nova.conf nova.conf.bak

egrep -v "^$|^#" nova.conf.bak > nova.conf

vi nova.conf

[DEFAULT]

enabled_apis = osapi_compute,metadata                       #禁用EC2 API

transport_url = rabbit://openstack:abc123@controller

auth_strategy = keystone                                       #配置认证服务访问

my_ip = 192.168.80.184                                         #配置 my_ip使用控制节点的管理接口的IP地址

use_neutron = True                                              #启动网络服务支持

firewall_driver = nova.virt.firewall.NoopFirewallDriver  #关闭防火墙

[api_database]

connection = mysql+pymysql://nova:abc123@controller/nova_api  #配置数据库访问

[database]

connection = mysql+pymysql://nova:abc123@controller/nova  #配置数据库访问

[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 = abc123

[vnc]                     #配置VNC代理使用控制节点的管理IP地址

vncserver_listen = $my_ip

vncserver_proxyclient_address = $my_ip

[glance]

api_servers = http://controller:9292  #配置镜像服务的位置,域名如果无法解析也可以IP地址

[oslo_concurrency]

lock_path = /var/lib/nova/tmp          #配置锁路径

:wq

 

[controller@ ~]# su -s /bin/sh -c "nova-manage api_db sync" nova  #同步Compute 数据库,忽略告警信息

[controller@ ~]# su -s /bin/sh -c "nova-manage db sync" nova

#启动 Compute 服务并将其设置为随系统启动

[controller@ ~]# systemctl enable openstack-nova-api.service \

openstack-nova-consoleauth.service \

openstack-nova-scheduler.service \

openstack-nova-conductor.service \

openstack-nova-novncproxy.service      

 

[controller@ ~]# systemctl start openstack-nova-api.service \

openstack-nova-consoleauth.service \

openstack-nova-scheduler.service \

openstack-nova-conductor.service \

openstack-nova-novncproxy.service

 

[controller@ ~]# nova service-list

 

compute01(计算节点)安装并配置Nova服务

[compute01@ ~]# yum install openstack-nova-compute -y

[compute01@ ~]# egrep -c '(vmx|svm)' /proc/cpuinfo   #确定计算节点是否支持虚拟机的硬件加速 。如果这个命令返回 1或者更大的值,说明计算节点支持硬件加速,一般不需要进行额外的配置。如果这个命令返回``0``,则计算节点不支持硬件加速,必须配置 libvirt使用QEMU而不是使用KVM。

如果不支持更改[compute01@ ~]# vi /etc/nova/nova.conf

[libvirt]

...

virt_type = qemu

:wq

 

[compute01@ ~]# cd /etc/nova/

cp nova.conf nova.conf.bak

egrep -v "^#|^$" nova.conf.bak > nova.conf

vi nova.conf

[DEFAULT]

enabled_apis = osapi_compute,metadata

transport_url = rabbit://openstack:abc123@controller

auth_strategy = keystone

my_ip = 192.168.80.185    #计算节点上的管理网络接口的IP 地址

use_neutron = True

firewall_driver = nova.virt.firewall.NoopFirewallDriver  #网络包括防火墙服务,你必须使用nova.virt.firewall.NoopFirewallDriver驱动程序禁用计算机防火墙服务

[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 = abc123

[vnc]              #启用并配置远程控制台访问

enabled = True

vncserver_listen = 0.0.0.0

vncserver_proxyclient_address = $my_ip

novncproxy_base_url = http://controller:6080/vnc_auto.html    #如果主机无法解析controller主机名,你可以将 controller替换为你控制节点管理网络的IP地址。

[glance]

api_servers = http://controller:9292  #配置镜像服务的位置

[oslo_concurrency]

lock_path = /var/lib/nova/tmp    #配置锁路径

:wq

 

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

[compute01@ ~]# systemctl enable libvirtd.service openstack-nova-compute.service

[compute01@ ~]# systemctl start libvirtd.service openstack-nova-compute.service

controller控制端验证操作

[controller@ ~]# . admin-openrc                        #获得 admin 凭证来获取只有管理员能执行命令的访问权限

[controller@ ~]# openstack compute service list    #在控制节点上执行新节点的检查

 

[controller@ ~]# nova service-list       #列出服务组件,以验证是否成功启动并注册了每个进程  该输出应该显示四个服务组件在控制节点上启用,一个服务组件在计算节点上启用

 

[controller@ ~]# nova endpoints          #列出身份认证服务中的 API 端点来验证身份认证服务的连通性

八、网络服务neutron控制端的安装及配置(在控制节点上)

1.服务简述

OpenStack Networking(neutron),允许创建、插入接口设备,这些设备由其他的OpenStack服务管理。插件式的实现可以容纳不同的网络设备和软件,为OpenStack架构与部署提供了灵活性。

它包含下列组件:

neutron-server

  接收和路由API请求到合适的OpenStack网络插件,以达到预想的目的。

OpenStack网络插件和代理

  插拔端口,创建网络和子网,以及提供IP地址,这些插件和代理依赖于供应商和技术而不同,OpenStack网络基于插件和代理为Cisco 虚拟和物理交换机、NEC OpenFlow产品,Open vSwitch,Linux bridging以及VMware NSX 产品穿线搭桥。

  常见的代理L3(3层),DHCP(动态主机IP地址),以及插件代理。消息队列大多数的OpenStack Networking安装都会用到,用于在neutron-server和各种各样的代理进程间路由信息。也为某些特定的插件扮演数据库的角色,以存储网络状态

OpenStack网络主要和OpenStack计算交互,以提供网络连接到它的实例。

2.部署需求:创建neutron服务数据库,服务凭证和API端点

[controller@ ~]# mysql -u root -pabc123

CREATE DATABASE neutron;    #创建neutron数据库

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'abc123';                #对neutron数据库授予恰当的访问权限

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'abc123';

Flush privileges;

quit

[controller@ ~]# . admin-openrc      #获得 admin 凭证来获取只有管理员能执行命令的访问权限

创建服务证书

[controller@ ~]# openstack user create --domain default --password-prompt neutron                           #创建neutron用户

[controller@ ~]# openstack role add --project service --user neutron admin                                   #添加admin 角色到neutron 用户

[controller@ ~]# openstack service create --name neutron --description "OpenStack Networking" network   #创建neutron服务实体

[controller@ ~]# openstack endpoint create --region RegionOne network public http://controller:9696      #创建网络服务API端点

[controller@ ~]# openstack endpoint create --region RegionOne network internal http://controller:9696

[controller@ ~]# openstack endpoint create --region RegionOne network admin http://controller:9696

[controller@ ~]# yum install openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables -y

 

cd /etc/neutron/

cp neutron.conf neutron.conf.bak

egrep -v "^$|^#" neutron.conf.bak > neutron.conf

vi neutron.conf

[database]                   #配置数据库访问

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

[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 = abc123

[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 = abc123

[oslo_concurrency]

lock_path = /var/lib/neutron/tmp  #配置锁路径

[DEFAULT]

core_plugin = ml2             #启用Layer 2 (ML2)插件模块,路由服务和重叠的IP地址

service_plugins =             #故意缺少值,就可以启用多种服务插件

transport_url = rabbit://openstack:abc123@controller  #配置 "RabbitMQ"消息队列访问

auth_strategy = keystone      #配置认证服务访问

notify_nova_on_port_status_changes = True   #配置网络以能够反映计算网络拓扑变化

notify_nova_on_port_data_changes = True

:wq

 

cd /etc/neutron/plugins/ml2/

cp ml2_conf.ini ml2_conf.ini.bak

egrep -v "^$|^#" ml2_conf.ini.bak > ml2_conf.ini

vi ml2_conf.ini

[ml2]

type_drivers = flat,vlan     #启用flat和VLAN网络

tenant_network_types =     #故意缺少值,这样就可以启用多种网络

mechanism_drivers = linuxbridge  #启用Linux 桥接

extension_drivers = port_security  #启用端口安全扩展驱动

[ml2_type_flat]

flat_networks = provider   #配置公共flat提供网络

[securitygroup]

enable_ipset = True      #启用 ipset 增加安全组的方便性

 :wq


cd /etc/neutron/plugins/ml2/

cp linuxbridge_agent.ini linuxbridge_agent.ini.bak

egrep -v "^$|^#" linuxbridge_agent.ini.bak >linuxbridge_agent.ini

vi linuxbridge_agent.ini

[linux_bridge]

physical_interface_mappings = provider:ens33  #映射公共虚拟网络到公共物理网络接口

[vxlan]              #禁用VXLAN覆盖网络

enable_vxlan = False

[securitygroup]      #启用安全组并配置 Linux 桥接 iptables 防火墙驱动

enable_security_group = True

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

:wq

 

cd /etc/neutron/

cp dhcp_agent.ini dhcp_agent.ini.bak

egrep -v "^$|^#" dhcp_agent.ini.bak > dhcp_agent.ini

vi dhcp_agent.ini

[DEFAULT]        #配置Linux桥接网卡驱动,Dnsmasq DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络访问元数据

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver

dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq

enable_isolated_metadata = True

:wq

 

cd /etc/neutron/

cp metadata_agent.ini metadata_agent.ini.bak

egrep -v "^$|^#" metadata_agent.ini.bak > metadata_agent.ini

vi metadata_agent.ini

[DEFAULT]       #配置访问参数

nova_metadata_ip = controller         #配置元数据主机

metadata_proxy_shared_secret = mate  #配置元数据代理共享密码,自定义

:wq

 

cd /etc/nova/

cp nova.conf nova.conf.nova

vi nova.conf   #新增neutron

[neutron]      

url = http://controller:9696

auth_url = http://controller:35357

auth_type = password

project_domain_name = Default

user_domain_name = Default

region_name = RegionOne

project_name = service

username = neutron

password = abc123

service_metadata_proxy = True

metadata_proxy_shared_secret = mate

:wq

 

#网络服务初始化脚本需要一个超链接/etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini

[controller@ ~]# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

[controller@ ~]# 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   #同步数据库

[controller@ ~]# systemctl restart openstack-nova-api.service   #重启计算API 服务

#启动网络服务并配置他们开机自启动(对所有网络选项)

[controller@ ~]# systemctl enable neutron-server.service \

neutron-linuxbridge-agent.service \

neutron-dhcp-agent.service \

neutron-metadata-agent.service

[controller@ ~]# systemctl start neutron-server.service \

neutron-linuxbridge-agent.service \

neutron-dhcp-agent.service \

neutron-metadata-agent.service

对网络选项2,同样也启用并启动layer-3服务:

[controller@ ~]# systemctl enable neutron-l3-agent.service

[controller@ ~]# systemctl start neutron-l3-agent.service

网络服务neutron计算节点的安装及配置

[compute01@ ~]# yum install openstack-neutron-linuxbridge ebtables ipset -y

配置Networking通用组件,Networking 通用组件的配置包括认证机制、消息队列和插件

cd /etc/neutron/

cp neutron.conf neutron.conf.bak

egrep -v "^$|^#" neutron.conf.bak > neutron.conf

vi neutron.conf

[DEFAULT]

transport_url = rabbit://openstack:abc123@controller   #配置RabbitMQ消息队列访问

auth_strategy = keystone    #配置认证服务访问,在[keystone_authtoken]中注释或者删除其他选项

[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 = abc123

[oslo_concurrency]

lock_path = /var/lib/neutron/tmp    #配置锁路径

:wq

 

配置Linux 桥接代理

cd /etc/neutron/plugins/ml2/

cp linuxbridge_agent.ini linuxbridge_agent.ini.bak

egrep -v "^$|^#" linuxbridge_agent.ini.bak >linuxbridge_agent.ini

vi linuxbridge_agent.ini

[linux_bridge]

physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME  #映射公共虚拟网络到公共物理网络接口

[vxlan]             #禁用VXLAN覆盖网络

enable_vxlan = False

[securitygroup]   #启用安全组并配置 Linux 桥接 iptables 防火墙驱动

enable_security_group = True

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

:wq

 

cd /etc/nova/

cp nova.conf nova.conf.nova

vi nova.conf

[neutron]

url = http://controller:9696

auth_url = http://controller:35357

auth_type = password

project_domain_name = Default

user_domain_name = Default

region_name = RegionOne

project_name = service

username = neutron

password = abc123

:wq

 

[compute01@ nova]# systemctl restart openstack-nova-compute.service  # 重启计算服务

#启动Linux桥接代理并配置它开机自启动

[compute01@ nova]# systemctl enable neutron-linuxbridge-agent.service

[compute01@ nova]# systemctl start neutron-linuxbridge-agent.service

验证安装结果-控制端

[controller@ ~]# . admin-openrc           #获得 admin 凭证来获取只有管理员能执行命令的访问权限

[controller@ ~]# neutron ext-list         #列出加载的扩展,对neutron-server进程是否启动正常进行验证

 

[controller@ ~]# openstack network agent list

[controller@ ~]# neutron agent-list      #列出代理以验证启动 neutron 代理是否成功 ,该输出应该显示在控制节点上有四个代理,在每个计算节点上有一个代理

 

在控制节点安装horizon

1. 服务简述

Openstack项目中的Horizon仪表板组件是以Web界面的形式展示各项服务的,Openstack云系统管理员和终端用户可以通过仪表板管理各项资源和服务。

Horizon通过Openstack的APIs与控制节点通信,分配资源和同步状态

Horizon服务组件允许对其进行定制化的修改,同时,提供一些核心代码类和可重复使用的模板与工具。

2.部署

[controller@ ~]# yum install -y openstack-dashboard

 

cd /etc/openstack-dashboard

cp local_settings local_settings.bak

vi local_settings

OPENSTACK_HOST = "controller"  160

ALLOWED_HOSTS = ['*', ] 29

SESSION_ENGINE = 'django.contrib.sessions.backends.cache' 129行新增

-----去掉#号---------131,136s /^#//g  ---

131 CACHES = {

    132     'default': {

    133         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCa        

 

che',

    134         'LOCATION': 'controller:11211',

    135     },

    136 }

OPENSTACK_KEYSTONE_URL = "http:#%s:5000/v3" % OPENSTACK_HOST   162

OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True  66

-----在66行下新增---------

OPENSTACK_API_VERSIONS = {

    "identity": 3,

    "image": 2,

    "volume": 2,

}


OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'default'  79 #去掉#号

OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user" 168

-----修改--------

279 OPENSTACK_NEUTRON_NETWORK = {

    280     'enable_router': False,

    281     'enable_quotas': False,

    282     'enable_ipv6': False,

    283     'enable_distributed_router': False,

    284     'enable_ha_router': False,

    285     'enable_lb': False,

    286     'enable_firewall': False,

    287     'enable_vpn': False,

    288     'enable_fip_topology_check': False,

 

TIME_ZONE = "Asia/Shanghai" 414

:wq

 

systemctl restart httpd.service memcached.service

3.访问web页面

http://192.168.80.184/dashboard/

域:default  用户名:admin  abc123   用户名:demo abc123

 

 

十、启动一个实例(可以在命令行中创建,也可以在web界面端创建)

web界面上创建步骤参考https://www.cnblogs.com/hukey/p/8047485.html

在命令行上创建参考下篇内容




   
相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页