Pesquisa de site

Como redimensionar uma instância/máquina virtual OpenStack


Quão fácil é redimensionar/aumentar a instância OpenStack ou máquina virtual? OpenStack Compute é o componente central que fornece máquinas virtuais sob demanda. Ele permite que os administradores de sistemas criem instâncias com especificações de hardware específicas – RAM, CPU e espaço em disco.

No OpenStack, cada instância criada recebe um tipo (modelo de recurso), que determina o tamanho e a capacidade da instância. Os sabores também podem especificar armazenamento temporário secundário, disco de troca, metadados para restringir o uso ou acesso especial ao projeto. Esses atributos extras devem ser definidos para armazenar os valores desejados.

Você pode verificar os sabores disponíveis na linha de comando usando o comando:

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

Como administrador do OpenStack, você provavelmente encontrará cenários em que precisará atualizar ou fazer downgrade de um servidor com base nas necessidades computacionais emergentes. Por exemplo, você implanta um servidor com 2 GB de Ram e gostaria de atualizá-lo para 4GB de Ram.

Eu tenho um servidor Debian 10 rodando na plataforma OpenStack Stein com especificações de hardware abaixo.

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

Este servidor possui 2GB de RAM e 20GB de disco raiz. O tipo que define esses recursos é m1.small. Vamos atualizá-lo com uma versão para 4 GB de RAM e 40 GB de espaço em disco.

Para esta tarefa, usamos o comando openstack server resize. Isso dimensiona um servidor para um novo tipo. Isto é conseguido criando um novo servidor e copiando o conteúdo do disco original para um novo.

$ 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)

Resolver Nenhum host válido foi encontrado. Nenhum host válido encontrado para redimensionamento

Na primeira tentativa de redimensionamento, recebi uma mensagem de erro “Nenhum host válido foi encontrado. Nenhum host válido encontrado para redimensionamento“. Isso ocorre porque na minha configuração tenho um host de computação. Para resolver isso, defina o parâmetro allow_resize_to_same_host como true no arquivo de configuração nova.

sudo vi /etc/nova/nova.conf

Adicione a linha à seção [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

A mesma configuração pode ser adicionada com

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

Exibir o conjunto de valores:

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

Reinicie os serviços OpenStack Nova.

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

Tente novamente o redimensionamento da instância.

openstack server resize --flavor m1.medium deb10

A primeira é realizar o redimensionamento, a segunda é confirmar (verificar) o sucesso e liberar o servidor antigo ou declarar uma reversão para liberar o novo servidor e reiniciar o antigo.

Confirme se o redimensionamento do servidor foi concluído:

openstack server resize --confirm  deb10

Se você deseja restaurar o estado do servidor antes do redimensionamento, use:

openstack server resize --revert deb10

Redimensionar instância OpenStack do Horizon UI

Para redimensionar a UI, navegue até Projeto > Computação > Instâncias >Nome da Instância > Redimensionar Instância.

Escolha um novo sabor e clique no botão “Redimensionar” .

Vamos confirmar a mudança.

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

Podemos confirmar que o tipo mudou para m1.medium e OS-EXT-STS:vm_state definido como active. O mesmo pode ser visto no terminal 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]

Leia mais sobre hacks e gerenciamento do OpenStack:

Melhores livros para aprender OpenStack Cloud Platform

Como instalar e configurar o cliente OpenStack no Linux

Como configurar instâncias/VMs do OpenStack para inicialização automática após a reinicialização do computador Nova

Como criar volumes OpenStack Cinder e anexar a uma instância/servidor de VM na CLI

Artigos relacionados: