Configure um serviço de RFC de multimédia

Este guia de início rápido mostra como configurar um serviço de RFC de multimédia em frente de um contentor do Cloud Storage. Pode usar esta configuração para testes ou como base para um ambiente de produção.


Para seguir orientações passo a passo para esta tarefa diretamente na Google Cloud consola, clique em Orientar-me:

Visita guiada


Esta página explica os seguintes procedimentos:

  1. Crie um contentor do Cloud Storage para armazenar o seu conteúdo.
  2. Ative os serviços necessários.
  3. Crie um recurso EdgeCacheOrigin para associar a RFC de multimédia ao seu contentor.
  4. Crie um recurso EdgeCacheService para configurar o encaminhamento de pedidos e o armazenamento em cache para conteúdo na origem.
  5. Teste se uma resposta está a ser colocada em cache.

Antes de começar

Certifique-se de que tem o seguinte:

Crie um contentor do Cloud Storage

O conteúdo da RFC de multimédia pode ter origem em localizações como um contentor do Cloud Storage, uma localização de armazenamento de terceiros ou um equilibrador de carga.

Neste início rápido, vamos armazenar conteúdo num contentor do Cloud Storage.

  1. Crie um contentor do Cloud Storage acessível publicamente e atribua-lhe o nome my-bucket.

    Se preferir não tornar o seu contentor do Cloud Storage acessível publicamente, tem de conceder autorizações à RFC de multimédia para aceder ao contentor. Para mais informações, consulte o artigo Usar contentores privados do Cloud Storage.

  2. Carregue um ficheiro para o contentor.

Ative os serviços necessários

Para configurar e implementar os serviços de CDN de multimédia, tem de ativar a API Network Services e a API Certificate Manager para o seu projeto.

Consola

  1. Ative a API Network Services.

    Ative a API

  2. Ative a API Certificate Manager.

    Ative a API

gcloud

  1. Ative a API Network Services:

    gcloud services enable networkservices.googleapis.com
    
  2. Ative a API Certificate Manager:

    gcloud services enable certificatemanager.googleapis.com
    

Para mais informações sobre a ativação e desativação de serviços, consulte a documentação de utilização de serviços.

Crie um recurso EdgeCacheOrigin

Crie uma origem que aponte para o seu contentor do Cloud Storage.

Consola

  1. Na Google Cloud consola, aceda à página RFC de multimédia.

    Aceda à RFC de multimédia

  2. Clique no separador Origens.

  3. Clique em Criar origem.

  4. Introduza o nome da origem como cloud-storage-origin.

  5. Opcional: introduza uma descrição para a origem.

  6. Para Endereço de origem, escolha Selecionar um contentor do Google Cloud Storage, procure o contentor do Cloud Storage com o nome my-bucket e, de seguida, clique em Selecionar.

    Se tiver uma origem externa, escolha Especificar um FQDN ou um endereço IP e, em seguida, introduza o FQDN ou o endereço IP.

  7. Clique em Criar origem.

Após aproximadamente 10 minutos, o recurso EdgeCacheOrigin criado recentemente aparece na lista de origens no seu projeto na página Origens.

Para atualizar uma morada de origem, clique na origem e, de seguida, clique em Editar.

gcloud

Use o comando gcloud edge-cache origins create:

gcloud edge-cache origins create ORIGIN \
    --origin-address="ADDRESS"

Substitua o seguinte:

  • ORIGIN: o nome da nova origem
  • ADDRESS: o nome do contentor, gs://my-bucket

    Se tiver uma origem externa, substitua ADDRESS pelo FQDN ou pelo endereço IP.

Para ver a origem recém-criada, use o comando gcloud edge-cache origins list.

Para atualizar a morada de origem, use o comando gcloud edge-cache origins update.

API

Use o método edgeCacheOrigins.create:

POST https://networkservices.googleapis.com/v1/PARENT/edgeCacheOrigins?edgeCacheOriginId=ORIGIN_ID
{
  "name": "ORIGIN_ID",
  "originAddress: "ADDRESS"
}

Substitua o seguinte:

  • PARENT: o recurso principal no formato projects/PROJECT/locations/global
  • ORIGIN_ID: o nome abreviado da nova origem
  • ADDRESS: o nome do contentor, gs://my-bucket

    Se tiver uma origem externa, substitua ADDRESS pelo FQDN ou pelo endereço IP.

