Поиск по сайту:

Как изменить размер экземпляра/виртуальной машины OpenStack |


Насколько легко изменить/увеличить размер экземпляра OpenStack или виртуальной машины? OpenStack Compute — это центральный компонент, который предоставляет виртуальные машины по требованию. Это позволяет системным администраторам создавать экземпляры с конкретными характеристиками оборудования — оперативной памятью, процессором и дисковым пространством.

В OpenStack каждому созданному экземпляру присваивается вариант (шаблон ресурса), который определяет размер и емкость экземпляра. Варианты также могут указывать вторичное эфемерное хранилище, диск подкачки, метаданные для ограничения использования или специальный доступ к проекту. Эти дополнительные атрибуты необходимо определить для хранения желаемых значений.

Вы можете проверить доступные варианты из командной строки с помощью команды:

$ openstack flavor list
+----+-----------+-------+------+-----------+-------+-----------+
| ID | Name      |   RAM | Disk | Ephemeral | VCPUs | Is Public |
+----+-----------+-------+------+-----------+-------+-----------+
| 0  | m1.tiny   |  1024 |   10 |         0 |     1 | True      |
| 1  | m1.small  |  2048 |   20 |         0 |     1 | True      |
| 2  | m1.medium |  4096 |   20 |         0 |     2 | True      |
| 3  | m1.large  |  8192 |   40 |         0 |     4 | True      |
| 4  | m1.xlarge | 16384 |   40 |         0 |     4 | True      |
+----+-----------+-------+------+-----------+-------+-----------+

Как администратор OpenStack, вы, скорее всего, столкнетесь со сценариями, когда вам придется обновить или понизить версию сервера в зависимости от возникающих вычислительных потребностей. Например, вы развертываете сервер с 2 ГБ ОЗУ и хотите обновить его до 4 ГБ ОЗУ.

У меня есть сервер Debian 10, работающий на платформе OpenStack Stein, с указанными ниже техническими характеристиками оборудования.

$ openstack server show deb12
+-------------------------------------+----------------------------------------------------------+
| Field                               | Value                                                    |
+-------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                                   |
| OS-EXT-AZ:availability_zone         | nova                                                     |
| OS-EXT-SRV-ATTR:host                | server1.computingforgeeks.com                            |
| OS-EXT-SRV-ATTR:hypervisor_hostname | server1.computingforgeeks.com                            |
| OS-EXT-SRV-ATTR:instance_name       | instance-00000024                                        |
| OS-EXT-STS:power_state              | Running                                                  |
| OS-EXT-STS:task_state               | None                                                     |
| OS-EXT-STS:vm_state                 | active                                                   |
| OS-SRV-USG:launched_at              | 2019-09-17T16:34:03.000000                               |
| OS-SRV-USG:terminated_at            | None                                                     |
| accessIPv4                          |                                                          |
| accessIPv6                          |                                                          |
| addresses                           | private=10.10.1.104                                      |
| config_drive                        |                                                          |
| created                             | 2019-09-17T16:33:58Z                                     |
| flavor                              | m1.small (1)                                             |
| hostId                              | da0a05ef20a03e97f301563551bab9b669ef04adbce232d941519946 |
| id                                  | 04ed473d-c889-40c2-9204-3a4544e419dc                     |
| image                               | Debian-10 (f0ac705b-ee73-4de8-95f7-4e06569f0f5c)         |
| key_name                            | mykey1                                                   |
| name                                | deb10                                                    |
| progress                            | 0                                                        |
| project_id                          | 06bcc3c56ab1489282b65681e782d7f6                         |
| properties                          |                                                          |
| security_groups                     | name='default'                                           |
| status                              | ACTIVE                                                   |
| updated                             | 2019-09-17T16:34:57Z                                     |
| user_id                             | 336acbb7421f47f8be4891eabf0c9cc8                         |
| volumes_attached                    |                                                          |
+-------------------------------------+----------------------------------------------------------+

Этот сервер имеет 2 ГБ ОЗУ и 20 ГБ корневого диска. Вариант, определяющий эти ресурсы, — m1.small. Давайте обновим его, добавив 4 ГБ ОЗУ и 40 ГБ на диск.

Для этой задачи мы используем команду openstack server resize. Это масштабирует сервер до нового уровня. Это достигается путем создания нового сервера и копирования содержимого исходного диска на новый.

$ openstack server resize --flavor m1.medium deb12
No valid host was found. No valid host found for resize (HTTP 400) (Request-ID: req-b1c22b58-cb3b-4869-80dd-29b300459f5b)

Решить Не найден действительный хост. Не найден действительный хост для изменения размера

При первой пробной попытке изменения размера я получил сообщение об ошибке: «Ни один действительный хост не найден. Не найден действительный хост для изменения размера». Это потому, что в моей настройке есть один вычислительный хост. Чтобы решить эту проблему, установите для параметра allow_resize_to_same_host значение true в файле конфигурации nova.

sudo vi /etc/nova/nova.conf

Добавьте строку в раздел [DEFAULT].

[DEFAULT]
allow_resize_to_same_host = True
state_path = /var/lib/nova
enabled_apis = osapi_compute,metadata
log_dir = /var/log/nova
use_neutron = True
linuxnet_interface_driver = nova.network.linux_net.LinuxOVSInterfaceDriver
firewall_driver = nova.virt.firewall.NoopFirewallDriver
vif_plugging_is_fatal = True
vif_plugging_timeout = 300
resume_guests_state_on_host_boot = True

Эту же настройку можно добавить с помощью

sudo openstack-config --set /etc/nova/nova.conf DEFAULT allow_resize_to_same_host True

Отобразите набор значений:

$ openstack-config --get /etc/nova/nova.conf DEFAULT allow_resize_to_same_host
True

Перезапустите службы OpenStack Nova.

for service in compute api scheduler; do
  sudo systemctl restart openstack-nova-${service}.service
done

Повторите попытку изменения размера экземпляра.

openstack server resize --flavor m1.medium deb10

Первый — выполнить изменение размера, второй — либо подтвердить (проверить) успех и освободить старый сервер, либо объявить откат для освобождения нового сервера и перезапуска. Старый.

Подтвердите, что изменение размера сервера завершено:

openstack server resize --confirm  deb10

Если вы хотите восстановить состояние сервера перед изменением размера, используйте:

openstack server resize --revert deb10

Изменение размера экземпляра OpenStack из пользовательского интерфейса Horizon

Для изменения размера пользовательского интерфейса выберите Проект > Вычислить > Экземпляры > Имя экземпляра > Изменить размер экземпляра.

Выберите новый вариант и нажмите кнопку «Изменить размер» .

Подтвердим изменение.

$ openstack server show deb12
+-------------------------------------+----------------------------------------------------------+
| Field                               | Value                                                    |
+-------------------------------------+----------------------------------------------------------+
| OS-DCF:diskConfig                   | MANUAL                                                   |
| OS-EXT-AZ:availability_zone         | nova                                                     |
| OS-EXT-SRV-ATTR:host                | server1.computingforgeeks.com                            |
| OS-EXT-SRV-ATTR:hypervisor_hostname | server1.computingforgeeks.com                            |
| OS-EXT-SRV-ATTR:instance_name       | instance-00000024                                        |
| OS-EXT-STS:power_state              | Running                                                  |
| OS-EXT-STS:task_state               | None                                                     |
| OS-EXT-STS:vm_state                 | active                                                   |
| OS-SRV-USG:launched_at              | 2019-09-17T17:24:01.000000                               |
| OS-SRV-USG:terminated_at            | None                                                     |
| accessIPv4                          |                                                          |
| accessIPv6                          |                                                          |
| addresses                           | private=10.10.1.104                                      |
| config_drive                        |                                                          |
| created                             | 2019-09-17T16:33:58Z                                     |
| flavor                              | m1.medium (2)                                            |
| hostId                              | da0a05ef20a03e97f301563551bab9b669ef04adbce232d941519946 |
| id                                  | 04ed473d-c889-40c2-9204-3a4544e419dc                     |
| image                               | Debian-10 (f0ac705b-ee73-4de8-95f7-4e06569f0f5c)         |
| key_name                            | mykey1                                                   |
| name                                | deb10                                                    |
| progress                            | 0                                                        |
| project_id                          | 06bcc3c56ab1489282b65681e782d7f6                         |
| properties                          |                                                          |
| security_groups                     | name='default'                                           |
| status                              | VERIFY_RESIZE                                            |
| updated                             | 2019-09-17T17:24:02Z                                     |
| user_id                             | 336acbb7421f47f8be4891eabf0c9cc8                         |
| volumes_attached                    |                                                          |
+-------------------------------------+----------------------------------------------------------+

Мы можем подтвердить, что версия изменилась на m1.medium, а для OS-EXT-STS:vm_state установлено значение active. То же самое можно увидеть и на терминале VM.

debian@deb10:~$ free -h
              total        used        free      shared  buff/cache   available
Mem:          3.9Gi        50Mi       3.7Gi       6.0Mi        80Mi       3.6Gi
Swap:         4.0Gi          0B       4.0Gi
debian@deb10:~$ lscpu 
Architecture:        x86_64
CPU op-mode(s):      32-bit, 64-bit
Byte Order:          Little Endian
Address sizes:       39 bits physical, 48 bits virtual
CPU(s):              2
...

$ lsblk 
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    254:0    0  20G  0 disk 
└─vda1 254:1    0  20G  0 part /
vdb    254:16   0   4G  0 disk [SWAP]

Узнайте больше о хаках и управлении OpenStack:

Лучшие книги по изучению облачной платформы OpenStack

Как установить и настроить клиент OpenStack в Linux

Как настроить экземпляры/виртуальные машины OpenStack для автоматического запуска после перезагрузки вычислений Nova

Как создать тома OpenStack Cinder и подключиться к экземпляру/серверу виртуальной машины через CLI

Статьи по данной тематике: