openstack-mitaka(二) 基于vmware的搭建

目录

一、vmware的环境

 二、配置节点

三、核心组件安装

3.1 搭建安全认证服务

 3.2 搭建镜像服务

3.3 搭建计算节点

3.4 搭建网络NetWorking


一、vmware的环境

单点部署 all-in-one模式:

        rhel7.6虚拟机,至少4G的内存;

        双网卡: eth0: 192.168.19.71 访问Horizon使用,eth1:激活但不分配ip,neutron使用,云主机访问外网用;

        禁用selinux和firewalld;

        虚拟机的cpu需要支持kvm虚拟化,CPU 设为直通模式( host-passthrough 是为了虚拟机里支持 kvm 硬件虚拟化)

openstack-mitaka(二) 基于vmware的搭建_第1张图片

 二、配置节点

官网:OpenStack Docs: 环境

设置控制节点:

##设置地址解析
vim /etc/hosts
-----------------------------
192.168.19.71 server1 controller
192.168.19.72 server2 computer1
192.168.19.73 server3 block1

-----------------------------
# 两块网卡的设置
一块网卡eth33给了ip,另一块网卡eth38(用于云主机通信)可以不给ip,但需要激活

##文件配置完成后,激活
[root@server1 network-scripts]# ifup ens38

##时间同步:--所有节点的时间必须与控制节点的时间相同
----------------------
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
...
allow 192.168.19.0/16        --允许以下网段的NTP客户端访问
----------------------

##启动服务        ----使用timedatectl设置时区--timedatectl set-timezone Asia/Shanghai
systemctl enable --now chronyd

##在节点上同样配置服务,此时的时间同步地址为控制节点主机
----------------------
server 192.168.19.71 iburst
----------------------

##两台主机上分别配置openstack的源
vim /etc/yum.repo.d/openstack.repo
--------------------
[centotack-rocky]
name=openstack-recky
baseurl=https://mirrors.aliyun.com/centos/7/cloud/x86_64/openstack-rocky/
enabled=1
gpgcheck=0

[qemu-kvm]
name=qemu-kvm
baseurl=https://mirrors.aliyun.com/centos/7/virt/x86_64/kvm-common/
enabled=1
gegcheck=0

--------------------

##对yum源进行更新--升级电脑中的安装包
yum update

##yum源
# CentOS-Base.repo
 
[base]
name=CentOS-$releasever - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#released updates 
[updates]
name=CentOS-$releasever - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/updates/x86_64/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/extras/x86_64/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/centosplus/x86_64/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#contrib - packages by Centos Users
[contrib]
name=CentOS-$releasever - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/contrib/x86_64/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

 

openstack-mitaka(二) 基于vmware的搭建_第2张图片

 openstack-mitaka(二) 基于vmware的搭建_第3张图片

 openstack-mitaka(二) 基于vmware的搭建_第4张图片

 openstack-mitaka(二) 基于vmware的搭建_第5张图片

 

##安装openstack
#安装客户端
yum install python-openstackclient

#自动管理 OpenStack 服务的安全策略:
yum install openstack-selinux

#安装数据库
yum install mariadb mariadb-server python2-PyMySQL

##创建并编辑 /etc/my.cnf.d/openstack.cnf

---------------------------------------
[mysqld]
bind-address = 192.168.19.71            --控制节点IP
default-storage-engine = innodb
innodb_file_per_table
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
~                               
---------------------------------------

##设置数据库启动,并开机自启
systemctl enable --now mariadb.service

##初始化数据库的安全
mysql_secure_installation    ---为数据库的root用户设置一个适当的密码(全选yes)

##配置消息队列
        --OpenStack 使用 message queue (消息队列)协调操作和各服务的状态信息。
yum install rabbitmq-server
systemctl enable --now rabbitmq-server.service

##设置消息队列的openstack用户
rabbitmqctl add_user openstack openstack

##设置消息队列中openstack的权限
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

##查看rabbitmq的插件
rabbitmq-plugins list

##激活管理插件
rabbitmq-plugins enable rabbitmq_management

##查看端口
netstat -anltupe   ---5672为主端口,15672为web端口

##登陆页面,默认用户名和密码都是guest
192.168.19.71:15672  

##设置安全组件:Memcached缓存令牌。缓存服务memecached运行在控制节点
yum install memcached python-memcached
systemctl enable --now memcached.service

