Pular para o conteúdo
StrongLinux

Documentação

Guia de operação da nuvem

Este guia é para quem opera uma nuvem StrongLinux já implantada com o strongctl (edição Servidor). A instalação está no guia de instalação, e a atualização de versões, no guia de atualização.

Todos os comandos rodam como root no host onde o strongctl foi inicializado (o primeiro controller). A configuração da nuvem fica em /etc/strongctl/.

1. Comandos do dia a dia

ComandoPara quê
strongctl statusLista os grupos do inventário e os nós de cada um
strongctl verifyConfere a saúde da nuvem inteira (veja a seção 2)
strongctl deployAplica a configuração em todos os nós; idempotente
strongctl deploy --role <papel>Só os nós de um papel: controller, compute, network ou storage
strongctl secrets show <nome>Mostra um segredo do cofre (ex.: keystone_admin)
strongctl tempestTestes oficiais do OpenStack contra a nuvem (smoke; --suite full para todos)
strongctl upgradeAtualização de correção rolante
strongctl <comando> --checkSimula, sem alterar nada

Para usar o cliente openstack como administrador:

source /root/admin-openrc.sh
openstack server list --all-projects

2. Saúde da nuvem

strongctl verify confere, nó a nó:

Rode o verify depois de qualquer mudança e antes de um upgrade (que exige o verify verde).

APIs publicadas

O HAProxy publica as APIs com TLS no endereço do controller (ou no VIP, com HA):

ServiçoPorta
Keystone (identidade)5000
Glance (imagens)9292
Placement8778
Nova (compute)8774
Neutron (rede)9696
Cinder (volumes)8776
Heat (orquestração)8004 e 8000 (CloudFormation)
Barbican (segredos)9311
StrongStack API Server9999
Horizon (painel)443, em /dashboard (a porta 80 redireciona)

Atrás do HAProxy, cada API escuta só no endereço interno (127.0.0.1 no all-in-one). O metadata do Nova (8775) e o console noVNC (6080) são internos.

Logs

OndeO quê
/var/log/<serviço>/Log de cada serviço OpenStack (keystone, nova, neutron, cinder…)
journalctl -u <unit>Início, parada e erros das units do systemd
/var/log/strongstack/StrongStack API Server
/var/log/haproxy.logAcessos às APIs
journalctl -k | grep apparmorNegações do AppArmor (seção 8)
/var/log/sudo.logUso do sudo

3. Credenciais e segredos

4. Adicionar e manter nós

Adicionar um nó de computação ou de armazenamento

  1. Instale o nó com a ISO (opção Compute ou Storage) ou com a imagem stronglinux-1.0-openstack-cloud-amd64.qcow2.
  2. Autorize a chave SSH do root do controller no novo nó (/root/.ssh/authorized_keys).
  3. Inclua o nó em /etc/strongctl/inventory.yml: o endereço em all.hosts e o nome no grupo do papel.
    all:
      hosts:
        cmp3: {ansible_host: 10.0.0.23, mgmt_ip: 10.0.0.23}
      children:
        compute:
          hosts:
            cmp3:
  4. Prepare a base e implante:
    strongctl bootstrap
    strongctl deploy
    strongctl verify

Use o deploy completo, sem --role: ele só muda o nó novo, mas também roda o registro do compute no Nova (nova-manage cell_v2 discover_hosts), que fica no primeiro controller e não roda com --role compute.

Tirar um compute de serviço para manutenção

openstack compute service set --disable --disable-reason "manutenção" <host> nova-compute
openstack server list --all-projects --host <host>
openstack server migrate --live-migration <vm>     # ou desligue as VMs do host

Depois da manutenção: openstack compute service set --enable <host> nova-compute.

Reinício de um controller com alta disponibilidade

Reinicie um controller de cada vez e confira com strongctl verify antes de passar ao próximo. O Galera, o RabbitMQ e o OVN voltam ao cluster sozinhos. Se os três caíram ao mesmo tempo, siga a recuperação do Galera no guia de alta disponibilidade.

5. Cópia de segurança

O strongctl não faz backup automático. Guarde, fora da nuvem:

O quêComo
Configuração e cofretar czf strongctl-$(date +%F).tgz -C /etc strongctl (inclui a CA em tls/)
Bancos de dadosmariadb-dump --all-databases --single-transaction --routines --events | gzip > bancos-$(date +%F).sql.gz (com Galera, num controller só)
Chaves do Keystonetar czf keystone-chaves-$(date +%F).tgz -C /etc/keystone fernet-keys credential-keys
Imagens do Glance/var/lib/glance/images/ (armazenamento local)
Volumesopenstack volume backup create <volume> (backend posix em /var/lib/cinder/backup)

Os arquivos de configuração dos serviços (/etc/<serviço>/) não precisam de cópia: o strongctl deploy gera todos de novo a partir de /etc/strongctl/.

Para restaurar num controller novo: instale o sistema, restaure /etc/strongctl/ e as chaves do Keystone, rode strongctl bootstrap, importe os bancos (zcat bancos.sql.gz | mariadb) e rode strongctl deploy e strongctl verify.

6. Rotação das chaves de token (fernet)

Os tokens do Keystone são cifrados com chaves fernet em /etc/keystone/fernet-keys/. Gire as chaves periodicamente, por exemplo uma vez por semana. No primeiro controller:

runuser -u keystone -- keystone-manage fernet_rotate --keystone-user keystone --keystone-group keystone
strongctl deploy --role controller      # com HA: copia as chaves novas para os outros controllers

O Keystone mantém 3 chaves ativas, então os tokens já emitidos continuam valendo. Com um só controller, basta o primeiro comando.

7. Certificados TLS

8. Segurança no dia a dia

9. Problemas comuns

SintomaCausa provávelO que fazer
strongctl verify falha numa portaServiço parado ou certificado vencidojournalctl -u <unit>; validade do certificado (seção 7)
HTTP 401 entre serviços (ex.: Nova → Neutron)Usuário de serviço sem o papel service ou senha alterada à mãostrongctl deploy (refaz os papéis e as senhas a partir do cofre)
VM sem IP ou sem metadataAgente OVN parado no compute, ou chassis com nome diferente do host do Novasystemctl status neutron-ovn-agent; ovs-vsctl get open . external-ids:hostname deve ser igual ao host do nova.conf
VM fica em ERROR ao criarSem compute disponível, ou compute novo não registradoopenstack compute service list; rode strongctl deploy (faz o discover_hosts)
Volume não anexaiSCSI indisponível (ex.: em container) ou tgt paradosystemctl status tgt iscsid no storage e no compute
Too many connections no bancoMuitos workers ou max_connections baixostrongctl bootstrap reaplica o max_connections do MariaDB (mariadb_max_connections no globals.yml)
Galera não sobe depois de queda totalOs três controllers pararamRecuperação no guia de alta disponibilidade
Serviço não inicia logo após atualizaçãoNegação do AppArmorjournalctl -k | grep DENIED (seção 8)

Se o problema continuar, abra uma issue com a saída do strongctl verify e os logs do serviço (sem senhas). Veja a página de suporte.