Para ver a origem recém-criada, use o método edgeCacheOrigins.list.

Para atualizar a morada de origem, use o método edgeCacheOrigins.patch.

Terraform

resource "google_network_services_edge_cache_origin" "default" {
  name           = "cloud-storage-origin"
  origin_address = "gs://my-bucket-${random_id.unique_suffix.hex}"
}

Crie um recurso EdgeCacheService

A configuração do recurso EdgeCacheService configura as definições de encaminhamento, certificado e colocação em cache e pode apontar para recursos EdgeCacheOrigin.

Crie um recurso EdgeCacheService básico que faça o seguinte:

  • Coloca em cache todas as respostas da nossa origem configurada durante uma hora
  • Define um cabeçalho de resposta x-cache-status que devolve o estado da cache (como HIT ou MISS)

Opcionalmente, registe um nome de domínio para este serviço.

Consola

  1. Na Google Cloud consola, aceda à página RFC de multimédia.

    Aceda à RFC de multimédia

  2. Clique no separador Serviços.

  3. Clique em Criar serviço.

  4. Introduza um nome exclusivo para o seu serviço, por exemplo, my-service, e, em seguida, clique em Seguinte.

  5. Na secção Encaminhamento, clique em Adicionar regra de anfitrião e, de seguida, introduza um ou mais nomes de domínios de anfitriões.

  6. Para Anfitriões, introduza um nome de domínio do anfitrião, por exemplo, web.example.com.

  7. Clique em Adicionar regra de encaminhamento.

    1. Para Prioridade, especifique 1.
    2. Clique em Adicionar condição de correspondência. Para Correspondência do caminho, especifique / e, de seguida, clique em Concluído.
    3. Selecione Obter a partir de uma origem e, de seguida, selecione a origem que configurou.
    4. Clique em Ações de suplementos.
    5. Para Ação do cabeçalho, clique em Adicione um item. Em seguida, faça o seguinte:
      1. Para Tipo, selecione Cabeçalhos de resposta a adicionar.
      2. Clique em Adicionar cabeçalho.
      3. Para Nome, especifique x-cache-status e, para Valor, especifique {cdn_cache_status}.
      4. Clique em Concluído.
    6. Para a ação de trajeto, clique em Adicione um item. Em seguida, faça o seguinte:
      1. Para Tipo, selecione Política de RFC.
      2. Para o Modo de cache, selecione FORCE_CACHE_ALL.
      3. Clique em Concluído.
    7. Clique em Guardar.
  8. Clique em Criar serviço.

O recurso EdgeCacheService criado recentemente aparece na página Serviços na lista de serviços no seu projeto.

gcloud

  1. No Cloud Shell, use um editor de texto para criar um ficheiro local denominado my-service.yaml.

    Um ficheiro deste tipo indica o seguinte:

    • Como funciona o encaminhamento: primeiro, faz a correspondência do anfitrião e, em seguida, do caminho
    • Como funciona o armazenamento em cache, com base no modo de cache e no TTL
    • Como os pedidos e as respostas são modificados, por exemplo, através da inserção da variável cdn_cache_status num cabeçalho de resposta
  2. Cole o seguinte conteúdo de exemplo no ficheiro e, em seguida, guarde-o:

    name: SERVICE
    routing:
      hostRules:
      - hosts:
        - DOMAIN 
        pathMatcher: routes
      pathMatchers:
      - name: routes
        routeRules:
        - priority: 1
          matchRules:
          - prefixMatch: /
          origin: ORIGIN
          routeAction:
            cdnPolicy:
              cacheMode: CACHE_ALL_STATIC
              defaultTtl: 3600s
          headerAction:
            responseHeadersToAdd:
            - headerName: "x-cache-status"
              headerValue: "{cdn_cache_status}"
    

    Substitua o seguinte:

    • SERVICE: nome do serviço
    • DOMAIN: o domínio do novo serviço

      Se especificar o nome do domínio, a RFC responde com um erro 404 para outros anfitriões.

    • ORIGIN: o nome da origem relacionada

  3. Use o comando com o ficheiro YAML:gcloud edge-cache services import

    gcloud edge-cache services import SERVICE \
        --source=my-service.yaml
    

    Para ver o serviço recém-criado na lista de EdgeCacheService recursos no seu projeto, use o comando gcloud edge-cache services list.