##检查端口为11211(可以看到这个端口只监听本机,那么其他主机将无法连接它),因此需要变更一下
netstat -antpl | grep 11211
vim /etc/sysconfig/memcached
------------------------------------
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l *"
------------------------------------

【注】消息队列服务一般运行在控制节点上。OpenStack支持好几种消息队列服务包括 RabbitMQ, Qpid, 和 ZeroMQ。不过,大多数发行版本的OpenStack包支持特定的消息队列服务;
这里安装 RabbitMQ 消息队列服务,因为大部分发行版本都支持它。

 openstack-mitaka(二) 基于vmware的搭建_第6张图片

 openstack-mitaka(二) 基于vmware的搭建_第7张图片

 openstack-mitaka(二) 基于vmware的搭建_第8张图片

 openstack-mitaka(二) 基于vmware的搭建_第9张图片

 openstack-mitaka(二) 基于vmware的搭建_第10张图片

 openstack-mitaka(二) 基于vmware的搭建_第11张图片

 openstack-mitaka(二) 基于vmware的搭建_第12张图片

 

三、核心组件安装

3.1 搭建安全认证服务

##组件认证服务安装

1 创建数据库
    --控制节点上安装和配置OpenStack身份认证服务,代码名称keystone。出于性能原因,这个配置部署Fernet令牌和Apache HTTP服务处理请求;
    --在配置 OpenStack 身份认证服务前,必须创建一个数据库和管理员令牌

##用数据库连接客户端以 root 用户连接到数据库服务器;创建 keystone 数据库,并设置相应的权限
[root@controller my.cnf.d]# mysql -u root -p
    > CREATE DATABASE keystone;                    
    > GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
  IDENTIFIED BY 'keystone';
    > GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
  IDENTIFIED BY 'keystone';

##推出,登录测试
 mysql -ukeystone -pkeystone 
> show databases;

##生成一个随机值在初始的配置中作为管理员的令牌。
openssl rand -hex 10

##安装安全组件
yum install openstack-keystone httpd mod_wsgi -y

##编辑文件 /etc/keystone/keystone.conf
--------------------------------------------
[DEFAULT]
...
admin_token = 26384039124a82cfbee6

[database]
...
connection = mysql+pymysql://keystone:keystone@controller/keystone

[token]
...
provider = fernet
--------------------------------------------

#初始化身份认证服务的数据库(以keystone用户身份来同步数据库)
su -s /bin/sh -c "keystone-manage db_sync" keystone        --keystone 是主机中的用户身份

##登录数据库,查看同步的数据
mysql -ukeystone -pkeystone
    >show databases;
    >use keystone;
    >show tables;

##初始化Fernet keys
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

##编辑Apache主配置文件/etc/httpd/conf/httpd.conf ,配置ServerName 选项为控制节点
------------------
ServerName controller

------------------
 ##配置文件/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
    

---------------------------------------------------------

##启动Apache服务
systemctl enable --now httpd.service


openstack-mitaka(二) 基于vmware的搭建_第13张图片

 openstack-mitaka(二) 基于vmware的搭建_第14张图片

 openstack-mitaka(二) 基于vmware的搭建_第15张图片

 openstack-mitaka(二) 基于vmware的搭建_第16张图片

 

##身份认证服务提供服务的目录和他们的位置。每个添加到OpenStack环境中的服务在目录中需要一个 service 实体和一些 API endpoints ;
##默认情况下,身份认证服务数据库不包含支持传统认证和目录服务的信息。必须使用为身份认证服务创建的临时身份验证令牌,来初始化的服务实体和API端点。

2 创建服务实体和API端点    ---配置端点URL(v3版本);配置认证 API 版本
##设置初始化令牌
[root@controller keystone]# head /etc/keystone/keystone.conf 
[root@controller keystone]#  export OS_TOKEN=26384039124a82cfbee6
[root@controller keystone]# export OS_URL=http://controller:35357/v3
[root@controller keystone]# export OS_IDENTITY_API_VERSION=3

##创建服务实体和身份认证服务
[root@controller keystone]# openstack service create \
>   --name keystone --description "OpenStack Identity" identity

##创建认证服务的 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

##查看所创建的endpoint
openstack endpoint list




【注】

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

        OpenStack使用三个API端点变种代表每种服务:admin,internal和public。默认情况下,管理API端点允许修改用户和租户而公共和内部APIs不允许这些操作。在生产环境中,处于安全原因,变种为了服务不同类型的用户可能驻留在单独的网络上。对实例而言,公共API网络为了让顾客管理他们自己的云在互联网上是可见的。管理API网络在管理云基础设施的组织中操作也是有所限制的。内部API网络可能会被限制在包含OpenStack服务的主机上。此外,OpenStack支持可伸缩性的多区域。为了简单起见,本指南为所有端点变种和默认``RegionOne``区域都使用管理网络。

 

openstack-mitaka(二) 基于vmware的搭建_第17张图片

 openstack-mitaka(二) 基于vmware的搭建_第18张图片

 

##创建域,项目,角色,用户
##身份认证服务为每个OpenStack服务提供认证服务。认证服务使用 T domains, projects (tenants), :term:`users`和 :term:`roles`的组合

#创建域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 项目和用户上,使admin可以进行管理:
openstack role add --project admin --user admin admin

##添加到你的环境中每个服务包含独有用户的service 项目
openstack project create --domain default   --description "Service Project" service

##创建``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


 

##验证操作
##因为安全性的原因,关闭临时认证令牌机制(此时已经有两个用户–admin和demo);

##重置``OS_TOKEN``和``OS_URL`` 环境变量:
unset OS_TOKEN OS_URL

##作为 admin 用户,请求认证令牌:
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

##作为 demo 用户,请求认证令牌:
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-mitaka(二) 基于vmware的搭建_第19张图片 

 

openstack-mitaka(二) 基于vmware的搭建_第20张图片

 

##创建Openstack客户环境脚本

##之前使用环境变量和命令选项的组合通过openstack客户端与身份认证服务交互。为了提升客户端操作的效率,OpenStack支持简单的客户端环境变量脚本即OpenRC 文件。这些脚本通常包含客户端所有常见的选项,当然也支持独特的选项。

##创建 admin 和 demo 项目和用户创建客户端环境变量脚本。接下来的部分会引用这些脚本,为客户端操作加载合适的的凭证
[root@controller keystone]# vim 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=demo
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
----------------------------------------------------

[root@controller keystone]# vim 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=admin
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
-----------------------------------------------------

##加载admin-openrc文件来身份认证服务的环境变量位置和admin项目和用户证书;此时,可以列出相应信息(所有的用户、连接端点)

[root@controller keystone]# . admin-openrc 
[root@controller keystone]# openstack token issue
[root@controller keystone]# openstack role list

openstack-mitaka(二) 基于vmware的搭建_第21张图片

 openstack-mitaka(二) 基于vmware的搭建_第22张图片

 3.2 搭建镜像服务

        镜像服务 (glance) 允许用户发现、注册和获取虚拟机镜像。它提供了一个 REST API,允许您查询虚拟机镜像的 metadata 并获取一个现存的镜像。您可以将虚拟机镜像存储到各种位置,从简单的文件系统到对象存储系统—-例如 OpenStack 对象存储, 并通过镜像服务使用。

        OpenStack镜像服务是IaaS的核心服务,它接受磁盘镜像或服务器镜像API请求,和来自终端用户或OpenStack计算组件的元数据定义。它也支持包括OpenStack对象存储在内的多种类型仓库上的磁盘镜像或服务器镜像存储。
        大量周期性进程运行于OpenStack镜像服务上以支持缓存。同步复制(Replication)服务保证集群中的一致性和可用性。其它周期性进程包括auditors, updaters, 和 reapers。
OpenStack镜像服务包括以下组件:
1、glance-api:接收镜像API的调用,诸如镜像发现、恢复、存储。
2、glance-registry:存储、处理和恢复镜像的元数据,元数据包括项诸如大小和类型。注意:glance-registry是私有内部服务,用于服务OpenStack Image服务。不要向用户暴露该服务。
3、数据库:存放镜像元数据,用户是可以依据个人喜好选择数据库的,多数的部署使用MySQL或SQLite。
4、镜像文件的存储仓库:支持多种类型的仓库,它们有普通文件系统、对象存储、RADOS块设备、HTTP、以及亚马逊S3。记住,其中一些仓库仅支持只读方式使用。
5、元数据定义服务:通用的API,是用于为厂商,管理员,服务,以及用户自定义元数据。这种元数据可用于不同的资源,例如镜像,工件,卷,配额以及集合。一个定义包括了新属性的键,描述,约束以及可以与之关联的资源的类型。

