CloudStack
Onde no admin: Infrastructure › Cloud provider › CloudStack › API connection (
/infra/cloudstack?tab=connect). A primeira conexão também pode ser feita no setup wizard, etapa 2.
O que faz
O NexCMP vende máquinas virtuais executadas na sua nuvem Apache CloudStack. Ele implanta, inicia, para, redimensiona, tira snapshots e exclui VMs por meio da API do CloudStack, distribui endereços IP públicos da zona, lê o uso para faturamento e largura de banda, e exibe a capacidade e o status no console do administrador. O CloudStack continua sendo a fonte da verdade para os hipervisores; o NexCMP é a vitrine, o faturamento e o portal integrados.
Use esta página quando o CloudStack for (ou for ser) sua principal fonte de VMs. Para uma segunda fonte ao lado dela, consulte Proxmox VE.
Requisitos
| Item | Requisito |
|---|---|
| Versão do CloudStack | 4.23 é a versão testada. O console da VM precisa da 4.18 ou mais recente, e o escalonamento ao vivo de CPU/RAM de uma VM em execução requer a 4.23 com KVM. |
| Tipo de zona | Uma zona com pelo menos uma rede de convidado para as VMs dos clientes e um intervalo de IP público com endereços livres. |
| Hipervisor | O KVM é o hipervisor testado. |
| Conta | Um domínio e conta dedicados criados para o NexCMP. Nunca use a chave de administrador ROOT. |
| Acessibilidade da API | O servidor do painel deve alcançar a URL da API do servidor de gerenciamento (https://cloudstack.example.com/client/api) via HTTP(S). O console da VM, a largura de banda e os recursos do Kubernetes usam o mesmo endpoint. |
| Chave somente leitura opcional | Uma segunda chave somente leitura permite que o console administrativo exiba hosts, armazenamento, VMs de sistema e intervalos de IPs públicos. Não é necessária para vender VMs. |
| IP público | Endereços IPv4 públicos gratuitos na zona. O prefixo que o NexCMP pode vender é configurado em Sales IP pools. |
| Templates | Pelo menos um template pronto e habilitado para senha e uma oferta de serviço que sua conta possa ver. Consulte Templates. |
| Armazenamento | Armazenamento primário para os volumes da conta e, se você vender snapshots ou imagens, armazenamento secundário. |
| Depende de | Nenhum. Kubernetes, Private Cloud, Images e Bandwidth dependem desta página. |
Não use a chave de administrador ROOT
Crie um domínio e uma conta dedicados para o NexCMP. Assim, a chave atinge apenas esse domínio, e uma chave vazada não pode afetar o resto da sua nuvem. O assistente de configuração também verifica se a rede escolhida pertence à zona e à conta proprietária da chave.
Preparar a infraestrutura
Os comandos usam o CloudMonkey (cmk) conectado como administrador do CloudStack. Substitua os nomes de exemplo e os espaços reservados entre colchetes angulares.
Criar uma conta dedicada e uma chave de API
Crie o domínio que conterá tudo o que pertence ao NexCMP.
bashcmk create domain name=nexcmpAnote o
idna saída; ele é usado como<domain-id>abaixo.Encontre a função que deseja atribuir à conta.
bashcmk list roles type=DomainAdmin filter=id,nameFunção Quando escolher Domain Admin (recomendado) Conjunto completo de recursos: VMs, redes, projetos para Kubernetes, VPC, imagens. O alcance para no domínio nexcmp.Usuário Apenas ciclo de vida da VM. Um usuário comum não pode excluir permanentemente (expunge) VMs, a menos que a configuração global allow.user.expunge.recover.vmseja true; o NexCMP então para a VM e o CloudStack a expunge apósexpunge.delay.Crie a conta e seu primeiro usuário. Use uma senha longa e aleatória; ela nunca mais será digitada.
bashcmk create account name=nexcmp-api username=nexcmp-api \ password='CHANGE-ME-LONG-RANDOM' email=ops@example.com \ firstname=NexCMP lastname=API roleid=<role-id> domainid=<domain-id>Gere o par de chaves de API para o novo usuário.
bashcmk list users domainid=<domain-id> username=nexcmp-api filter=id,username cmk generate userkeys id=<user-id>Copie
apikeyesecretkey. Elas são a API key e a Secret key que você insere no NexCMP. O NexCMP as armazena criptografadas e exibe apenas os últimos quatro caracteres posteriormente.Certifique-se de que o domínio não tenha limites de recursos restritivos (instâncias, volumes, IPs públicos, redes, snapshots, templates, projetos).
bashcmk list resourcelimits domainid=<domain-id>
Criar a rede de convidados para VMs de clientes
As VMs de clientes são implantadas em uma rede de convidados que pertence à nova conta. Uma rede isolada com um roteador virtual (VR) e os serviços Static NAT, Firewall e Port Forwarding funciona bem, pois o NexCMP associa um IP público a cada VM com NAT estático.
bash
cmk list networkofferings state=Enabled guestiptype=Isolated filter=id,name
cmk create network name=customers displaytext=customers zoneid=<zone-id> \
networkofferingid=<offering-id> account=nexcmp-api domainid=<domain-id>Verifique a política de egress padrão da oferta: se for "deny", as VMs dos clientes não terão acesso de saída até que regras de egress do firewall sejam adicionadas.
Tornar ofertas e templates visíveis
- Service offerings e network offerings devem ser públicos ou atribuídos ao domínio
nexcmp; caso contrário, a conta não poderá listá-los ou usá-los. - Registre ou compartilhe pelo menos um template (consulte Templates). O NexCMP lista os templates que estão prontos e marcados como em destaque.
Opcional: chave somente leitura para páginas de infraestrutura
As abas Capacity, Host, Storage e System VM e a lista de faixas de IP público usam uma segunda chave que precisa apenas de permissão de leitura para seis comandos. Crie uma função limitada em vez de reutilizar uma chave de administrador completa:
bash
cmk create role name=nexcmp-readonly type=Admin
# <role-id> is the id printed above
for api in listHosts listCapacity listSystemVms listVlanIpRanges listClusters listStoragePools; do
cmk create rolepermission roleid=<role-id> rule=$api permission=allow
done
cmk create rolepermission roleid=<role-id> rule='*' permission=denyEm seguida, crie uma conta com essa função (no domínio ROOT, pois ela lê dados de toda a zona), gere suas chaves como no passo 4 e insira-as como RO API key na seção seguinte.
Verificar o caminho de rede
A partir do servidor do painel:
bash
curl -fsS -o /dev/null -w '%{http_code}\n' https://cloudstack.example.com/client/apiQualquer resposta HTTP (mesmo 4xx) prova que a porta está acessível. Um tempo limite (timeout) significa um problema de firewall ou de DNS do seu lado.
Conectar no NexCMP
No assistente de configuração
O passo 2 do setup wizard solicita os mesmos valores. Test connection lista as zonas e redes que a chave consegue ver; escolha a zona e a rede de convidados, um nome de exibição para a zona e o país, depois clique em Save CloudStack. O assistente rejeita uma rede que não esteja nessa zona ou que não seja visível para a chave.

Mais tarde, no console do administrador
Abra Infrastructure › Cloud provider › CloudStack e escolha a aba API connection.
Preencha o cartão Connection:
Campo Valor de exemplo Endpoint API https://cloudstack.example.com/client/apiChave de API (acesso de escrita) XXXX(deixe em branco para manter a chave salva)Chave secreta XXXXChave de API SO / Chave secreta SO opcional, da conta somente leitura ID da zona o UUID da sua zona 
Clique em Test connection antes de salvar. Isso testa as chaves que você digitou, sem salvá-las: a chave de gravação com
listZoneselistCapabilities, e a chave somente leitura comlistSystemVms.Clique em Save connection. Mantenha Enable CloudStack connection ativado; desativá-lo faz o worker parar todos os jobs do CloudStack, sem perder dados.
Abra Services › Virtual Machines › Policy › Provisioning para definir a rede de convidados padrão, ofertas personalizadas e o par de chaves padrão para novas VMs.

Abra Infrastructure › Cloud provider › Sales IP pools e, em Configure sales ranges, defina Sellable IP range prefixes (por exemplo
203.0.113.) e Excluded IP prefixes se alguns endereços na zona nunca devem ser vendidos. Deixe o prefixo em branco para permitir todos os endereços livres.
O que o NexCMP lê e escreve
| Área | Leituras | Alterações |
|---|---|---|
| VMs | lista, estados, histórico de uso, endpoint do console | implantar, iniciar, parar, reiniciar, reinstalar, destruir, redimensionar, redefinir senha e chave SSH |
| Discos e snapshots | volumes, snapshots de VM, backups | criar, anexar, desanexar, redimensionar, excluir, fazer snapshot, restaurar |
| Rede | redes, roteadores, IPs públicos, firewall, encaminhamento de porta, regras de balanceador de carga | associar e liberar IPs públicos, NAT estático, firewall, encaminhamento de porta, regras de saída, redes e ACLs para Cloud Privado |
| Catálogo | ofertas de serviço, disco e rede, templates, ISOs, tipos de SO | registrar e excluir templates e ISOs (Imagens), ofertas de serviço ao criar planos personalizados |
| Kubernetes | versões suportadas, clusters, configuração | projetos, limites de recursos, redes, clusters (módulo Kubernetes) |
| Chave somente leitura | hosts, clusters, pools de armazenamento, VMs de sistema, capacidade, faixas de IP VLAN | nenhuma |
CPU e RAM em tempo real e largura de banda
- Hot-plug. Uma VM em execução pode ser redimensionada sem reinicialização apenas quando o template permitir (escalabilidade dinâmica) e o convidado colocar novos CPUs e RAM online. O NexCMP ativa o Auto Scaling para templates cujo nome termine em
vNcom N igual a 6 ou mais, ou quando você definir manualmente no campo vCPU/RAM hot-plug do template. Consulte Templates. - Origem de largura de banda. Com as configurações padrão, o NexCMP mede o tráfego a partir das estatísticas de VM do CloudStack (
listVirtualMachinesUsageHistory, consultadas a cada 5 minutos e somadas por interface de rede da VM). Os números incluem o tráfego entre VMs, portanto podem ser um pouco maiores do que um roteador de borda contabilizaria. Mantenha a coleta de estatísticas de VM do CloudStack ativada; lacunas maiores do que a retenção de estatísticas são ignoradas. Consulte Bandwidth.
Verificar
- Test connection retorna "Write key: OK" com sua zona e a versão do CloudStack.
- Infrastructure › Cloud provider › Providers mostra o provedor como ativo com um horário de teste recente. O painel de integridade do dashboard não exibe mais "CloudStack: not connected".
- Sales IP pools lista endereços livres (atualiza cerca de uma vez por minuto).
- Peça uma VM pequena no portal do cliente ou no console administrativo e verifique se ela chega ao estado Running, possui um IP público e se você consegue abrir o console.
Limites e observações
- Um cluster CloudStack pode ser conectado nesta versão do NexCMP. O diálogo Add cloud provider consegue testar as chaves de um segundo cluster, mas não pode salvá-lo.
- Uma zona do CloudStack está anexada à zona padrão do NexCMP; um CloudStack com várias zonas tem escopo limitado à zona inserida, portanto VMs, IPs e redes de outras zonas são ignorados.
- Excluir a rede de convidados no CloudStack faz com que todo novo provisionamento falhe. O console administrativo exibe um aviso em vermelho quando a rede desaparece.
- As credenciais nunca saem do servidor. A API retorna apenas os últimos quatro caracteres.
Resolução de problemas
| Sintoma | Causa | Correção |
|---|---|---|
listCapabilities: cloudstack 401: unable to verify user credentials and/or request signature | Chave ou segredo de API incorretos, chave de outro usuário ou problema de relógio no servidor do painel | Gere as chaves novamente com cmk generate userkeys e cole ambas. Verifique a hora do servidor do painel. |
Teste: listZones: … ou timeout | O servidor do painel não consegue alcançar a URL da API | Verifique o DNS, o firewall e o caminho exato /client/api. |
| Assistente: "network not found in that zone for this API key" | A rede escolhida pertence a outra conta ou zona | Crie a rede na conta dedicada (consulte acima) e execute Test connection novamente. |
| Assistente: "pick a zone and a network" | Teste não executado, ou nenhuma zona ou rede selecionada | Clique em Test connection e escolha ambas as listas. |
| Banner "chave do CloudStack não configurada" | Nenhuma chave salva ainda ("Connect later") | Preencha o cartão Connection, Save connection e, em seguida, Test connection. |
| Banner "CloudStack connection is OFF" | O botão Enable CloudStack connection está desativado | Ative-o e salve. |
| Chave somente leitura: "unusable …" no teste | Permissão de função ausente ou conta incorreta | Verifique os seis comandos permitidos e se a conta está no domínio ROOT. |
| "Zone public IP ranges not measured yet" ou "no public IP ranges declared" | Nenhuma chave somente leitura, ou a zona realmente não possui faixa pública | Adicione a chave somente leitura ou adicione um intervalo de IP público no CloudStack. |
| "Pool vazio — aguarde 60 s para a sincronização do vmd" | A lista de IPs é atualizada pelo worker uma vez por minuto | Aguarde um minuto e recarregue. |
| "sem IPs livres no intervalo 203.0.113." | Todos os endereços no prefixo comercializável estão em uso | Adicione endereços à zona, amplie o prefixo ou libere IPs não utilizados. |
| "Falha ao buscar dados de rede (CloudStack não está respondendo ou chave sem permissões)" | A chave perdeu o acesso ou o CloudStack está fora do ar | Execute Test connection; verifique se a conta está ativada. |
| "Rede de convidados NÃO existe" | A rede foi excluída no CloudStack | Crie a rede novamente e defina-a como padrão em Provisioning. |