API

Use o método edgeCacheServices.create:

POST https://networkservices.googleapis.com/v1/PARENT/edgeCacheServices?edgeCacheServiceId=SERVICE_ID
{
  "name": "SERVICE_ID",
  "routing": {
    "hostRules": [
      {
        "hosts": ["DOMAIN"],
        "pathMatcher": "routes"
      }
    ],
    "pathMatchers": [
      {
        "name": "routes",
        "routeRules": [
          {
            "priority": "1",
            "matchRules": [
              {
                "prefixMatch": "/"
              }
            ],
            "origin": "ORIGIN",
            "routeAction": {
               "cdnPolicy": {
                 "cacheMode": "CACHE_ALL_STATIC",
                 "defaultTtl": "3600s"
               }
            }
            "headerAction": {
              "responseHeadersToAdd": [
                {
                  "headerName": "x-cache-status",
                  "headerValue": "{cdn_cache_status}"
                }
              ]
            },
          }
        ]
      }
    ]
  }
}

Substitua o seguinte:

  • PARENT: o recurso principal no formato projects/PROJECT/locations/global
  • SERVICE_ID: o nome do serviço
  • DOMAIN: o domínio do novo serviço

    Se especificar o nome do domínio, a RFC responde com um erro 404 para outros anfitriões.

  • ORIGIN_NAME: o nome da origem relacionada

Para ver o serviço recém-criado na lista de EdgeCacheServicerecursos no seu projeto, use o método edgeCacheServices.list.

Terraform

resource "google_network_services_edge_cache_service" "default" {
  name = "cloud-media-service"
  routing {
    host_rule {
      hosts        = ["googlecloudexample.com"]
      path_matcher = "routes"
    }
    path_matcher {
      name = "routes"
      route_rule {
        description = "a default route rule, priority=10 (low)"
        priority    = 10
        match_rule {
          prefix_match = "/"
        }
        origin = google_network_services_edge_cache_origin.default.name
        route_action {
          cdn_policy {
            cache_mode  = "CACHE_ALL_STATIC"
            default_ttl = "3600s"
          }
        }
        header_action {
          response_header_to_add {
            header_name  = "x-cache-status"
            header_value = "{cdn_cache_status}"
          }
        }
      }
    }
  }
}

A criação do primeiro serviço pode demorar vários minutos. A RFC de multimédia aprovisiona endereços IP dedicados e envia a sua configuração para milhares de localizações periféricas. As atualizações subsequentes a um serviço, como a alteração de uma configuração de rota ou de parâmetros correspondentes, são mais rápidas.

Recupere os endereços IP

Para ver os endereços IP do serviço recém-criado, siga estes passos:

Consola

  1. Na Google Cloud consola, aceda à página RFC de multimédia.

    Aceda à RFC de multimédia

  2. Clique no separador Serviços.

  3. Para os endereços IP do seu serviço, consulte a célula Endereços.

    Se a célula estiver vazia, atualize o navegador.

gcloud

Use o comando gcloud edge-cache services describe:

gcloud edge-cache services describe SERVICE

Substitua SERVICE pelo nome do serviço.

A saída mostra os endereços IP atribuídos ao seu serviço:

ipv4Addresses:
    IPV4_ADDRESS
ipv6Addresses:
    IPV6_ADDRESS
name: projects/my-project/locations/global/edgeCacheServices/SERVICE
...

API

Use o método edgeCacheServices.get:

GET https://networkservices.googleapis.com/v1/SERVICE_NAME

Substitua SERVICE_NAME pelo nome completo do serviço. Use o seguinte formato:

projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID

Substitua SERVICE_ID pelo diminutivo do serviço.

Os detalhes obtidos incluem os endereços IP atribuídos ao serviço:

ipv4Addresses:
    IPV4_ADDRESS
ipv6Addresses:
    IPV6_ADDRESS

Teste se uma resposta está a ser colocada em cache

Antes de testar o serviço, certifique-se de que tem conteúdo armazenável em cache armazenado na sua origem para que a RFC possa obtê-lo.