##镜像的安装
##用数据库连接客户端以 root 用户连接到数据库服务器;
mysql -u root -p

##创建 glance 数据库;
MariaDB [(none)]> CREATE DATABASE glance;


##对glance数据库授予恰当的权限(使得glance用户可以通过本地和远端登陆数据库)。
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
    ->   IDENTIFIED BY 'glance';

MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%'    IDENTIFIED BY 'glance';

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

##创建服务证书:
##创建 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" image

##创建镜像服务的 API 端点:
openstack endpoint create --region RegionOne \
  image public http://controller:9292
openstack endpoint create --region RegionOne \
  image internal http://controller:9292
openstack endpoint create --region RegionOne \
  image admin http://controller:9292

##安全并配置组件
##安装软件包
yum install openstack-glance

##编辑文件 /etc/glance/glance-api.conf 并完成如下动作:
-------------------------------------------------------------
[database]
...
connection = mysql+pymysql://glance:glance@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 = glance

[paste_deploy]
...
flavor = keystone
----------------------------------------------------

##/etc/glance/glance-registry.conf``并完成如下动作:
----------------------------------------------------
[database]
...
connection = mysql+pymysql://glance:glance@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 = glance

[paste_deploy]
...
flavor = keystone
----------------------------------------------------

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

##启动镜像服务,配置开机自启
systemctl enable --now openstack-glance-api.service \
  openstack-glance-registry.service

【注】控制节点上安装和配置镜像服务(glance)时。这个配置将镜像保存在本地文件系统中。安装和配置镜像服务之前,你必须创建创建一个数据库、服务凭证和API端点。

openstack-mitaka(二) 基于vmware的搭建_第23张图片 

 

openstack-mitaka(二) 基于vmware的搭建_第24张图片

 

##验证操作

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

##下载源镜像:
 wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

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

##确认镜像的上传并验证属性:
openstack image list

openstack-mitaka(二) 基于vmware的搭建_第25张图片

3.3 搭建计算节点

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

        OpenStack计算组件请求OpenStack Identity服务进行认证;请求OpenStack Image服务提供磁盘镜像;为OpenStack dashboard提供用户与管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定(例如,每个项目下可以创建多少实例)。        

        OpenStack组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。

OpenStack计算服务由下列组件所构成:

    nova-api 服务:
    接收和响应来自最终用户的计算API请求。此服务支持OpenStack计算服务API,Amazon EC2 API,以及特殊的管理API用于赋予用户做一些管理的操作。它会强制实施一些规则,发起多数的编排活动,例如运行一个实例。
    nova-api-metadata 服务:
    接受来自虚拟机发送的元数据请求。一般在安装nova-network服务的多主机模式下使用。
    nova-compute服务:
    一个持续工作的守护进程,通过Hypervior的API来创建和销毁虚拟机实例。
    nova-scheduler服务:
    拿到一个来自队列请求虚拟机实例,然后决定那台计算服务器主机来运行它。
    nova-conductor模块:
    媒介作用于nova-compute服务与数据库之间。它排除了由nova-compute服务对云数据库的直接访问。nova-conductor模块可以水平扩展。但是,不要将它部署在运行nova-compute服务的主机节点上。
    nova-cert模块:
    服务器守护进程向Nova Cert服务提供X509证书。用来为euca-bundle-image生成证书。
    nova-consoleauth 守护进程:
    授权控制台代理所提供的用户令牌。
    nova-novncproxy 守护进程:
    提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端。
    nova-spicehtml5proxy 守护进程:
    提供一个代理,用于访问正在运行的实例,通过 SPICE 协议,支持基于浏览器的 HTML5 客户端。
    nova-xvpvncproxy 守护进程:

     提供一个代理,用于访问正在运行的实例,通过VNC协议,支持OpenStack特定的Java客户端。
    nova-cert 守护进程:
    X509 证书。
    nova客户端:
    用于用户作为租户管理员或最终用户来提交命令。
    队列:
    一个在守护进程间传递消息的中央集线器。常见实现有RabbitMQ __ , 以及如Zero MQ __等AMQP消息队列。
    SQL数据库:
    存储构建时和运行时的状态,为云基础设施。

