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