Skip to content

Zonas CDN

Quando os streamers ficam em cidades e redes diferentes, o espectador deve ser mandado ao mais próximo. Para isso existem as zonas CDN: o IP do espectador é mapeado a uma zona por rotas CIDR, e o balanceador de reprodução escolhe um streamer vivo da zona correspondente que tenha o stream.

Enquanto nenhuma zona tiver rotas CIDR, vale o comportamento padrão: os players vão aos streamers edge, se o cluster os tiver, senão — ao streamer onde o stream é capturado. Para uma instalação numa rede só isso costuma bastar — as zonas chegam junto com a geografia.

Como o streamer é escolhido

  1. O IP do espectador é comparado às rotas CIDR de todas as zonas; vence o prefixo correspondente mais longo.
  2. Na zona vencedora procura-se um streamer vivo que leve o stream.
  3. Se não há — o espectador é levado à zona de reserva daquela zona, se definida.
  4. Dali — o modo de entrega do streamer: com URL pública de payload o espectador recebe um redirect direto à máquina, sem ela o central faz proxy da mídia através de si (veja as configurações do streamer).

Crie uma zona

A tela Zonas CDN → Criar zona, um nome curto como eu ou spo.

A lista de zonas: rotas e fallback de cada uma

Abre-se o editor da zona:

  • Rotas CIDR — prefixos IPv4 e IPv6 numa lista só: 10.0.0.0/8, 2a02:6b8::/32. Um chip por prefixo; CIDR inválido o formulário não aceita.
  • Zona de reserva — para onde levar o espectador quando esta zona não tem streamer vivo com o stream.

Antes de salvar a primeira rota, atribua os streamers de reprodução a zonas e cubra as redes IPv4 e IPv6 dos espectadores. Depois de salvar, espectadores fora das rotas e streamers fora da cadeia de zonas permitida não poderão participar da reprodução. Zonas vazias podem ser preparadas com antecedência: por si só, não alteram a reprodução.

Pressione Salvar. Se a zona foi editada em paralelo, o editor mostra o mesmo aviso de conflito dos demais formulários: reler ou sobrescrever.

O editor da zona: rotas CIDR e a zona de reserva

Atribua os streamers

Uma zona sem streamers não roteia nada. O pertencimento é definido do lado do streamer: o campo Zona CDN nas configurações dele. No registro a zona aparece ao lado do nome da máquina.

Se os espectadores param onde não devem

  • Um espectador cai em zona alheia. Revise as rotas: vence o prefixo mais longo entre todas as zonas — uma rota mais específica de outra zona atropela a sua.
  • Os espectadores recebem o endereço do central em vez do streamer. O streamer não tem URL pública de payload — o central faz proxy da mídia. É um modo válido, mas todo o tráfego passa pelo central.

Rotas explícitas e recusa

A primeira rota CIDR válida ativa as restrições de reprodução em toda a instalação. O central seleciona somente nós da zona do cliente e da cadeia explícita fallback_zone. Nós sem zona e zonas alheias ficam excluídos. none (null na API), uma zona inexistente ou repetida encerram a cadeia. Sem destinos aptos, o central responde 503 com Retry-After; um stream desconhecido recebe 404.

Com o roteamento CDN ativado, também há recusa de solicitações sem CIDR correspondente ou IP do cliente. Configure explicitamente 0.0.0.0/0 para IPv4 e ::/0 para IPv6 se precisar de uma rota geral. Zonas vazias não ativam o roteamento CDN. Excluir a última rota CIDR restaura a seleção sem restrições: primeiro os streamers edge, depois os streamers de captura.

A origem não é uma reserva universal. Espectadores de um escritório com falha podem sobrecarregá-la e prejudicar outros escritórios. Para permiti-la, atribua o nó de origem a origin-pool, crie essa zona (as rotas podem ficar vazias) e use-a como reserva do escritório. O nome não tem significado especial. Uma origem na própria zona do cliente também é explicitamente permitida.

Configuração Quando todos os nós de office-2 falham
office-2 → none Recusa; office-1 e origem excluídos
office-2 → office-1 → none Somente office-1; depois recusa
office-2 → origin-pool → none Somente origin-pool; depois recusa

Carga e limites

Na mesma zona, edge e ingest são iguais: vence o nó com menos sessões Play ativas; empates são distribuídos uniformemente. A origem não tem prioridade especial. JSON ordena zonas pela cadeia e nós por carga crescente; endereços privados são excluídos. GET normal permite proxy e entrega local.

A seção CDN do nó oferece dois campos independentes:

  • playback_session_limit: limite de sessões Play ativas, sem Publish.
  • playback_bandwidth_kbit: tráfego de saída de todo o host em kbit/s, incluindo tráfego entre nós. Independente de network_bandwidth_kbit, o orçamento RX+TX de alocação.

Vazio remove o limite; 0 impede novas seleções. Um valor igual ou superior ao limite exclui o nó. Se todos forem excluídos, tenta-se a próxima zona explícita. Métricas necessárias ausentes excluem o nó; o último relatório vale enquanto estiver online. Limites explícitos também se aplicam sem zonas.

Os limites afetam novas decisões do central. Relatórios atrasados e URLs já emitidas permitem ultrapassá-los. Não limitam a banda nem encerram sessões. O player recebe alterações na próxima solicitação de rotas; URLs existentes não são revogadas.

Para VOD, primeiro filtram-se as réplicas disponíveis pelas zonas permitidas; depois selecionam-se a maior revisão disponível, a zona e a carga. Uma réplica recente proibida não exclui uma antiga permitida; uma reserva permitida mais recente pode prevalecer sobre a cópia local antiga.

Um proxy confiável

Informe CIDRs em Proxies confiáveis do cluster, nas configurações compartilhadas do central, um prefixo por linha. A lista vale para todo o cluster, incluindo todas as instâncias do central e os streamers, sem exceções locais. Por exemplo:

192.0.2.10/32
2001:db8::10/128

Somente de um par confiável aceita-se o último IP de X-Forwarded-For. O proxy deve acrescentar o endereço real do cliente. Se ausente ou inválido, usa-se o IP da conexão; X-Real-IP é ignorado. Uma lista vazia não confia em cabeçalhos. Uma cadeia de vários proxies confiáveis não é suportada.

As alterações e a limpeza da lista são aplicadas automaticamente na atualização da configuração, sem reiniciar. Um CIDR inválido é rejeitado e o campo mostra o erro. A API expõe trusted_proxies por PATCH /central/api-v4/config; um array vazio ou null remove a confiança em todos os proxies. O listener determina o esquema da URL pública.