Criar uma implantação em VMs

Neste documento, explicamos como implantar o Spanner Omni em máquinas virtuais (VMs). Esta implantação não tem criptografia. Se você quiser configurar rapidamente um ambiente de teste ou prova de conceito para avaliar o Spanner Omni, criar uma implantação sem segurança é a maneira mais rápida de começar, porque não exige que você configure o mTLS ou outras medidas de segurança. No entanto, devido a riscos de segurança, como tráfego de rede não criptografado e acesso aberto, não recomendamos essa configuração para ambientes de produção. É possível escolher entre uma implantação de servidor único ou regional em várias zonas.

A versão prévia do Spanner Omni não é compatível com a criptografia TLS e para de gravar dados 90 dias após a criação de uma implantação. Para acesso antecipado à edição com todos os recursos, entre em contato com o Google.

Antes de começar

Antes de configurar uma implantação sem segurança, verifique se você atende aos seguintes requisitos:

  • Acesso SSH: tenha acesso SSH a todas as máquinas na implantação para fazer o download e executar o binário do Spanner Omni.

  • Conectividade: todas as máquinas na implantação podem se conectar entre si.

  • Rede: sua configuração de rede permite a comunicação TCP nas portas 15000 a 15025.

  • Armazenamento: cada máquina tem armazenamento suficiente para hospedar os dados que a implantação processa.

  • Requisitos do sistema: verifique se sua configuração atende a todos os requisitos do sistema.

  • Configuração do vSphere: se você estiver executando o Spanner Omni na plataforma de virtualização vSphere, desative a virtualização do contador de carimbo de data/hora (TSC, na sigla em inglês). Adicione monitor_control.virtual_rdtsc = FALSE ao arquivo de configuração .vmx da máquina virtual.

Etapa 1: decidir a topologia de implantação

O Spanner Omni usa uma hierarquia de locais, zonas e servidores para definir a topologia de implantação. Você pode escolher entre as seguintes topologias com base nas suas metas de disponibilidade:

  • Servidor único: a implantação tem um único servidor que é executado em uma única máquina.

  • Zona única: a implantação é executada em vários servidores distribuídos em uma única zona.

  • Um local, várias zonas (implantação replicada): a implantação é executada em vários servidores distribuídos em várias zonas em um local.

  • Vários locais, várias zonas: a implantação é executada em vários servidores distribuídos em vários locais e zonas.

Para mais informações, consulte Termos principais do Spanner Omni e Configurações de implantação do Spanner Omni.

Para qualquer implantação que não seja um único servidor, crie um arquivo de configuração YAML chamado deployment.yaml que defina a topologia. Especifique apenas os servidores raiz neste arquivo. Adicione servidores não raiz mais tarde.

Exemplo: implantação replicada em várias zonas

O exemplo a seguir mostra uma configuração para uma implantação regional em três zonas.

name: regional-deployment
location:
  - name: us-central1
zone:
  - name: us-central1-a
    location: us-central1
    single_server: false
    root_server:
      - host: rootserver1
  - name: us-central1-b
    location: us-central1
    single_server: false
    root_server:
      - host: rootserver2
  - name: us-central1-c
    location: us-central1
    single_server: false
    root_server:
      - host: rootserver3

Exemplo: implantação em vários locais

O exemplo a seguir mostra uma configuração para uma implantação em três locais.

name: multi-location-deployment
location:
  - name: us-central1
  - name: europe-west2
  - name: asia-southeast1
zone:
  - name: us-central1-a
    location: us-central1
    single_server: false
    root_server:
      - host: rootserver1
  - name: europe-west2-a
    location: europe-west2
    single_server: false
    root_server:
      - host: rootserver2
  - name: asia-southeast1-a
    location: asia-southeast1
    single_server: false
    root_server:
      - host: rootserver3

Etapa 2: fazer o download e configurar o binário

Repita essas etapas para cada máquina na implantação:

  1. Crie um diretório para o binário e navegue até ele.

  2. Faça o download do binário:

    gsutil cp gs://spanner-omni/VERSION/spanner-omni-VERSION-linux-x86_64.tar.gz .
    

    Também é possível usar scp ou outras ferramentas de transferência de arquivos para copiar o binário para suas VMs.

  3. Extraia o binário:

    tar -xvf spanner-omni-VERSION-linux-x86_64.tar.gz
    

Etapa 3: iniciar os servidores

Crie um diretório base em cada servidor para armazenar dados, metadados e registros. Se um servidor precisar ser reiniciado, especifique o mesmo diretório para garantir a continuidade.

Opção A: implantação de servidor único

Para uma implantação de servidor único, execute o seguinte comando:

spanner start-single-server --base-dir=SPANNER_BASE_DIR

Depois que o servidor for iniciado, siga para a Etapa 6: interagir com a implantação.

Opção B: implantação de escalonamento horizontal

Para implantações de escalonamento horizontal, inicie o servidor em cada máquina. As flags --server-address e --zone correspondem aos valores na configuração de implantação. A rede resolve o server_address.

spanner start --root --server-address=RESOLVABLE_HOSTNAME --zone=ZONE_NAME --base-dir=SPANNER_BASE_DIR

Exemplo:

spanner start --root --server-address=rootserver1 --zone=us-central-1a --base-dir=./spanbasedir

Etapa 4: criar a implantação

Para criar a implantação, siga estas etapas:

  1. Copie o arquivo deployment.yaml criado na Etapa 1: decidir a topologia de implantação para um dos servidores raiz.

  2. No servidor raiz, execute o seguinte comando para criar a implantação:

    spanner deployment create --config-file=deployment.yaml
    

    O console de cada máquina mostra mensagens indicando que a implantação está pronta.

  3. Valide a implantação listando as zonas:

    spanner deployment zones list
    

    A saída lista os locais, as zonas e os servidores especificados em deployment.yaml.

Etapa 5: configurar um balanceador de carga (opcional)

Configure um balanceador de carga TCP com os seguintes detalhes:

Configuração Valor
Protocolo TCP
IP do back-end Os endereços IP dos seus servidores
Porta 15000 (ou a porta usada na flag --server-address)
URL de verificação de integridade http://SERVER_IP:15012/healthz
Estratégia de balanceamento Round-robin

Em implantações com vários locais, é possível configurar um balanceador de carga por local e um balanceador de carga principal para distribuir o tráfego em todos os locais.

Etapa 6: interagir com a implantação

Depois que a implantação estiver pronta, interaja com ela usando a CLI de qualquer VM ou máquina local. Se você executar a CLI em uma máquina separada, como um laptop de desenvolvedor, faça o download e extraia o pacote da CLI. Para mais informações, consulte o Guia de início rápido sobre como usar a CLI do Spanner Omni.

Para interagir com a implantação, siga estas etapas:

  1. Crie um banco de dados.

    spanner --deployment-endpoint=LOAD_BALANCER_IP_OR_SERVER_IP databases create DATABASE_NAME
    
  2. Abra o shell do SQL:

    spanner sql --database=DATABASE_NAME
    
  3. Crie uma tabela e insira dados:

    CREATE TABLE names (
      nameId INT64 NOT NULL,
      name STRING(100)
    ) PRIMARY KEY (nameId);
    
    INSERT INTO names (nameId, name) VALUES (1, "Jack");
    
  4. Verifique o banco de dados e os dados:

    Para listar bancos de dados: bash spanner databases list

    A saída será assim:

    NOME ESTADO VERSION_RETENTION_PERIOD EARLIEST_VERSION_TIME ENABLE_DROP_PROTECTION
    DATABASE_NAME READY 1h 2025-02-07T12:25:30Z falso

    Para consultar a tabela: bash spanner sql --database=DATABASE_NAME

  5. Execute os seguintes comandos SQL:

    SHOW TABLES;
    SELECT * FROM names;
    

Etapa 7: (opcional) escalonar a implantação

Para escalonar a capacidade em uma zona, adicione servidores não raiz. Execute o seguinte comando em cada novo servidor:

spanner start --server-address=NON_ROOT_HOSTNAME --join-servers=SERVER1:PORT1,SERVER2:PORT2,SERVER3:PORT3 --zone=ZONE_NAME --base-dir=SPANNER_BASE_DIR

Etapa 8: (opcional) observar a implantação

Para monitorar a integridade e o desempenho da sua implantação, configure a coleta, a visualização e os alertas de métricas. Também é possível coletar traces distribuídos para analisar a latência da solicitação.

Configurar o Prometheus

Os servidores do Spanner Omni exportam métricas no formato do Prometheus na porta 15012. Adicione o seguinte a scrape_configs em prometheus.yml:

scrape_configs:
  - job_name: 'spanner'
    static_configs:
      - targets: ['HOST1:15012', 'HOST2:15012', 'HOSTN:15012']

Configure o Grafana

Para ver dados de monitoramento no Grafana:

  1. Provisione a fonte de dados do Prometheus criando um arquivo em provisioning/datasources:

    apiVersion: 1
    datasources:
      - name: Prometheus
        uid: prometheus
        type: prometheus
        access: proxy
        url: http://PROMETHEUS_HOST:PROMETHEUS_PORT
        jsonData:
          httpMethod: POST
          manageAlerts: false
          prometheusType: Prometheus
          prometheusVersion: PROMETHEUS_VERSION
          cacheLevel: 'High'
          disableRecordingRules: false
          incrementalQueryOverlapWindow: 10m
    
  2. Crie um painel na interface do Grafana ou provisione-o usando provisioning/dashboards.

Configurar alertas

Configure alertas usando a interface do Grafana ou arquivos de configuração. Por exemplo, é possível acionar um alerta se o 95º percentil (p95) da latência de transação exceder 100 milissegundos. Para uma lista de alertas disponíveis, consulte Usar alertas do Prometheus para monitorar o Spanner Omni.

Coletar e analisar rastreamentos

Colete informações de rastreamento distribuído no formato OTLP e visualize-as com ferramentas como o Jaeger.

  1. Configure um coletor de rastreamento compatível com OTLP. Para o Jaeger:

    export COLLECTOR_OTLP_ENABLED=true
    jaeger-all-in-one
    

    Verifique se a porta OTLP permite o tráfego de rede entre o Spanner Omni e o coletor.

  2. Defina a variável de ambiente SPANNER_BOX_OTLP_TRACE_EXPORTER_ENDPOINT e inicie os servidores do Spanner Omni:

    export SPANNER_BOX_OTLP_TRACE_EXPORTER_ENDPOINT=COLLECTOR_HOST:COLLECTOR_PORT
    spanner start --root --server-address=RESOLVABLE_HOSTNAME --zone=ZONE_NAME --base-dir=SPANNER_BASE_DIR
    

A seguir