Nova服务的基本使用

1. Nova简介

计算服务是OpenStack最核心的服务之一,负责维护和管理云环境的计算资源,它在OpenStack项目中代号是nova。

Nova自身并没有提供任何虚拟化能力,它提供计算服务,使用不同的虚拟化驱动来与底层支持的Hypervisor(虚拟机管理器)进行交互。所有的计算实例(虚拟服务器)由Nova进行生命周期的调度管理(启动、挂起、停止、删除等)。

Nova需要Keystone、Glance、Neutron、Cinder和Swift等其他服务的支持,能与这些服务集成,实现如加密磁盘、裸金属计算实例等。


2. Nova架构

Nova项目最初的源代码由美国国家航空航天局(NASA)贡献,截至Ocata版本,Nova项目已发行了十几个版本,也是社区所有项目中最为成熟和用户生产环境部署率最高的项目。在2010年OpenStack项目成立之初,Nova项目主要分为Nova-Compute、Nova-volume和Nova-network三大功能模块。在2012年9月OpenStack的Folsom版本发行时,社区才将Nova-volume和Nova-network独立出来分别构建了Cinder和Quantum项目(后因商标原因更名为Neutron项目)。Nova服务除了Nova-Compute、Nova-volume和Nova-network三大功能模块之外,还有处理RESTful API请求的Nova-API模块、调度Nova-Compute的Nova-scheduler模块、用以模块信息交互,消息队列系统和配置及状态数据存储的数据库。而在早期的OpenStack版本中,仅有Nova、Swift和Glance三大项目,如果用户不准备使用对象存储Swift,则Nova和Glance项目即构成了早期的OpenStack云平台。如图2-1所示。

图2-1 Nova架构图

在OpenStack的Folsom版本发行后,Nova-volume和Nova-network被独立成为块存储Cinder项目和网络Neutron项目,而Nova自身的功能模块也被不断细分,除了Nova-Compute和Nova-API功能模块,以及消息队列和数据库之外,Nova项目还构建了Nova-cert、Nova-Conductor、Nova-consoleauth和nova-console等模块。块存储Cinder项目和网络服务Neutron独立后,OpenStack中三大核心功能计算、存储和网络项目之间的逻辑架构如图2-2所示。

3. 创建flavor类型

flavor类型为OpenStack在创建云主机时需要提供的云主机大小类型,云主机的资源大小可使用不同的flavor类型来进行定义。

(1)创建flavor类型

[root@controller ~]# openstack help  flavor create 
usage: openstack flavor create [-h] [-f {json,shell,table,value,yaml}]
                               [-c COLUMN] [--max-width ]
                               [--fit-width] [--print-empty] [--noindent]
                               [--prefix PREFIX] [--id ] [--ram ]
                               [--disk ] [--ephemeral ]
                               [--swap ] [--vcpus ]
                               [--rxtx-factor ] [--public | --private]
                               [--property ] [--project ]
                               [--project-domain ]
                               

Create new flavor

使用命令创建一个flavor,10G的硬盘大小,1G内存,2颗vcpu,ID为4,名称为centos。命令如下:

[root@controller ~]# openstack flavor create --disk 10 --ram 1024  --vcpus 2 --id 4 centos
+----------------------------+--------+
| Field                      | Value  |
+----------------------------+--------+
| OS-FLV-DISABLED:disabled   | False  |
| OS-FLV-EXT-DATA:ephemeral  | 0      |
| disk                       | 10     |
| id                         | 4      |
| name                       | centos |
| os-flavor-access:is_public | True   |
| properties                 |        |
| ram                        | 1024   |
| rxtx_factor                | 1.0    |
| swap                       |        |
| vcpus                      | 2      |
+----------------------------+--------+

(2)查看flavor类型

使用“openstack flavor list”命令查看flavor类型列表,命令如下:

[root@controller ~]# openstack flavor list
+----+-----------+------+------+-----------+-------+-----------+
| ID | Name      |  RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+-----------+------+------+-----------+-------+-----------+
| 1  | m1.tiny   |  512 |   10 |         0 |     1 | True      |
| 2  | m1.small  | 1024 |   20 |         0 |     1 | True      |
| 3  | m1.medium | 2048 |   40 |         0 |     2 | True      |
| 4  | centos    | 1024 |   10 |         0 |     2 | True      |
+----+-----------+------+------+-----------+-------+-----------+

也可以使用“openstack flavor show”命令查看具体的flavor类型的详细信息。命令格式如下:

[root@controller ~]# openstack help flavor show
usage: openstack flavor show [-h] [-f {json,shell,table,value,yaml}]
                             [-c COLUMN] [--max-width ] [--fit-width]
                             [--print-empty] [--noindent] [--prefix PREFIX]
                             

 通过命令查看创建的“centos”的flavor类型详细信息。命令如下:

[root@controller ~]# openstack flavor show centos
+----------------------------+--------+
| Field                      | Value  |
+----------------------------+--------+
| OS-FLV-DISABLED:disabled   | False  |
| OS-FLV-EXT-DATA:ephemeral  | 0      |
| access_project_ids         | None   |
| disk                       | 10     |
| id                         | 4      |
| name                       | centos |
| os-flavor-access:is_public | True   |
| properties                 |        |
| ram                        | 1024   |
| rxtx_factor                | 1.0    |
| swap                       |        |
| vcpus                      | 2      |
+----------------------------+--------+
4. 访问安全组

访问安全组是OpenStack提供给云主机的一个访问策略控制组,通过安全组中的策略可以控制云主机的出入访问规则。

(1)查看访问安全组

使用命令“openstack security group list”可以查看当前所创建的访问安全组列表。命令如下:

[root@controller ~]# openstack security group list
+--------------------------------------+---------+------------------------+----------------------------------+------+
| ID                                   | Name    | Description            | Project                          | Tags |
+--------------------------------------+---------+------------------------+----------------------------------+------+
| dc3518d1-30ee-46e7-8fea-373bbef940c1 | default | Default security group | bf368e64a3e64d9c9ae695253f1f3879 | []   |
+--------------------------------------+---------+------------------------+----------------------------------+------+

 “default”为openstack平台自带的安全组,通过命令可以查看安全组中的安全规则,命令如下:

[root@controller ~]#  openstack  security group rule list default
+--------------------------------------+-------------+-----------+-----------+------------+--------------------------------------+
| ID                                   | IP Protocol | Ethertype | IP Range  | Port Range | Remote Security Group                |
+--------------------------------------+-------------+-----------+-----------+------------+--------------------------------------+
| 221068bb-3c65-4ef5-b9b4-f9771d371ee5 | None        | IPv4      | 0.0.0.0/0 |            | None                                 |
| 78fffb5c-8358-4fc3-9122-ea30d0494aa1 | None        | IPv6      | ::/0      |            | None                                 |
| bb8765ff-3d6b-4e4d-9d46-7ba10a27de98 | None        | IPv6      | ::/0      |            | dc3518d1-30ee-46e7-8fea-373bbef940c1 |
| d51385d4-6f51-4c0c-8ceb-3ca0c5d4007b | None        | IPv4      | 0.0.0.0/0 |            | dc3518d1-30ee-46e7-8fea-373bbef940c1 |
+--------------------------------------+-------------+-----------+-----------+------------+--------------------------------------+

在安全规则的列表中,不能看出每条规则的具体策略,通过使用命令“openstack security group rule show”查看规则的详细信息。命令如下:

[root@controller ~]# openstack  security group rule show 221068bb-3c65-4ef5-b9b4-f9771d371ee5
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field             | Value                                                                                                                                                |
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| created_at        | 2024-06-20T08:14:24Z                                                                                                                                 |
| description       | None                                                                                                                                                 |
| direction         | egress                                                                                                                                               |
| ether_type        | IPv4                                                                                                                                                 |
| id                | 221068bb-3c65-4ef5-b9b4-f9771d371ee5                                                                                                                 |
| location          | cloud='', project.domain_id=, project.domain_name='demo', project.id='bf368e64a3e64d9c9ae695253f1f3879', project.name='admin', region_name='', zone= |
| name              | None                                                                                                                                                 |
| port_range_max    | None                                                                                                                                                 |
| port_range_min    | None                                                                                                                                                 |
| project_id        | bf368e64a3e64d9c9ae695253f1f3879                                                                                                                     |
| protocol          | None                                                                                                                                                 |
| remote_group_id   | None                                                                                                                                                 |
| remote_ip_prefix  | 0.0.0.0/0                                                                                                                                            |
| revision_number   | 0                                                                                                                                                    |
| security_group_id | dc3518d1-30ee-46e7-8fea-373bbef940c1                                                                                                                 |
| tags              | []                                                                                                                                                   |
| updated_at        | 2024-06-20T08:14:24Z                                                                                                                                 |
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+

(2)创建访问安全组

创建一个新的安全组,命令格式如下:

[root@controller ~]# openstack help security group create 
usage: openstack security group create [-h] [-f {json,shell,table,value,yaml}]
                                       [-c COLUMN] [--max-width ]
                                       [--fit-width] [--print-empty]
                                       [--noindent] [--prefix PREFIX]
                                       [--description ]
                                       [--project ]
                                       [--project-domain ]
                                       

使用命令创建新的安全组规则,命令如下:

[root@controller ~]# openstack security group create test
+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field           | Value                                                                                                                                                 |
+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+
| created_at      | 2024-06-20T10:11:40Z                                                                                                                                  |
| description     | test                                                                                                                                                  |
| id              | a8f59cae-45b2-446e-a88e-c0b2433b7706                                                                                                                  |
| location        | cloud='', project.domain_id=, project.domain_name='demo', project.id='bf368e64a3e64d9c9ae695253f1f3879', project.name='admin', region_name='', zone=  |
| name            | test                                                                                                                                                  |
| project_id      | bf368e64a3e64d9c9ae695253f1f3879                                                                                                                      |
| revision_number | 1                                                                                                                                                     |
| rules           | created_at='2024-06-20T10:11:40Z', direction='egress', ethertype='IPv4', id='1b14efde-e44c-4ed3-90d3-1b6a2952110e', updated_at='2024-06-20T10:11:40Z' |
|                 | created_at='2024-06-20T10:11:40Z', direction='egress', ethertype='IPv6', id='9b54e9cf-b421-496a-8862-42118ac952ba', updated_at='2024-06-20T10:11:40Z' |
| tags            | []                                                                                                                                                    |
| updated_at      | 2024-06-20T10:11:40Z                                                                                                                                  |
+-----------------+-------------------------------------------------------------------------------------------------------------------------------------------------------+

(3)删除访问安全组

可以使用命令删除不需要使用的访问安全组,命令如下:

[root@controller ~]# openstack security group delete test
[root@controller ~]# openstack security group list
+--------------------------------------+---------+------------------------+----------------------------------+------+
| ID                                   | Name    | Description            | Project                          | Tags |
+--------------------------------------+---------+------------------------+----------------------------------+------+
| dc3518d1-30ee-46e7-8fea-373bbef940c1 | default | Default security group | bf368e64a3e64d9c9ae695253f1f3879 | []   |
+--------------------------------------+---------+------------------------+----------------------------------+------+

(4)添加安全规则

在默认安全组中添加三条需要使用的访问规则,使用“openstack security group rule create”命令,命令格式如下:

[root@controller ~]# openstack  help security group rule create 
usage: openstack security group rule create [-h]
                                            [-f {json,shell,table,value,yaml}]
                                            [-c COLUMN]
                                            [--max-width ]
                                            [--fit-width] [--print-empty]
                                            [--noindent] [--prefix PREFIX]
                                            [--remote-ip  | --remote-group ]
                                            [--description ]
                                            [--dst-port ]
                                            [--icmp-type ]
                                            [--icmp-code ]
                                            [--protocol ]
                                            [--ingress | --egress]
                                            [--ethertype ]
                                            [--project ]
                                            [--project-domain ]
                                            

在“defualt”安全组中添加一条策略,从入口方向放行所有ICMP规则,命令如下:

[root@controller ~]# openstack security group rule create --protocol icmp --ingress  default
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field             | Value                                                                                                                                                |
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| created_at        | 2024-06-20T10:13:47Z                                                                                                                                 |
| description       |                                                                                                                                                      |
| direction         | ingress                                                                                                                                              |
| ether_type        | IPv4                                                                                                                                                 |
| id                | 371bdd14-b97a-4082-8ddd-ce8e4c6120b7                                                                                                                 |
| location          | cloud='', project.domain_id=, project.domain_name='demo', project.id='bf368e64a3e64d9c9ae695253f1f3879', project.name='admin', region_name='', zone= |
| name              | None                                                                                                                                                 |
| port_range_max    | None                                                                                                                                                 |
| port_range_min    | None                                                                                                                                                 |
| project_id        | bf368e64a3e64d9c9ae695253f1f3879                                                                                                                     |
| protocol          | icmp                                                                                                                                                 |
| remote_group_id   | None                                                                                                                                                 |
| remote_ip_prefix  | 0.0.0.0/0                                                                                                                                            |
| revision_number   | 0                                                                                                                                                    |
| security_group_id | dc3518d1-30ee-46e7-8fea-373bbef940c1                                                                                                                 |
| tags              | []                                                                                                                                                   |
| updated_at        | 2024-06-20T10:13:47Z                                                                                                                                 |
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+

在“defualt”安全组中添加一条策略,从入口方向放行所有TCP规则,命令如下:

[root@controller ~]# openstack security group rule create --protocol tcp --ingress  default
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field             | Value                                                                                                                                                |
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| created_at        | 2024-06-20T10:15:27Z                                                                                                                                 |
| description       |                                                                                                                                                      |
| direction         | ingress                                                                                                                                              |
| ether_type        | IPv4                                                                                                                                                 |
| id                | 880a30a4-5a4b-432e-baf1-af61e109b21f                                                                                                                 |
| location          | cloud='', project.domain_id=, project.domain_name='demo', project.id='bf368e64a3e64d9c9ae695253f1f3879', project.name='admin', region_name='', zone= |
| name              | None                                                                                                                                                 |
| port_range_max    | None                                                                                                                                                 |
| port_range_min    | None                                                                                                                                                 |
| project_id        | bf368e64a3e64d9c9ae695253f1f3879                                                                                                                     |
| protocol          | tcp                                                                                                                                                  |
| remote_group_id   | None                                                                                                                                                 |
| remote_ip_prefix  | 0.0.0.0/0                                                                                                                                            |
| revision_number   | 0                                                                                                                                                    |
| security_group_id | dc3518d1-30ee-46e7-8fea-373bbef940c1                                                                                                                 |
| tags              | []                                                                                                                                                   |
| updated_at        | 2024-06-20T10:15:27Z                                                                                                                                 |
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+

