1、官方文档
OpenStack Installation Guidehttps://docs.openstack.org/install-guide/
本次安装是在Ubuntu 22.04上进行,基本按照OpenStack Installation Guide顺序执行,主要内容包括:
- 环境安装 (已完成)
- OpenStack服务安装
- keyston安装(已完成)
- glance安装 (已完成)
- placement安装(本篇文档安装) ◄──
- 启动一个实例
参考OpenStack Yoga版最小化部署(Minimal deployment for Yoga),顺序安装必须的核心服务,本次安装placement服务。
2、Placement概述
OpenStack项目中的Placement API服务的发展历程和功能:
-
Placement API服务的引入:该服务首次出现在OpenStack的Newton版本(14.0.0)中,当时是作为nova(计算)组件的一部分。
-
从nova到placement的迁移:在OpenStack的Stein版本(19.0.0)中,Placement API服务被分离出来,成为了一个独立的repository(代码库)。
-
REST API和数据模型:Placement API服务有RESTful API栈(表现层状态转移应用编程接口)和数据模型,用来跟踪资源提供者(resource provider)不同类型资源的库存和使用情况。
-
资源提供者:资源提供者可以是计算节点(compute node)、共享存储池(shared storage pool)或IP地址池(IP allocation pool)等。
-
资源跟踪:Placement服务追踪每个资源提供者的资源库存和使用情况。例如,一个实例(instance)在计算节点上创建时,可能会消耗该计算节点RAM和CPU资源,使用来自外部共享存储池的磁盘资源,以及来自外部IP资源池的IP地址,其中计算节点、存储池、IP资源池都是资源提供者角色。
简而言之,Placement API服务是OpenStack中用于管理和跟踪资源分配和使用情况的关键组件,它允许OpenStack更有效地管理和分配其资源。
3、Install and configure Placement for Ubuntu
- 注意安装版本为:openstack-placement 7.0.1.dev3
- 将controller node虚机转到“keystone+glance+wireshark"快照:
3.1 Prerequisites
在安装和配置placement service之前,需要先创建数据库、服务凭证(用户名/密码)、服务API端点。
1、Create the placement database:
root@controller:~# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 31
Server version: 10.6.18-MariaDB-0ubuntu0.22.04.1 Ubuntu 22.04
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> CREATE DATABASE placement;
Query OK, 1 row affected (0.000 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'localhost' \
-> IDENTIFIED BY 'openstack';
Query OK, 0 rows affected (0.002 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON placement.* TO 'placement'@'%' \
-> IDENTIFIED BY 'openstack';
Query OK, 0 rows affected (0.001 sec)
MariaDB [(none)]>
MariaDB [(none)]> quit
Bye
root@controller:~#
2、Configure User and Endpoints
ubcode@osclient:~$ . admin-openrc
ubcode@osclient ~(admin/amdin)$ openstack user create --domain default --password-prompt placement
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field | Value |
+---------------------+----------------------------------+
| domain_id | default |
| enabled | True |
| id | 86d5d1a3d15a441bb48a971007303a67 |
| name | placement |
| options | {} |
| password_expires_at | None |
+---------------------+----------------------------------+
ubcode@osclient ~(admin/amdin)$ openstack role add --project service --user placement admin
ubcode@osclient ~(admin/amdin)$ openstack service create --name placement \
> --description "Placement API" placement
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | Placement API |
| enabled | True |
| id | 639145725f804482a50d4740b0c79c43 |
| name | placement |
| type | placement |
+-------------+----------------------------------+
ubcode@osclient ~(admin/amdin)$ openstack endpoint create --region RegionOne \
> placement public http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 7c147a0d2214463fb2ee6d30fb00330e |
| interface | public |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 639145725f804482a50d4740b0c79c43 |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
ubcode@osclient ~(admin/amdin)$ openstack endpoint create --region RegionOne \
> placement internal http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 27cea9990eff40c78b9b91e5d551ba7d |
| interface | internal |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 639145725f804482a50d4740b0c79c43 |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
ubcode@osclient ~(admin/amdin)$ openstack endpoint create --region RegionOne \
> placement admin http://controller:8778
+--------------+----------------------------------+
| Field | Value |
+--------------+----------------------------------+
| enabled | True |
| id | 2b53d35f30654f46a41c9bed22c9f67e |
| interface | admin |
| region | RegionOne |
| region_id | RegionOne |
| service_id | 639145725f804482a50d4740b0c79c43 |
| service_name | placement |
| service_type | placement |
| url | http://controller:8778 |
+--------------+----------------------------------+
ubcode@osclient ~(admin/amdin)$
3.2 Install and configure components
1、安装软件包
root@controller:~# apt install placement-api
2、Edit the /etc/placement/placement.conf
file
root@controller:~# vi /etc/placement/placement.conf
...
[placement_database]
# connection = sqlite:var/lib/placement/placement.sqlite
connection = mysql+pymysql://placement:openstack@controller/placement
...
[api]
#
# Options under this group are used to define Placement API.
#
# From placement.conf
#
#
# This determines the strategy to use for authentication: keystone or noauth2.
# 'noauth2' is designed for testing only, as it does no actual credential
# checking. 'noauth2' provides administrative credentials only if 'admin' is
# specified as the username.
# (string value)
# Possible values:
# keystone - <No description provided>
# noauth2 - <No description provided>
auth_strategy = keystone
...
[keystone_authtoken]
auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = Default
user_domain_name = Default
project_name = service
username = placement
password = openstack
...
3、Populate the placement
database
root@controller:~# su -s /bin/sh -c "placement-manage db sync" placement
root@controller:~#
3.3 Finalize installation
root@controller:~# service apache2 restart
root@controller:~#
4、Verify Installation
root@controller ~(admin/amdin)# placement-status upgrade check
+-------------------------------------------+
| Upgrade Check Results |
+-------------------------------------------+
| Check: Missing Root Provider IDs |
| Result: Success |
| Details: None |
+-------------------------------------------+
| Check: Incomplete Consumers |
| Result: Success |
| Details: None |
+-------------------------------------------+
| Check: Policy File JSON to YAML Migration |
| Result: Success |
| Details: None |
+-------------------------------------------+
root@controller ~(admin/amdin)#
root@controller ~(admin/amdin)# openstack service list
+----------------------------------+-----------+-----------+
| ID | Name | Type |
+----------------------------------+-----------+-----------+
| 639145725f804482a50d4740b0c79c43 | placement | placement |
| 75fe01049ec648b69e48d200971bf601 | keystone | identity |
| d6a3dadf92e542289c5ebd37e3553cdd | glance | image |
+----------------------------------+-----------+-----------+
root@controller ~(admin/amdin)#
root@controller ~(admin/amdin)# pip3 install osc-placement
bash: pip3: command not found
root@controller ~(admin/amdin)# apt-get update
root@controller ~(admin/amdin)# apt install python3-pip
root@controller ~(admin/amdin)# pip3 install osc-placement
root@controller ~(admin/amdin)# openstack --os-placement-api-version 1.2 resource class list --sort-column name
+----------------------------------------+
| name |
+----------------------------------------+
| DISK_GB |
| FPGA |
| IPV4_ADDRESS |
| MEMORY_MB |
| MEM_ENCRYPTION_CONTEXT |
| NET_BW_EGR_KILOBIT_PER_SEC |
| NET_BW_IGR_KILOBIT_PER_SEC |
| NET_PACKET_RATE_EGR_KILOPACKET_PER_SEC |
| NET_PACKET_RATE_IGR_KILOPACKET_PER_SEC |
| NET_PACKET_RATE_KILOPACKET_PER_SEC |
| NUMA_CORE |
| NUMA_MEMORY_MB |
| NUMA_SOCKET |
| NUMA_THREAD |
| PCI_DEVICE |
| PCPU |
| PGPU |
| SRIOV_NET_VF |
| VCPU |
| VGPU |
| VGPU_DISPLAY_HEAD |
+----------------------------------------+
root@controller ~(admin/amdin)#
root@controller ~(admin/amdin)# openstack --os-placement-api-version 1.6 trait list --sort-column name
+---------------------------------------+
| name |
+---------------------------------------+
| COMPUTE_ACCELERATORS |
| COMPUTE_ARCH_AARCH64 |
| COMPUTE_ARCH_MIPSEL |
...
命令解释:
1、openstack --os-placement-api-version 1.2 resource class list --sort-column name
这条命令是针对OpenStack的Placement API的,用于列出资源类别。下面是对命令各部分的解释:
openstack
: 这是OpenStack命令行客户端的入口点,用于执行与OpenStack相关的各种操作。
--os-placement-api-version 1.2
: 这个选项指定了使用Placement API的版本。在这个例子中,指定的版本是1.2。不同的API版本可能支持不同的功能和参数。
resource class list
: 这是命令的具体操作,用于列出所有可用的资源类别。资源类别是资源类型的抽象,例如,VCPU
、MEMORY_MB
、DISK_GB
等,它们代表了可以被计算节点、存储或网络使用的不同类型的资源。
--sort-column name
: 这个选项指定了输出结果按照哪一列进行排序。在这个例子中,name
列将被用作排序依据,意味着资源类别将按照它们的名称进行排序。当你执行这个命令时,它会连接到Placement API,检索所有资源类别的信息,并按照名称排序后显示出来。这对于管理和理解OpenStack环境中可用的资源类型非常有用,尤其是在进行资源分配和调度时。
2、 openstack --os-placement-api-version 1.6 trait list --sort-column name
这条命令是使用OpenStack命令行接口(CLI)来列出Placement API中的所有资源属性(trait)。下面是对命令各部分的详细解释:
openstack
: 这是OpenStack CLI的命令前缀,用于执行与OpenStack相关的命令。
--os-placement-api-version 1.6
: 这个选项指定了要使用的Placement API的版本。在这个例子中,使用的是版本1.6。不同的API版本可能会支持不同的特性和参数。
trait list
: 这是命令的具体操作,用于列出Placement API中的所有资源属性。资源属性是描述资源提供者(如计算节点、存储池等)特定特性的标签,例如,支持的硬件特性或配置选项。
--sort-column name
: 这个选项指示CLI按照资源属性的名称进行排序。这使得输出结果更加有序,便于用户查看和管理。当你执行这个命令时,CLI会向Placement API发送请求,获取所有资源属性的列表,并按照属性名称进行排序,然后展示这些属性。这对于了解和配置OpenStack环境中的资源特性非常有用,尤其是在需要对资源进行精细控制和调度时。