Instalar o AlloyDB Omni em uma VM

Esta página descreve como realizar instalações de instância única do AlloyDB Omni em qualquer VM Linux que ofereça suporte a ambientes de execução de contêineres. Se você precisar de uma configuração de várias instâncias do AlloyDB Omni, consulte Alta disponibilidade e resiliência de dados.

Antes de começar

Antes de instalar o AlloyDB Omni na VM, faça o seguinte:

  1. Leia Planejar a instalação do AlloyDB Omni em uma VM.
  2. Leia Executar o AlloyDB Omni com ou sem raiz e conclua as etapas necessárias para cada caso, dependendo do ambiente escolhido.

Executar o AlloyDB Omni com ou sem acesso root

É possível executar o AlloyDB Omni usando o Docker ou o Podman. Ambos esses mecanismos de contêiner podem ser executados como raiz ou sem raiz. Rootful se refere a executar o Docker ou o Podman como o usuário raiz, enquanto rootless se refere a executá-los como um usuário não raiz ou sem privilégios.

O modo escolhido depende dos requisitos e preferências do ambiente. Se a simplicidade é importante, o rootful pode ser ideal para você. Se você precisar da segurança de um usuário sem privilégios, o rootless pode ser a escolha certa.

Se você decidir executar um ambiente com raiz, precisará decidir como gerenciar o mapeamento de usuários entre o contêiner e a máquina host. Na prática, o AlloyDB Omni executa processos como o usuário postgres, que tem um UID e GID de 999. Isso significa que você tem duas opções para gerenciar o mapeamento de usuários:

  • Não fazer nada. postgres vai continuar não mapeando para nenhum usuário na máquina host.
  • Crie um usuário e um grupo de usuários com UID e GID de 999 para que postgres seja mapeado para esse usuário e grupo de usuários.

Para ambientes sem raiz, postgres é mapeado para um sub-UID e um sub-GID a que o usuário e o grupo de usuários do host têm acesso (conforme definido nos arquivos /etc/subuid e /etc/subgid). Isso significa que você não precisa gerenciar o mapeamento de usuários.

(Sem raiz) Configurar intervalos de sub-UID e sub-GID

Se a imagem do Linux ainda não tiver intervalos de sub-UID e sub-GID configurados para o usuário sem privilégios, será necessário configurá-los para executar o AlloyDB Omni sem raiz.

  1. Se você estiver em um sistema Debian, instale os binários newuidmap e newgidmap.

    apt-get install -y uidmap
    
  2. Adicione uma entrada subuid para o usuário sem raiz.

    echo "ROOTLESS_USER:SUB_UID_RANGE_START:SUB_UID_RANGE_COUNT" >> /etc/subuid
    

    Substitua as seguintes variáveis:

    • ROOTLESS_USER: usuário que você quer executar o AlloyDB Omni.
    • SUB_UID_RANGE_START: número mais baixo do intervalo de sub-UIDs que você quer registrar para o usuário.
    • SUB_UID_RANGE_COUNT: quantidade de sub-UIDs que você quer registrar para o usuário. Esse valor precisa ser pelo menos 999.
  3. Adicione uma entrada subgid para o usuário sem raiz.

    echo "ROOTLESS_USER:SUB_GID_RANGE_START:SUB_GID_RANGE_COUNT" >> /etc/subgid
    

    Substitua as seguintes variáveis:

    • ROOTLESS_USER: usuário que você quer executar o AlloyDB Omni.
    • SUB_GID_RANGE_START: número menor do intervalo de sub-GIDs que você quer registrar para o usuário.
    • SUB_GID_RANGE_COUNT: quantidade de sub-GIDs que você quer registrar para o usuário. Esse valor precisa ser pelo menos 999.
  4. Se você estiver usando o Docker, execute o comando a seguir como ROOTLESS_USER.

    /usr/bin/dockerd-rootless-setuptool.sh install 
    
  5. Se você estiver usando o Podman, permita que o usuário execute serviços sem fazer login.

    loginctl enable-linger ROOTLESS_USER
    

    Substitua a seguinte variável:

    • ROOTLESS_USER: usuário que você quer executar o AlloyDB Omni.
  6. Abra um novo shell para que as mudanças de sub-UID e sub-GID entrem em vigor.

Criar o diretório em que o AlloyDB Omni armazena dados

Se você estiver usando um sistema de armazenamento que faz mais do que apenas executar o AlloyDB Omni, crie o diretório do AlloyDB Omni no sistema de arquivos atual do dispositivo. Caso contrário, crie um novo sistema de arquivos no dispositivo dedicado.

Sistema de arquivos atual

Docker

mkdir -p DATA_DIR

