OpenStack VDI 部署 openstack部署流程_单元测试

//在 [mysqld] 部分,设置 bind-address值为控制节点的管理网络IP地址以使得其它节点可以通过管理网络访问数据库:
 [root@server1 ~]# vim /etc/my.cnf.d/openstack.cnf
 [mysqld]
 bind-address = 172.25.254.11
 default-storage-engine = innodb
 innodb_file_per_table
 max_connections = 4096
 collation-server = utf8_general_ci
 character-set-server = utf8

OpenStack VDI 部署 openstack部署流程_学习_02

完成安装

[root@server1 ~]# systemctl enable mariadb.service
 [root@server1 ~]# systemctl start mariadb.service

OpenStack VDI 部署 openstack部署流程_功能测试_03

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

[root@server1 ~]# mysql_secure_installation

OpenStack VDI 部署 openstack部署流程_API_04

安装MongoDB包:

[root@server1 ~]# yum install mongodb-server mongodb
 [root@server1 ~]# vim /etc/mongod.conf
 bind_ip = 172.25.254.11

OpenStack VDI 部署 openstack部署流程_单元测试_05

默认情况下,MongoDB会在/var/lib/mongodb/journal 目录下创建几个 1 GB 大小的日志文件。如果你想将每个日志文件大小减小到128MB并且限制日志文件占用的总空间为512MB,配置 smallfiles 的值:

OpenStack VDI 部署 openstack部署流程_功能测试_06

完成安装

启动MongoDB 并配置它随系统启动:

[root@server1 ~]# systemctl enable mongod.service
[root@server1 ~]# systemctl start mongod.service

OpenStack VDI 部署 openstack部署流程_单元测试_07

消息队列

安全并配置组件

1.安装包:

[root@server1 ~]# yum install -y rabbitmq-server

OpenStack VDI 部署 openstack部署流程_OpenStack VDI 部署_08

2.启动消息队列服务并将其配置为随系统启动:

[root@server1 ~]# systemctl enable rabbitmq-server.service
 [root@server1 ~]# systemctl start rabbitmq-server.service

OpenStack VDI 部署 openstack部署流程_功能测试_09

3.查看端口:

[root@server1 ~]# netstat -antlp | grep :5672

OpenStack VDI 部署 openstack部署流程_OpenStack VDI 部署_10

添加 openstack 用户,密码 为openstack

[root@server1 ~]# rabbitmqctl add_user openstack openstack

OpenStack VDI 部署 openstack部署流程_API_11

openstack用户配置写和读权限:

[root@server1 ~]# rabbitmqctl set_permissions openstack “.*” “.*” “.*”

OpenStack VDI 部署 openstack部署流程_API_12


[root@server1 ~]# rabbitmq-plugins list

OpenStack VDI 部署 openstack部署流程_单元测试_13

[root@server1 ~]# rabbitmq-plugins enable rabbitmq_management

OpenStack VDI 部署 openstack部署流程_学习_14


[root@server1 ~]# netstat -antlp | grep :15672

OpenStack VDI 部署 openstack部署流程_API_15

访问 http://172.25.254.11:15672/

OpenStack VDI 部署 openstack部署流程_单元测试_16

OpenStack VDI 部署 openstack部署流程_功能测试_17

Memcached

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

安全并配置组件

[root@server1 ~]# yum install memcached python-memcached
 启动 memcached
 [root@server1 ~]# systemctl enable memcached.service
 [root@server1 ~]# systemctl start memcached.service

OpenStack VDI 部署 openstack部署流程_单元测试_18

认证服务

Openstack 身份认证服务
在控制节点
进入 mysql 创建 keystone 数据库并授予权限

在你配置 OpenStack 身份认证服务前,你必须创建一个数据库和管理员令牌。

1、完成下面的步骤以创建数据库

数据库连接客户端以 root 用户连接到数据库服务器:

[root@server1 ~]# mysql -uroot -p        //我在这里的密码是redhat
创建 keystone 数据库:
 MariaDB [(none)]> create database keystone;对keystone数据库授予恰当的权限:
MariaDB [(none)]> grant all privileges on keystone.* to ‘keystone’@‘localhost’ identified by ‘keystone’;
退出数据库客户端。
 MariaDB [(none)]> exit

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

[root@server1 ~]# openssl rand -hex 10
 29c27f7d00a35bc3380a安全并配置组件
运行以下命令来安装 httpd,mod_wsgi,keystoen
 [root@server1 ~]# yum install -y openstack-keystone httpd mod_wsgi

3、编辑文件 /etc/keystone/keystone.conf 并完成如下动作:

[root@server1 ~]# vim /etc/keystone/keystone.conf
[DEFAULT]                                                       //在[DEFAULT]部分,定义初始管理令牌的值
 admin_token = 29c27f7d00a35bc3380

a

OpenStack VDI 部署 openstack部署流程_OpenStack VDI 部署_19

[database]
 connection = mysql+pymysql://keystone:keystone@controller/keystone           //在 [database] 部分,配置数据库访问

OpenStack VDI 部署 openstack部署流程_OpenStack VDI 部署_20

[token]
provider = fernet                             //在[token]部分,配置Fernet UUID令牌的提供者。

OpenStack VDI 部署 openstack部署流程_OpenStack VDI 部署_21

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

[root@server1 ~]# su -s /bin/sh -c “keystone-manage db_sync” keystone
5、初始化Fernet keys:
[root@server1 ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

配置 Apache HTTP 服务器

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

[root@server1 ~]# vim /etc/httpd/conf/httpd.conf
 ServerName controller

OpenStack VDI 部署 openstack部署流程_功能测试_22

2、用下面的内容创建文件 /etc/httpd/conf.d/wsgi-keystone.conf。

[root@server1 ~]# vim /etc/httpd/conf.d/wsgi-keystone.conf
 Listen 5000
 Listen 35357<VirtualHost *:5000>
     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<Directory /usr/bin>
         Require all granted
     <VirtualHost *:35357>
     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<Directory /usr/bin>
         Require all granted


   

OpenStack VDI 部署 openstack部署流程_单元测试_23

启动 Apache HTTP 服务:

[root@server1 ~]# systemctl enable httpd.service
 [root@server1 ~]# systemctl start httpd.service

OpenStack VDI 部署 openstack部署流程_API_24

创建服务实体和API端点

1、配置认证令牌:

[root@server1 ~]# export OS_TOKEN=29c27f7d00a35bc3380a
2、配置端点URL:
 [root@server1 ~]# export OS_URL=http://controller:35357/v33、配置认证 API 版本:
 [root@server1 ~]# export OS_IDENTITY_API_VERSION=3

OpenStack VDI 部署 openstack部署流程_单元测试_25

创建服务实体和API端点

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

创建服务实体和身份认证服务:
[root@server1 ~]# openstack service create --name keystone --description “OpenStack Identity” identity
创建认证服务的 API 端点:
 [root@server1 ~]# openstack endpoint create --region RegionOne identity public http://controller:5000/v3
 [root@server1 ~]# openstack endpoint create --region RegionOne identity admin http://controller:35357/v3

创建域、项目、用户和角色

1.创建域default:
 [root@server1 ~]# openstack domain create --description “Default Domain” default
 2.在你的环境中,为进行管理操作,创建管理的项目、用户和角色:创建 admin 项目
 [root@server1 ~]# openstack project create --domain default --description “Admin Project” admin
 创建 admin 用户
 [root@server1 ~]# openstack user create --domain default --password-prompt admin
 创建 admin 角色
 [root@server1 ~]# openstack role create admin添加admin 角色到 admin 项目和用户上:
[root@server1 ~]# $ openstack role add --project admin --user admin admin          //这个命令执行后没有输出。
3.本指南使用一个你添加到你的环境中每个服务包含独有用户的service 项目。创建service项目:
[root@server1 ~]# openstack project create --domain default  --description “Service Project” service
4.常规(非管理)任务应该使用无特权的项目和用户。作为例子,本指南创建 demo 项目和用户。
创建demo 项目:
[root@server1 ~]# penstack project create --domain default --description “Demo Project” demo
//当为这个项目创建额外用户时,不要重复这一步。
创建demo 用户:
[root@server1 ~]#  openstack user create --domain default --password-prompt demo
创建 user 角色:
[root@server1 ~]#  openstack role create user
添加 user角色到 demo 项目和用户:
[root@server1 ~]# openstack role add --project demo --user demo user

//你可以重复此过程来创建额外的项目和用户。

验证操作

//在控制节点上执行这些命令。
1.重置OS\_TOKEN和OS\_URL 环境变量:
 unset OS_TOKEN OS_URL2.作为 admin 用户,请求认证令牌:
[root@server1 ~]# 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用户的密码。
3.作为demo 用户,请求认证令牌:
[root@server1 ~]# 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 用户的密码和API端口5000,这样只会允许对身份认证服务API的常规(非管理)访问。

创建 OpenStack 客户端环境脚本

创建脚本

1.编辑文件 admin-openrc 并添加如下内容:

[root@server1 ~]# vim admin-openrc                           //将 ADMIN_PASS 为在认证服务中为 admin 用户选择的密码,我的为westos
export OS_PROJECT_DOMAIN_NAME=default
 export OS_USER_DOMAIN_NAME=default
 export OS_PROJECT_NAME=admin
 export OS_USERNAME=admin
 export OS_PASSWORD=westos
 export OS_AUTH_URL=http://controller:35357/v3
 export OS_IDENTITY_API_VERSION=3
 export OS_IMAGE_API_VERSION=2

OpenStack VDI 部署 openstack部署流程_OpenStack VDI 部署_26

2.编辑文件 demo-openrc 并添加如下内容:

[root@server1 ~]# vim demo-openrc                  //将 DEMO_PASS 为在认证服务中为 demo 用户选择的密码,我这里也是westos
export OS_PROJECT_DOMAIN_NAME=default
 export OS_USER_DOMAIN_NAME=default
 export OS_PROJECT_NAME=demo
 export OS_USERNAME=demo
 export OS_PASSWORD=westos
 export OS_AUTH_URL=http://controller:5000/v3
 export OS_IDENTITY_API_VERSION=3
 export OS_IMAGE_API_VERSION=2

OpenStack VDI 部署 openstack部署流程_API_27

使用脚本

1.加载admin-openrc文件来身份认证服务的环境变量位置和admin项目和用户证书:

[root@server1 ~]# . admin-openrc
2.请求认证令牌:
[root@server1 ~]# openstack token issue

镜像服务

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

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

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

数据库  :存放镜像元数据,用户是可以依据个人喜好选择数据库的,多数的部署使用MySQL或SQLite。

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

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

安装和配置

安装和配置镜像服务之前,你必须创建创建一个数据库、服务凭证和API端点。

1.完成下面的步骤以创建数据库:

用数据库连接客户端以 root 用户连接到数据库服务器:

[root@server1 ~]# mysql -u root -p

OpenStack VDI 部署 openstack部署流程_OpenStack VDI 部署_28

创建 glance 数据库:

OpenStack VDI 部署 openstack部署流程_功能测试_29

glance数据库授予恰当的权限:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@‘localhost’ IDENTIFIED BY ‘glance’;
 Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO ‘glance’@‘%’ IDENTIFIED BY ‘glance’;

OpenStack VDI 部署 openstack部署流程_API_30

退出数据库客户端。

OpenStack VDI 部署 openstack部署流程_功能测试_31

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

[root@server1 ~]# . admin-openrc
3.要创建服务证书,完成这些步骤:
创建 glance 用户:
[root@server1 ~]# openstack user create --domain default --password-prompt glance
添加 admin 角色到 glance 用户和 service 项目上。
[root@server1 ~]# openstack role add --project service --user glance admin              //这个命令执行后没有输出。
创建glance服务实体:
[root@server1 ~]# openstack service create --name glance --description “OpenStack Image” image
创建镜像服务的 API 端点:
[root@server1 ~]# openstack endpoint create --region RegionOne image public http://controller:9292
[root@server1 ~]# openstack endpoint create --region RegionOne image internal http://controller:9292
[root@server1 ~]# openstack endpoint create --region RegionOne  image admin http://controller:9292

安全并配置组件

1.安装软件包:

[root@server1 ~]# yum install openstack-glance

OpenStack VDI 部署 openstack部署流程_功能测试_32

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

[root@server1 ~]# vim /etc/glance/glance-api.conf
在 [database] 部分,配置数据库访问:
[database]
 connection = mysql+pymysql://glance:glance@controller/glance

OpenStack VDI 部署 openstack部署流程_OpenStack VDI 部署_33

在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问:

[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

OpenStack VDI 部署 openstack部署流程_OpenStack VDI 部署_34

[paste_deploy]
flavor = keystone

OpenStack VDI 部署 openstack部署流程_学习_35

//GLANCE_PASS 为认证服务中 glance 用户选择的密码。

//在 [keystone_authtoken] 中注释或者删除其他选项。

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

[glance_store]
 stores = file,http
 default_store = file
 filesystem_store_datadir = /var/lib/glance/images/

OpenStack VDI 部署 openstack部署流程_功能测试_36

3.编辑文件 []( )/etc/glance/glance-registry.conf并完成如下动作:

[root@server1 ~]# vim /etc/glance/glance-registry.conf

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

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

在 [keystone_authtoken] 和 [paste_deploy] 部分,配置认证服务访问:

[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

OpenStack VDI 部署 openstack部署流程_单元测试_37

[paste_deploy]
 flavor = keystone

//密码为镜像服务选择的密码。

4.写入镜像服务数据库

[root@server1 ~]# su -s /bin/sh -c “glance-manage db_sync” glance

OpenStack VDI 部署 openstack部署流程_OpenStack VDI 部署_38

查看 glance 数据库是否有数据已经同步:

[root@server1 ~]# mysql -uroot -p
MariaDB [(none)]> use glance;

OpenStack VDI 部署 openstack部署流程_API_39

MariaDB [glance]> show tables;

OpenStack VDI 部署 openstack部署流程_OpenStack VDI 部署_40

完成安装

启动镜像服务:

[root@server1 ~]# systemctl enable openstack-glance-api.service openstack-glance-registry.service
[root@server1 ~]# systemctl start openstack-glance-api.service openstack-glance-registry.service

OpenStack VDI 部署 openstack部署流程_API_41

验证操作

在控制节点上执行这些命令

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

[root@server1 ~]# . admin-openrc
 [root@server1 ~]# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
 -bash: wget: command not found                          //没有此命令如果您的发行版里没有包含wget,请安装它
 [root@server1 ~]# yum install -y wget          //进行下载2.下载源镜像:
[root@server1 ~]# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

OpenStack VDI 部署 openstack部署流程_API_42

该过程下载有点慢

3.使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它:

[root@server1 ~]# openstack image create “cirros” --file cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public
4.确认镜像的上传并验证属性:
[root@server1 ~]# openstack image list

计算服务概览

OpenStack计算服务由下列组件所构成:
nova-api 服务
nova-api-metadata 服务
[]( )nova-compute服务
[]( )nova-scheduler服务
[]( )nova-conductor模块
[]( )nova-cert模块
nova-network worker 守护进程
nova-consoleauth 守护进程
nova-novncproxy 守护进程
nova-spicehtml5proxy 守护进程
nova-xvpvncproxy 守护进程
nova-cert 守护进程
[]( )nova客户端

队列

SQL数据库

安装并配置控制节点

这个部分将描述如何在控制节点上安装和配置 Compute 服务

1.为了创建数据库,必须完成这些步骤:

用数据库连接客户端以 root 用户连接到数据库服务器:

[root@server1 ~]# mysql -u root -p
创建 nova_api 和 nova 数据库:
MariaDB [(none)]> CREATE DATABASE nova_api;
MariaDB [(none)]> CREATE DATABASE nova;

OpenStack VDI 部署 openstack部署流程_功能测试_43

对数据库进行正确的授权:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO ‘nova’@‘localhost’
     -> IDENTIFIED BY ‘nova’;MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO ‘nova’@‘%’
     -> IDENTIFIED BY ‘nova’;MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO ‘nova’@‘localhost’
     -> IDENTIFIED BY ‘nova’;MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO ‘nova’@‘%’
     -> IDENTIFIED BY ‘nova’;

OpenStack VDI 部署 openstack部署流程_API_44

退出数据库客户端。

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

[root@server1 ~]# . admin-openrc
3.要创建服务证书,完成这些步骤:
创建 nova 用户:
[root@server1 ~]# openstack user create --domain default --password-prompt nova
给 nova 用户添加 admin 角色:
[root@server1 ~]# $ openstack role add --project service --user nova admin
创建 nova 服务实体:
[root@server1 ~]# openstack service create --name nova --description “OpenStack Compute” compute
4.创建 Compute 服务 API 端点 :
[root@server1 ~]# openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%(tenant_id)s
[root@server1 ~]# openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%(tenant_id)s
[root@server1 ~]# openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%(tenant_id)s

安全并配置组件

1.安装软件包:



d --project service --user nova admin
创建 nova 服务实体:
[root@server1 ~]# openstack service create --name nova --description “OpenStack Compute” compute
4.创建 Compute 服务 API 端点 :
[root@server1 ~]# openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%(tenant_id)s
[root@server1 ~]# openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%(tenant_id)s
[root@server1 ~]# openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%(tenant_id)s

安全并配置组件

1.安装软件包:

[外链图片转存中…(img-6JIJD57n-1715811915498)]
[外链图片转存中…(img-PAp1joaw-1715811915499)]