Instalar o AlloyDB Omni em uma VM

Selecione uma versão da documentação:

Nesta página, descrevemos como fazer instalações de instância única do AlloyDB Omni em qualquer VM do Linux que seja compatível com 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 capacidade de recuperação de dados.

Antes de começar

Antes de instalar o AlloyDB Omni na sua 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 acesso root e conclua as etapas necessárias para o acesso root ou sem acesso root, dependendo do ambiente escolhido.

Executar o AlloyDB Omni com ou sem raiz

É possível executar o AlloyDB Omni usando o Docker ou o Podman. Os dois mecanismos de contêiner podem ser executados com 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 que você tem para o ambiente. Se a simplicidade for importante, o rootful pode ser a opção certa 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 rootful, 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 um 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 sendo mapeado 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, configure-os 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 seu usuário sem raiz.

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

    Substitua as seguintes variáveis:

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

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

    Substitua as seguintes variáveis:

    • ROOTLESS_USER: o usuário que você quer usar para executar o AlloyDB Omni.
    • SUB_GID_RANGE_START: número mais baixo do intervalo de sub-GIDs que você quer registrar para seu usuário.
    • SUB_GID_RANGE_COUNT: quantidade de sub-GIDs que você quer registrar para seu usuário. Esse valor precisa ser pelo menos 999.
  4. Se você quiser que a instância do AlloyDB Omni seja executada enquanto o usuário não estiver conectado, execute o seguinte comando.

    loginctl enable-linger ROOTLESS_USER
    

    Substitua a seguinte variável:

    • ROOTLESS_USER: o usuário que você quer usar para executar o AlloyDB Omni.
  5. Se você estiver usando o Docker, execute o comando a seguir como ROOTLESS_USER.

    /usr/bin/dockerd-rootless-setuptool.sh install 
    
  6. Abra um novo shell para que as mudanças de sub-UID e sub-GID entrem em vigor.

Criar um 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 seu 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á ativado.

    mkdir -p MOUNT_POINT
    

    Substitua a seguinte variável:

    • MOUNT_POINT: caminho do diretório de nível superior que deve conter sua 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 usar o 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 tamanho máximo de um rótulo do sistema de arquivos ext4 é de 16 caracteres.
    • PARTITION_PATH: caminho para a partição de 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 tamanho máximo de um rótulo do sistema de arquivos ext4 é de 16 caracteres.
    • MOUNT_POINT: caminho do diretório de nível superior que deve conter sua 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, esse é o usuário que você quer que seja o proprietário do diretório.
    • ROOTLESS_GROUP: se você estiver usando um ambiente sem raiz, esse será 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: o nome usado 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 vai publicar a própria porta 5432. Para usar a porta padrão do PostgreSQL na máquina host também, especifique 5432.

Conectar-se à instância

Dependendo do seu ambiente, é possível 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: 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á sendo executado.

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

A seguir