Docker

mkdir -p DATA_DIR

Podman

mkdir -p DATA_DIR

Podman

mkdir -p DATA_DIR

Substitua as seguintes variáveis:

  • DATA_DIR: caminho do diretório do host em que seus dados são armazenados.

Dispositivo dedicado

  1. Crie um diretório no host em que o disco será montado.

    mkdir -p MOUNT_POINT
    

    Substitua a seguinte variável:

    • MOUNT_POINT: caminho do diretório de nível superior que precisa conter a instância do AlloyDB Omni.
  2. Crie uma tabela de partição GPT com uma única partição no dispositivo de disco.

    parted -s DEVICE_PATH mklabel gpt
    parted -s DEVICE_PATH mkpart primary 0% 100%

    Substitua a seguinte variável:

    • DEVICE_PATH: caminho atribuído pelo sistema operacional ao dispositivo de disco.
  3. Crie um sistema de arquivos no dispositivo de disco. Recomendamos o uso do sistema de arquivos ext4 para o AlloyDB Omni.

    mkfs.ext4 -q -m 1 -L FS_LABEL -F PARTITION_PATH
    

    Substitua as seguintes variáveis:

    • FS_LABEL: rótulo do sistema de arquivos. O comprimento máximo de um rótulo de sistema de arquivos ext4 é de 16 caracteres.
    • PARTITION_PATH: caminho para a partição do disco usada para armazenar os dados do contêiner.
  4. Monte o dispositivo e crie uma entrada no arquivo /etc/fstab para que o disco seja montado após uma reinicialização.

    echo -e "LABEL=FS_LABEL\tMOUNT_POINT\text4\tdefaults\t0 0" | tee -a /etc/fstab
    systemctl daemon-reload
    mount MOUNT_POINT

    Substitua as seguintes variáveis:

    • FS_LABEL: rótulo do sistema de arquivos. O comprimento máximo de um rótulo de sistema de arquivos ext4 é de 16 caracteres.
    • MOUNT_POINT: caminho do diretório de nível superior que precisa conter a instância do AlloyDB Omni.
  5. Crie um diretório de dados no sistema de arquivos específico do contêiner.

    Rootful

    mkdir -p DATA_DIR
    

    Rootless

    mkdir -p DATA_DIR
    chown ROOTLESS_USER:ROOTLESS_GROUP DATA_DIR

    Substitua as seguintes variáveis:

    • DATA_DIR: caminho do diretório do host em que seus dados são armazenados.
    • ROOTLESS_USER: se você estiver usando um ambiente sem raiz, este é o usuário que vai ser o proprietário do diretório.
    • ROOTLESS_GROUP: se você estiver usando um ambiente sem raiz, esse é o grupo que vai ser proprietário do diretório.

Criar o contêiner

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:latest

Docker

docker run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
google/alloydbomni:latest

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:latest

Podman

podman run -d --name CONTAINER_NAME \
-e POSTGRES_PASSWORD=NEW_PASSWORD \
-v DATA_DIR:/var/lib/postgresql/data \
-p HOST_PORT:5432 \
--restart=always \
docker.io/google/alloydbomni:latest

Substitua as seguintes variáveis:

  • CONTAINER_NAME: nome que você usou para o diretório em Criar diretório em que o AlloyDB Omni armazena dados.
  • NEW_PASSWORD: senha atribuída ao usuário postgres do novo contêiner após a criação.
  • DATA_DIR: caminho do diretório do host em que seus dados são armazenados.
  • HOST_PORT: porta TCP na máquina host em que o contêiner precisa publicar a própria porta 5432. Para usar a porta padrão do PostgreSQL na máquina host, especifique 5432.

conectar-se à instância

Dependendo do ambiente, você pode se conectar à instância do AlloyDB Omni localmente ou remotamente.

Conectar localmente

Docker

docker exec -it CONTAINER_NAME psql -U postgres

Docker

docker exec -it CONTAINER_NAME psql -U postgres

Podman

podman exec -it CONTAINER_NAME psql -U postgres

Podman

podman exec -it CONTAINER_NAME psql -U postgres

Substitua a seguinte variável:

Conectar remotamente

psql -U postgres -p HOST_PORT -h IP_ADDRESS_OR_FQDN

Substitua as seguintes variáveis:

  • HOST_PORT: a porta TCP usada em Criar o contêiner.
  • IP_ADDRESS_OR_FQDN: endereço IP ou nome de domínio totalmente qualificado do host em que o AlloyDB Omni está em execução.

Depois de executar esse comando, você vai precisar informar a senha da conta postgres. Digite a senha que você usou em Criar o contêiner.

A seguir