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:
- Leia Planejar a instalação do AlloyDB Omni em uma VM.
- 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 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, configure-os 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 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.
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.
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.
Se você estiver usando o Docker, execute o comando a seguir como ROOTLESS_USER.
/usr/bin/dockerd-rootless-setuptool.sh install
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
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.
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 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 arquivosext4
é de 16 caracteres.PARTITION_PATH
: caminho para a partição de 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 tamanho máximo de um rótulo do sistema de arquivosext4
é de 16 caracteres.MOUNT_POINT
: caminho do diretório de nível superior que deve conter sua 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, 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á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 vai publicar a própria porta5432
. Para usar a porta padrão do PostgreSQL na máquina host também, especifique5432
.
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:
CONTAINER_NAME
: o nome usado 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
: 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.