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

  • Post author:
  • Post category:其他












一、什么是

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



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
















版权声明:本文为rujianxuezha原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。