Para testar se o seu serviço está configurado corretamente para colocar conteúdo em cache, use a ferramenta de linha de comandos curl para emitir pedidos e verificar as respostas. curl também está disponível no Cloud Shell na Google Cloud consola.

Se quiser usar o EdgeCacheService com o seu domínio, pode atribuir o endereço IP do EdgeCacheService a um registo de domínio. Para ver instruções, consulte o artigo Configure o seu domínio através do Cloud DNS. Depois de configurar o domínio, aceda ao conteúdo com o seguinte comando:curl

curl -svo /dev/null "http://DOMAIN_NAME/FILE_NAME"

Se não configurou o DNS para apontar para os seus endereços IP aprovisionados, use a opção resolve para substituir o endereço que o curl usa.

curl -svo /dev/null --resolve DOMAIN_NAME:80:IP_ADDRESS "http://DOMAIN_NAME/FILE_NAME"

Substitua o seguinte:

  • DOMAIN_NAME : o domínio anfitrião que especificou ao criar o serviço
  • IP_ADDRESS: o endereço IP do serviço, conforme visível na coluna Endereços na lista de serviços
  • FILE_NAME: o nome do ficheiro que carregou para o contentor

Exemplo:

curl -svo /dev/null --resolve web.example.com:80:34.104.37.129 "http://web.example.com/file.mp4"

Inicialmente, o comando produz uma saída semelhante à seguinte, com o estado miss, porque a RFC não tem os dados pedidos já obtidos da origem:

< HTTP/2 200 OK
...
< x-cache-status: den;miss
...

Quando envia o mesmo pedido novamente qualquer número de vezes, produz um resultado semelhante ao seguinte, com o estado hit:

< HTTP/2 200 OK
...
< x-cache-status: den;hit
...

Se não for apresentado o estado hit, verifique o seguinte:

  • A resposta é armazenável em cache.
  • O modo de cache configurado permite o armazenamento em cache do conteúdo.
  • A origem não está a definir diretivas de cache que impeçam a colocação em cache. Para mais informações, consulte o artigo Configuração da cache.

Já testou um recurso básico EdgeCacheService que pode publicar conteúdo a nível global. Um serviço de nível de produção pode precisar de certificados SSL (TLS), várias origens e uma política de segurança do Google Cloud Armor.

Opcional: limpe

Elimine todos os recursos que não pretende usar novamente.

Consola

  1. Na Google Cloud consola, aceda à página RFC de multimédia.

    Aceda à RFC de multimédia

  2. Clique no separador Serviços.

  3. Selecione o serviço e, de seguida, clique em Eliminar.

  4. Clique no separador Origens.

  5. Selecione a origem e, de seguida, clique em Eliminar.

gcloud

  1. Para listar os recursos que criou, use o comando gcloud edge-cache origins list e o comando gcloud edge-cache services list.

  2. Para eliminar o serviço, use o comando gcloud edge-cache services delete:

    gcloud edge-cache services delete SERVICE
    

    Substitua SERVICE pelo nome do serviço.

  3. Para eliminar a origem, use o comando gcloud edge-cache origins delete:

    gcloud edge-cache origins delete ORIGIN
    

    Substitua ORIGIN pelo nome da origem.

API

  1. Para listar os recursos que criou, use o método edgeCacheServices.list e o método edgeCacheOrigins.list.

  2. Para eliminar o serviço, use o método edgeCacheServices.delete:

    DELETE https://networkservices.googleapis.com/v1/SERVICE_NAME
    

    Substitua SERVICE_NAME pelo nome completo do serviço. Use o seguinte formato:

    projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID
    

    Substitua SERVICE_ID pelo diminutivo do serviço.

  3. Para eliminar a origem, use o método edgeCacheOrigins.delete:

    DELETE https://networkservices.googleapis.com/v1/ORIGIN
    

    Substitua ORIGIN pelo nome completo da origem. Use o seguinte formato:

    projects/PROJECT/locations/global/edgeCacheOrigins/ORIGIN_ID
    

    Substitua ORIGIN_ID pelo diminutivo da origem.

Repita este processo para quaisquer outros recursos que tenha criado e que não pretenda usar novamente, como o contentor do Cloud Storage.

O que se segue?