在“defualt”安全组中添加一条策略,从入口方向放行所有UDP规则,命令如下:

[root@controller ~]# openstack security group rule create --protocol udp --ingress  default
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field             | Value                                                                                                                                                |
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| created_at        | 2024-06-20T10:16:59Z                                                                                                                                 |
| description       |                                                                                                                                                      |
| direction         | ingress                                                                                                                                              |
| ether_type        | IPv4                                                                                                                                                 |
| id                | 8bbf560c-e15b-449e-be3d-8ee681192869                                                                                                                 |
| location          | cloud='', project.domain_id=, project.domain_name='demo', project.id='bf368e64a3e64d9c9ae695253f1f3879', project.name='admin', region_name='', zone= |
| name              | None                                                                                                                                                 |
| port_range_max    | None                                                                                                                                                 |
| port_range_min    | None                                                                                                                                                 |
| project_id        | bf368e64a3e64d9c9ae695253f1f3879                                                                                                                     |
| protocol          | udp                                                                                                                                                  |
| remote_group_id   | None                                                                                                                                                 |
| remote_ip_prefix  | 0.0.0.0/0                                                                                                                                            |
| revision_number   | 0                                                                                                                                                    |
| security_group_id | dc3518d1-30ee-46e7-8fea-373bbef940c1                                                                                                                 |
| tags              | []                                                                                                                                                   |
| updated_at        | 2024-06-20T10:16:59Z                                                                                                                                 |
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+

查看“default”安全组中所有的规则列表信息,命令如下:

[root@controller ~]# openstack security group rule list default
+--------------------------------------+-------------+-----------+-----------+------------+--------------------------------------+
| ID                                   | IP Protocol | Ethertype | IP Range  | Port Range | Remote Security Group                |
+--------------------------------------+-------------+-----------+-----------+------------+--------------------------------------+
| 221068bb-3c65-4ef5-b9b4-f9771d371ee5 | None        | IPv4      | 0.0.0.0/0 |            | None                                 |
| 371bdd14-b97a-4082-8ddd-ce8e4c6120b7 | icmp        | IPv4      | 0.0.0.0/0 |            | None                                 |
| 78fffb5c-8358-4fc3-9122-ea30d0494aa1 | None        | IPv6      | ::/0      |            | None                                 |
| 880a30a4-5a4b-432e-baf1-af61e109b21f | tcp         | IPv4      | 0.0.0.0/0 |            | None                                 |
| 8bbf560c-e15b-449e-be3d-8ee681192869 | udp         | IPv4      | 0.0.0.0/0 |            | None                                 |
| bb8765ff-3d6b-4e4d-9d46-7ba10a27de98 | None        | IPv6      | ::/0      |            | dc3518d1-30ee-46e7-8fea-373bbef940c1 |
| d51385d4-6f51-4c0c-8ceb-3ca0c5d4007b | None        | IPv4      | 0.0.0.0/0 |            | dc3518d1-30ee-46e7-8fea-373bbef940c1 |
5. 启动虚拟机

(1)查询可用镜像

使用“openstack image list”命令查看当前可用镜像列表。命令如下:

[root@controller ~]# openstack image list
+--------------------------------------+--------------+--------+
| ID                                   | Name         | Status |
+--------------------------------------+--------------+--------+
| 5083b919-100f-4069-83cf-7f1a69c58c9c | cirros-0.6.2 | active |
+--------------------------------------+--------------+--------+

使用“openstack flavor list”命令查看可用的类型。命令如下:

[root@controller ~]# openstack flavor list
+----+-----------+------+------+-----------+-------+-----------+
| ID | Name      |  RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+-----------+------+------+-----------+-------+-----------+
| 1  | m1.tiny   |  512 |   10 |         0 |     1 | True      |
| 2  | m1.small  | 1024 |   20 |         0 |     1 | True      |
| 3  | m1.medium | 2048 |   40 |         0 |     2 | True      |
| 4  | centos    | 1024 |   10 |         0 |     2 | True      |
+----+-----------+------+------+-----------+-------+-----------+

(2)创建网络和子网

使用“openstack network create ”命令创建网络息。命令如下:

[root@controller ~]# openstack network create --provider-network-type vlan --provider-physical-network provider network-vlan --provider-segment 200
+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field                     | Value                                                                                                                                                |
+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| admin_state_up            | UP                                                                                                                                                   |
| availability_zone_hints   |                                                                                                                                                      |
| availability_zones        |                                                                                                                                                      |
| created_at                | 2024-06-20T10:27:46Z                                                                                                                                 |
| description               |                                                                                                                                                      |
| dns_domain                | None                                                                                                                                                 |
| id                        | 77a6636e-262c-4e80-8e3e-be8d7268c503                                                                                                                 |
| ipv4_address_scope        | None                                                                                                                                                 |
| ipv6_address_scope        | None                                                                                                                                                 |
| is_default                | False                                                                                                                                                |
| is_vlan_transparent       | None                                                                                                                                                 |
| location                  | cloud='', project.domain_id=, project.domain_name='demo', project.id='bf368e64a3e64d9c9ae695253f1f3879', project.name='admin', region_name='', zone= |
| mtu                       | 1500                                                                                                                                                 |
| name                      | network-vlan                                                                                                                                         |
| port_security_enabled     | True                                                                                                                                                 |
| project_id                | bf368e64a3e64d9c9ae695253f1f3879                                                                                                                     |
| provider:network_type     | vlan                                                                                                                                                 |
| provider:physical_network | provider                                                                                                                                             |
| provider:segmentation_id  | 200                                                                                                                                                  |
| qos_policy_id             | None                                                                                                                                                 |
| revision_number           | 1                                                                                                                                                    |
| router:external           | Internal                                                                                                                                             |
| segments                  | None                                                                                                                                                 |
| shared                    | False                                                                                                                                                |
| status                    | ACTIVE                                                                                                                                               |
| subnets                   |                                                                                                                                                      |
| tags                      |                                                                                                                                                      |
| updated_at                | 2024-06-20T10:27:46Z                                                                                                                                 |
+---------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+

使用“openstack subnet create”创建子网。命令如下:

[root@controller ~]# openstack subnet list
[root@controller ~]# openstack subnet create  --network network-vlan  --allocation-pool start=192.168.61.30,end=192.168.61.200 --gateway 192.168.61.2 --subnet-range 192.168.61.0/24  subnet-vlan
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field             | Value                                                                                                                                                |
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| allocation_pools  | 192.168.61.30-192.168.61.200                                                                                                                         |
| cidr              | 192.168.61.0/24                                                                                                                                      |
| created_at        | 2024-06-20T10:29:13Z                                                                                                                                 |
| description       |                                                                                                                                                      |
| dns_nameservers   |                                                                                                                                                      |
| enable_dhcp       | True                                                                                                                                                 |
| gateway_ip        | 192.168.61.2                                                                                                                                         |
| host_routes       |                                                                                                                                                      |
| id                | e449906c-5038-4296-84a3-5c811a116e0d                                                                                                                 |
| ip_version        | 4                                                                                                                                                    |
| ipv6_address_mode | None                                                                                                                                                 |
| ipv6_ra_mode      | None                                                                                                                                                 |
| location          | cloud='', project.domain_id=, project.domain_name='demo', project.id='bf368e64a3e64d9c9ae695253f1f3879', project.name='admin', region_name='', zone= |
| name              | subnet-vlan                                                                                                                                          |
| network_id        | 77a6636e-262c-4e80-8e3e-be8d7268c503                                                                                                                 |
| prefix_length     | None                                                                                                                                                 |
| project_id        | bf368e64a3e64d9c9ae695253f1f3879                                                                                                                     |
| revision_number   | 0                                                                                                                                                    |
| segment_id        | None                                                                                                                                                 |
| service_types     |                                                                                                                                                      |
| subnetpool_id     | None                                                                                                                                                 |
| tags              |                                                                                                                                                      |
| updated_at        | 2024-06-20T10:29:13Z                                                                                                                                 |
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+

(3)修改openstack平台(云主机则跳过)

因为当前环境为本地PC环境的VMWare Workstation软件启动的虚拟机,所以在此openstack平台启动云主机,需要对openstack平台配置文件进行修改,修改nova服务配置文件,设置参数“virt_type=qemu”。命令参数如下:

[root@compute ~]# crudini --set /etc/nova/nova.conf libvirt virt_type  qemu
[root@compute ~]# systemctl restart openstack-nova-compute

(4)启动云主机

使用“openstack server create”命令创建云主机,其命令格式如下:

[root@controller ~]# openstack help server create
usage: openstack server create [-h] [-f {json,shell,table,value,yaml}]
                               [-c COLUMN] [--max-width ]
                               [--fit-width] [--print-empty] [--noindent]
                               [--prefix PREFIX]
                               (--image  | --volume ) --flavor
                                [--security-group ]
                               [--key-name ]
                               [--property ]
                               [--file ]
                               [--user-data ]
                               [--availability-zone ]
                               [--block-device-mapping ]
                               [--nic ]
                               [--network ] [--port ]
                               [--hint ]
                               [--config-drive |True]
                               [--min ] [--max ] [--wait]
                               

通过命令创建云主机,使用cirros镜像,flavor为2核vCPU、1G内存、10G硬盘,使用network-vlan网络。云主机名为“test”创建命令如下:

[root@controller ~]# openstack server create --image cirros-0.6.2 --flavor 4 --network network-vlan test
+-------------------------------------+-----------------------------------------------------+
| Field                               | Value                                               |
+-------------------------------------+-----------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                              |
| OS-EXT-AZ:availability_zone         |                                                     |
| OS-EXT-SRV-ATTR:host                | None                                                |
| OS-EXT-SRV-ATTR:hypervisor_hostname | None                                                |
| OS-EXT-SRV-ATTR:instance_name       |                                                     |
| OS-EXT-STS:power_state              | NOSTATE                                             |
| OS-EXT-STS:task_state               | scheduling                                          |
| OS-EXT-STS:vm_state                 | building                                            |
| OS-SRV-USG:launched_at              | None                                                |
| OS-SRV-USG:terminated_at            | None                                                |
| accessIPv4                          |                                                     |
| accessIPv6                          |                                                     |
| addresses                           |                                                     |
| adminPass                           | pF9QMrMF8BEa                                        |
| config_drive                        |                                                     |
| created                             | 2024-06-21T10:12:08Z                                |
| flavor                              | centos (4)                                          |
| hostId                              |                                                     |
| id                                  | 175b91ea-79a0-40be-b000-6515aae91f5e                |
| image                               | cirros-0.6.2 (5083b919-100f-4069-83cf-7f1a69c58c9c) |
| key_name                            | None                                                |
| name                                | test                                                |
| progress                            | 0                                                   |
| project_id                          | bf368e64a3e64d9c9ae695253f1f3879                    |
| properties                          |                                                     |
| security_groups                     | name='default'                                      |
| status                              | BUILD                                               |
| updated                             | 2024-06-21T10:12:08Z                                |
| user_id                             | d966f7f2ac0a449e88e7498adcfd1b00                    |
| volumes_attached                    |                                                     |
+-------------------------------------+-----------------------------------------------------+
6. 管理虚拟机

(1)查看虚拟机

使用“openstack server list”命令查看虚拟机列表信息,使用命令如下:

[root@controller ~]# openstack server list
+--------------------------------------+------+--------+-----------------------------+--------------+--------+
| ID                                   | Name | Status | Networks                    | Image        | Flavor |
+--------------------------------------+------+--------+-----------------------------+--------------+--------+
| 175b91ea-79a0-40be-b000-6515aae91f5e | test | ACTIVE | network-vlan=192.168.61.108 | cirros-0.6.2 | centos |
+--------------------------------------+------+--------+-----------------------------+--------------+--------+

使用命令可以查看虚拟机的具体信息,包括使用的安全组、flavor以及网络信息,通过命令“openstack server show”进行查看。命令如下:

[root@controller ~]# openstack server show test
+-------------------------------------+----------------------------------------------------------+
| Field                               | Value                                                    |
+-------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                                   |
| OS-EXT-AZ:availability_zone         | nova                                                     |
| OS-EXT-SRV-ATTR:host                | compute                                                  |
| OS-EXT-SRV-ATTR:hypervisor_hostname | compute                                                  |
| OS-EXT-SRV-ATTR:instance_name       | instance-0000000b                                        |
| OS-EXT-STS:power_state              | Running                                                  |
| OS-EXT-STS:task_state               | None                                                     |
| OS-EXT-STS:vm_state                 | active                                                   |
| OS-SRV-USG:launched_at              | 2024-06-21T10:12:30.000000                               |
| OS-SRV-USG:terminated_at            | None                                                     |
| accessIPv4                          |                                                          |
| accessIPv6                          |                                                          |
| addresses                           | network-vlan=192.168.61.108                              |
| config_drive                        |                                                          |
| created                             | 2024-06-21T10:12:08Z                                     |
| flavor                              | centos (4)                                               |
| hostId                              | 6a2c1ee244d8727dd281a48e1fa2dcfd4672f3d2a4361631b51234fc |
| id                                  | 175b91ea-79a0-40be-b000-6515aae91f5e                     |
| image                               | cirros-0.6.2 (5083b919-100f-4069-83cf-7f1a69c58c9c)      |
| key_name                            | None                                                     |
| name                                | test                                                     |
| progress                            | 0                                                        |
| project_id                          | bf368e64a3e64d9c9ae695253f1f3879                         |
| properties                          |                                                          |
| security_groups                     | name='default'                                           |
| status                              | ACTIVE                                                   |
| updated                             | 2024-06-21T10:12:30Z                                     |
| user_id                             | d966f7f2ac0a449e88e7498adcfd1b00                         |
| volumes_attached                    |                                                          |
+-------------------------------------+----------------------------------------------------------+

(2)操作虚拟机

可以通过命令操作虚拟机,对虚拟机进行关机、开机、重启等操作。关闭虚拟机操作,命令如下:

[root@controller ~]# openstack server stop test
[root@controller ~]# openstack server list
+--------------------------------------+------+---------+-----------------------------+--------------+--------+
| ID                                   | Name | Status  | Networks                    | Image        | Flavor |
+--------------------------------------+------+---------+-----------------------------+--------------+--------+
| 175b91ea-79a0-40be-b000-6515aae91f5e | test | SHUTOFF | network-vlan=192.168.61.108 | cirros-0.6.2 | centos |
+--------------------------------------+------+---------+-----------------------------+--------------+--------+

通过命令操作虚拟机,对虚拟机进行开机操作,命令如下:

[root@controller ~]# openstack server start test
[root@controller ~]# openstack server list
+--------------------------------------+------+--------+-----------------------------+--------------+--------+
| ID                                   | Name | Status | Networks                    | Image        | Flavor |
+--------------------------------------+------+--------+-----------------------------+--------------+--------+
| 175b91ea-79a0-40be-b000-6515aae91f5e | test | ACTIVE | network-vlan=192.168.61.108 | cirros-0.6.2 | centos |
+--------------------------------------+------+--------+-----------------------------+--------------+--------+

通过命令操作虚拟机,对虚拟机进行重启操作,命令如下:

[root@controller ~]# openstack server reboot test
[root@controller ~]# openstack server list
+--------------------------------------+------+--------+-----------------------------+--------------+--------+
| ID                                   | Name | Status | Networks                    | Image        | Flavor |
+--------------------------------------+------+--------+-----------------------------+--------------+--------+
| 175b91ea-79a0-40be-b000-6515aae91f5e | test | ACTIVE | network-vlan=192.168.61.108 | cirros-0.6.2 | centos |
+--------------------------------------+------+--------+-----------------------------+--------------+--------+
7. 云主机调整类型大小

(1)修改配置文件

修改controller节点和compute节点nova.conf配置文件,添加调整类型大小的参数。

controller节点设置参数如下所示:

[root@controller ~]# crudini --set /etc/nova/nova.conf DEFAULT allow_resize_to_same_host True
[root@controller ~]# crudini --set /etc/nova/nova.conf DEFAULT scheduler_default_filters RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter

修改完配置文件后重启相关服务。命令如下所示:

如果重启报错,可剔除该参数值RamFilter。

[root@controller ~]# systemctl restart openstack-nova*

compute节点设置参数如下所示:

[root@compute ~]# crudini --set /etc/nova/nova.conf DEFAULT allow_resize_to_same_host True
[root@compute ~]# crudini --set /etc/nova/nova.conf DEFAULT scheduler_default_filters RetryFilter,AvailabilityZoneFilter,RamFilter,ComputeFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter,ServerGroupAntiAffinityFilter,ServerGroupAffinityFilter

修改完配置文件后重启相关服务。命令如下所示:

[root@compute ~]# systemctl restart openstack-nova-compute

(2)创建云主机类型

现有云主机硬盘和内存不满足使用,需要对现有云主机进行资源扩容,将内存扩容至2G,硬盘扩容至15G大小,类型名称为“centos1”首先创建一个新的云主机类型满足扩容资源的需求。通过命令创建新云主机类型,命令如下所示:

[root@controller ~]# openstack flavor create --disk 15 --ram 2048 --vcpus 2 centos1
+----------------------------+--------------------------------------+
| Field                      | Value                                |
+----------------------------+--------------------------------------+
| OS-FLV-DISABLED:disabled   | False                                |
| OS-FLV-EXT-DATA:ephemeral  | 0                                    |
| disk                       | 15                                   |
| id                         | b1e4b3fe-492a-40c2-898e-a26bf8425931 |
| name                       | centos1                              |
| os-flavor-access:is_public | True                                 |
| properties                 |                                      |
| ram                        | 2048                                 |
| rxtx_factor                | 1.0                                  |
| swap                       |                                      |
| vcpus                      | 2                                    |
+----------------------------+--------------------------------------+

查看当前云主机类型列表,命令如下:

[root@controller ~]# openstack flavor list
+--------------------------------------+-----------+------+------+-----------+-------+-----------+
| ID                                   | Name      |  RAM | Disk | Ephemeral | VCPUs | Is Public |
+--------------------------------------+-----------+------+------+-----------+-------+-----------+
| 1                                    | m1.tiny   |  512 |   10 |         0 |     1 | True      |
| 2                                    | m1.small  | 1024 |   20 |         0 |     1 | True      |
| 3                                    | m1.medium | 2048 |   40 |         0 |     2 | True      |
| 4                                    | centos    | 1024 |   10 |         0 |     2 | True      |
| b1e4b3fe-492a-40c2-898e-a26bf8425931 | centos1   | 2048 |   15 |         0 |     2 | True      |
+--------------------------------------+-----------+------+------+-----------+-------+-----------+

(3)调整云主机类型

查看云主机列表,通过命令查看云主机列表。命令如下:

[root@controller ~]# openstack server list
+--------------------------------------+------+--------+-----------------------------+--------------+--------+
| ID                                   | Name | Status | Networks                    | Image        | Flavor |
+--------------------------------------+------+--------+-----------------------------+--------------+--------+
| 175b91ea-79a0-40be-b000-6515aae91f5e | test | ACTIVE | network-vlan=192.168.61.108 | cirros-0.6.2 | centos |
+--------------------------------------+------+--------+-----------------------------+--------------+--------+

使用命令“openstack server resize”调整云主机类型,命令格式如下:

[root@controller ~]# openstack help server resize  
usage: openstack server resize [-h] [--flavor  | --confirm | --revert]
                               [--wait]
                               <server>

  <server>           Server (name or ID)

optional arguments:
  -h, --help         show this help message and exit
  --flavor   Resize server to specified flavor
  --confirm          Confirm server resize is complete
  --revert           Restore server state before resize
  --wait             Wait for resize to complete

使用命令调整云主机“test”类型为centos1,使用–wait参数,在命令执行后,调整云主机需要一定时间,添加–wait参数后会在确认时回馈“complete”。命令如下所示:

如果提示Complete实际未调整成功可以查看实例当前所在节点/var/log/nova/nova-compute.log日志,如报错无法在其他计算节点创建目录等报错,可以尝试将实例当前所在节点与被迁移节点nova用户间做免密。

[root@controller ~]# openstack server resize --flavor centos1 --wait test
Complete
[root@controller ~]# openstack server list
+--------------------------------------+------+---------------+-----------------------------+--------------+---------+
| ID                                   | Name | Status        | Networks                    | Image        | Flavor  |
+--------------------------------------+------+---------------+-----------------------------+--------------+---------+
| 175b91ea-79a0-40be-b000-6515aae91f5e | test | VERIFY_RESIZE | network-vlan=192.168.61.108 | cirros-0.6.2 | centos1 |
+--------------------------------------+------+---------------+-----------------------------+--------------+---------+

在命令执行完毕后,返回“Complete”值时,通过命令查看云主机列表信息。命令如下:

如查看云主机状态一直为 VERIFY_RESIZE,可至dashboard  项目-计算-实例,确认迁移或调整。

[root@controller ~]# openstack server list
+--------------------------------------+------+--------+-----------------------------+--------------+---------+
| ID                                   | Name | Status | Networks                    | Image        | Flavor  |
+--------------------------------------+------+--------+-----------------------------+--------------+---------+
| 175b91ea-79a0-40be-b000-6515aae91f5e | test | ACTIVE | network-vlan=192.168.61.108 | cirros-0.6.2 | centos1 |
+--------------------------------------+------+--------+-----------------------------+--------------+---------+
  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
qpid架构图是指用来描述Qpid消息代理系统的整体结构和组件之间的关系的图示。Qpid是一个实现了Advanced Message Queuing Protocol(AMQP)标准的开源消息代理系统,用于在分布式系统中进行可靠的消息传递和通信。Qpid架构图通常会包括以下几个主要组件: 1. Qpid Broker:消息代理,负责接收、路由和传递消息。它包含了Exchange、Queue、Binding等基本概念,并通过AMQP协议与其他组件进行通信。 2. Qpid Client:客户端,用于产生、发送和接收消息。它可以是生产者或消费者,与Qpid Broker建立连接,在不同的Exchange或Queue之间发送和接收消息。 3. Qpid Management Tools:用于管理和监控Qpid系统的工具。可以通过这些工具进行交互,查看和管理Broker和Client的状态、配置和性能信息等。 4. Qpid Routing功能:实现了消息的路由和转发功能,根据Exchange和Binding的配置,将消息从生产者传递到消费者。 5. Qpid 持久化存储:将消息保存到硬盘上,以便在系统故障后能够恢复消息的可靠性。 Nova服务进程图是指用来描述OpenStack中的Nova服务的组件和模块之间的关系的图示。NovaOpenStack中的计算服务,负责管理和调度云中的虚拟机实例。Nova服务进程图包括以下几个主要组件: 1. Nova-api服务:接受来自用户和其他服务的Restful API请求,并将其转发给其他具体的服务进程进行处理。它与客户端之间通过API接口进行通信。 2. Nova-scheduler服务:负责虚拟机实例的调度和分配。根据云中的物理资源情况和调度策略,选择最合适的物理主机来部署虚拟机实例。 3. Nova-conductor服务:负责处理用户操作的审批和授权。它与数据库交互,管理虚拟机实例的状态和操作。 4. Nova-compute服务:管理和监控物理主机上运行的虚拟机实例。它与虚拟化技术(如KVM、Xen等)进行交互,通过控制接口(libvirt)管理虚拟机的创建、启动、停止和删除等操作。 5. Nova-network服务:提供虚拟网络的管理和配置。负责为虚拟机实例分配IP地址、创建网络拓扑等网络相关的操作。 6. Nova-volume服务:提供块存储服务,为虚拟机实例挂载块设备。 以上是对qpid架构图和nova服务进程图的简要描述,这些图示有助于理解系统的整体结构和组件的交互关系。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新宽网络

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值