Как изменить размер экземпляра/виртуальной машины 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