##在control节点安装nova服务

1 用数据库连接客户端以 root 用户连接到数据库服务器;创建 nova_api 和 nova 数据库;对数据库进行正确的授权。

##登录
mysql -u root -p

##创建
CREATE DATABASE nova_api;
CREATE DATABASE nova;

##授权
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
  IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
  IDENTIFIED BY 'nova';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
  IDENTIFIED BY 'nova';

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

3 要创建服务证书,完成这些步骤:

##创建 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

4 创建 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

5 安全并配置组件
 
##安装软件包:
yum install openstack-nova-api openstack-nova-conductor \
  openstack-nova-console openstack-nova-novncproxy \
  openstack-nova-scheduler

##编辑``/etc/nova/nova.conf``文件并完成下面的操作:
---------------------------------------------------
[DEFAULT]
...
enabled_apis = osapi_compute,metadata        --只启用计算和元数据API
rpc_backend = rabbit                         --配置 “RabbitMQ” 消息队列访问
auth_strategy = keystone                     --配置认证服务访问
my_ip = 192.168.19.71                        --本地IP,用控制节点的管理接口的IP 地址。
use_neutron = True                           --使用部分网络功能
firewall_driver = nova.virt.firewall.NoopFirewallDriver

[api_database]
...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api

[database]
...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack

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

[vnc]                            --配置VNC代理使用控制节点的管理接口IP地址
...
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip

[glance]                        --配置镜像服务 API 的位置:
...
api_servers = http://controller:9292

[oslo_concurrency]            --配置锁路径:
...
lock_path = /var/lib/nova/tmp
---------------------------------------------------

##同步Compute 数据库:
su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage db sync" nova

##启动 Compute 服务并将其设置为随系统启动:
systemctl enable --now openstack-nova-api.service \
  openstack-nova-consoleauth.service openstack-nova-scheduler.service \
  openstack-nova-conductor.service openstack-nova-novncproxy.service

##列出服务
openstack compute service list

 computer1:提前设置ip,时间同步

##在computer1节点上配置nova服务

1 安装软件包
yum install openstack-nova-compute

2 编辑``/etc/nova/nova.conf``文件并完成下面的操作:

--------------------------------------------------
[DEFAULT]
...
rpc_backend = rabbit            --消息队列
auth_strategy = keystone        --认证服务
my_ip = 192.168.19.72           --计算节点IP
use_neutron = True              --网络服务
firewall_driver = nova.virt.firewall.NoopFirewallDriver

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack

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

[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 的位置:
...
api_servers = http://controller:9292

[oslo_concurrency]        --配置锁路径:
...
lock_path = /var/lib/nova/tmp
--------------------------------------------------

3 确定您的计算节点是否支持虚拟机的硬件加速。
egrep -c '(vmx|svm)' /proc/cpuinfo
--返回one or greater支持,返回0则不支持,使用 libvirt 来使用 QEMU 去代替 KVM
    --配置:/etc/nova/nova.conf
-----------------
[libvirt]
...
virt_type = qemu
-----------------

4 设置服务自启动
systemctl enable --now libvirtd.service openstack-nova-compute.service
 
##验证操作
1 获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
. admin-openrc

2 列出服务组件,以验证是否成功启动并注册了每个进程:
openstack compute service list

3.4 搭建网络NetWorking

        OpenStack Networking(neutron),允许创建、插入接口设备,这些设备由其他的OpenStack服务管理。插件式的实现可以容纳不同的网络设备和软件,为OpenStack架构与部署提供了灵活性。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和各种各样的代理进程间路由信息。也为某些特定的插件扮演数据库的角色,以存储网络状态。

 

##先决条件
1 创建数据库
    ##连接到数据库:
        mysql -u root -p
    ##创建``neutron`` 数据库:
        CREATE DATABASE neutron;
    ##对``neutron`` 数据库授予合适的访问权限,使用合适的密码替换``NEUTRON_DBPASS``:
        GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
  IDENTIFIED BY 'neutron';
        GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
  IDENTIFIED BY 'neutron';

##获得admin权限
 . admin-openrc

2 创建服务凭证
    ##创建``neutron``用户:
        openstack user create --domain default --password-prompt neutron
    ##添加``admin`` 角色到``neutron`` 用户:
        openstack role add --project service --user neutron 
    ##创建``neutron``服务实体:
        openstack service create --name neutron \
  --description "OpenStack Networking" network

3 创建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

    

 

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

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

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

##配置控制节点的公共网络

##安装组件
yum install openstack-neutron openstack-neutron-ml2 \
  openstack-neutron-linuxbridge ebtables

##配置服务组件
##编辑``/etc/neutron/neutron.conf`` 文件并完成如下操作:
-----------------------------------------------------------
[DEFAULT]
...
core_plugin = ml2
service_plugins =
rpc_backend = rabbit
auth_strategy = keystone
notify_nova_on_port_status_changes = True          --设置网络拓扑
notify_nova_on_port_data_changes = True


[database]
...
connection = mysql+pymysql://neutron:neutron@controller/neutron

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack

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

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

[oslo_concurrency]
...
lock_path = /var/lib/neutron/tmp
-----------------------------------------------------------

##配置 Modular Layer 2 (ML2) 插件--使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施
##编辑``/etc/neutron/plugins/ml2/ml2_conf.ini``文件并完成以下操作:
--------------------------------------------------------------
[ml2]
...
type_drivers = flat,vlan          --启用flat和VLAN网络:
tenant_network_types =            --禁用私有网络
mechanism_drivers = linuxbridge   --启用Linuxbridge机制:
extension_drivers = port_security --启用端口安全扩展驱动:

[ml2_type_flat]
...
flat_networks = provider        --配置公共虚拟网络为flat网络

[securitygroup]                 --启用 ipset 增加安全组规则的高效性:
...
enable_ipset = True
--------------------------------------------------------------

##配置Linuxbridge代理--为实例建立layer-2虚拟网络并且处理安全组规则。
##编辑``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件并且完成以下操作:
--------------------------------------------------------------
[linux_bridge]        ---将公共虚拟网络和公共物理网络接口对应起来
physical_interface_mappings = provider:ens33

[vxlan]                ---禁止VXLAN覆盖网络
enable_vxlan = False

[securitygroup]        --启用安全组并配置 Linuxbridge iptables firewall driver
...
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
--------------------------------------------------------------

##配置DHCP代理
##编辑``/etc/neutron/dhcp_agent.ini``文件并完成下面的操作:
--------------------------------------------------------------
[DEFAULT]        --配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
...
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 = controller
--------------------------------------------------------------

##为计算节点配置网络服务
##编辑``/etc/nova/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 = neutron

service_metadata_proxy = True
metadata_proxy_shared_secret = controller


--------------------------------------------------------------

##完成安装
##网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini``指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini``:
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

##重启计算API 服务:
systemctl restart openstack-nova-api.service

##设置开机自启
systemctl enable --enable neutron-server.service \
  neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
  neutron-metadata-agent.service
##计算节点安装网络组件

##安装组件
yum install openstack-neutron-linuxbridge ebtables ipset

##配置通用组件
##编辑``/etc/neutron/neutron.conf`` 文件并完成如下操作:
----------------------------------------------------------
在``[database]`` 部分,注释所有``connection`` 项,因为计算节点不直接访问数据库。

[DEFAULT]            
...
rpc_backend = rabbit            --消息队列
auth_strategy = keystone

[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = openstack

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

[oslo_concurrency]
...
lock_path = /var/lib/neutron/tmp
----------------------------------------------------------

##配置Linuxbridge代理
##编辑``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件并且完成以下操作:
----------------------------------------------------------
[linux_bridge]
physical_interface_mappings = provider:ens33

[vxlan]                --禁止VXLAN覆盖网络:
enable_vxlan = False

[securitygroup]        --启用安全组并配置 Linuxbridge iptables firewall driver:
...
enable_security_group = True
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
----------------------------------------------------------

##为计算节点配置网络服务
##编辑``/etc/nova/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 = neutron
----------------------------------------------------------

##完成安装
##重启计算服务:
systemctl restart openstack-nova-compute.service

##启动Linuxbridge代理并配置它开机自启动:
systemctl enable --now neutron-linuxbridge-agent.service
##验证操做--列出加载的扩展来验证neutron-server进程是否正常启动
 . admin-openrc
neutron ext-list

至此核心组件搭建完成,可进行简单使用测试。

你可能感兴趣的:(openstack,openstack,java,linux)