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:
- Leia Planejar a instalação do AlloyDB Omni em uma VM.
- 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 quepostgres
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.
Se você estiver em um sistema Debian, instale os binários
newuidmap
enewgidmap
.apt-get install -y uidmap
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.
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.
Se você estiver usando o Docker, execute o comando a seguir como ROOTLESS_USER.
/usr/bin/dockerd-rootless-setuptool.sh install
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.
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
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.
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.
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 arquivosext4
é de 16 caracteres.PARTITION_PATH
: caminho para a partição do disco usada para armazenar os dados do contêiner.
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 arquivosext4
é de 16 caracteres.MOUNT_POINT
: caminho do diretório de nível superior que precisa conter a instância do AlloyDB Omni.
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áriopostgres
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 porta5432
. Para usar a porta padrão do PostgreSQL na máquina host, especifique5432
.
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:
CONTAINER_NAME
: nome que você usou para o diretório em Criar diretório em que o AlloyDB Omni armazena dados.
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.