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 |
+--------------------------------------+------+--------+-----------------------------+--------------+---------+