이 페이지에서는 컨테이너 런타임을 지원하는 Linux VM에 AlloyDB Omni의 단일 인스턴스를 설치하는 방법을 설명합니다. AlloyDB Omni의 멀티 인스턴스 구성이 필요한 경우 고가용성 및 데이터 복원력을 참조하세요.
시작하기 전에
VM에 AlloyDB Omni를 설치하기 전에 다음을 수행합니다.
- VM에 AlloyDB Omni 설치 계획을 읽습니다.
- AlloyDB Omni rootful 또는 rootless 실행을 읽고 선택한 환경에 따라 rootful 또는 rootless에 필요한 단계를 완료합니다.
AlloyDB Omni rootful 또는 rootless 실행
Docker 또는 Podman을 사용하여 AlloyDB Omni를 실행할 수 있습니다. 이러한 컨테이너 엔진 모두 rootful 또는 rootless로 실행될 수 있습니다. rootful은 Docker 또는 Podman을 루트 사용자로 실행하는 것을, rootless는 루트가 아닌 사용자나 권한이 없는 사용자로 실행하는 것을 의미합니다.
환경에 대한 요구사항과 선호도에 따라 모드를 선택할 수 있습니다. 단순성이 중요하면 rootful이 적합할 수 있습니다. 권한 없는 사용자 보안이 필요한 경우에는 rootless가 적합할 수 있습니다.
rootful 환경을 실행하기로 결정하면 컨테이너와 호스트 머신 간의 사용자 매핑을 관리하는 방법을 결정해야 합니다. 실제로 AlloyDB Omni는 UID와 GID가 999
인 postgres
사용자로 프로세스를 실행합니다. 즉, 사용자 매핑을 관리하는 옵션에는 두 가지가 있습니다.
- 아무 작업 안 함.
postgres
는 호스트 머신의 어떤 사용자에게도 계속 매핑되지 않습니다. postgres
가 해당 사용자와 사용자 그룹에 매핑되도록 UID와 GID가999
인 사용자와 사용자 그룹을 만듭니다.
rootless 환경의 경우 postgres
는 /etc/subuid
및 /etc/subgid
파일에 정의된 대로 호스트 사용자와 사용자 그룹이 액세스할 수 있는 하위 UID 및 하위 GID에 매핑됩니다. 즉, 사용자 매핑을 관리할 필요가 없습니다.
(rootless) 하위 UID 및 하위 GID 범위 구성
Linux 이미지에 권한이 없는 사용자에 구성된 하위 UID 및 하위 GID 범위가 아직 없으면 AlloyDB Omni rootless가 실행되도록 이러한 범위를 구성해야 합니다.
Debian 시스템을 사용하는 경우
newuidmap
및newgidmap
바이너리를 설치합니다.apt-get install -y uidmap
rootless 사용자에 대한
subuid
항목을 추가합니다.echo "ROOTLESS_USER:SUB_UID_RANGE_START:SUB_UID_RANGE_COUNT" >> /etc/subuid
다음 변수를 바꿉니다.
ROOTLESS_USER
: AlloyDB Omni를 실행할 사용자SUB_UID_RANGE_START
: 사용자에 등록할 하위 UID 범위의 하한SUB_UID_RANGE_COUNT
: 사용자에 등록할 하위 UID 양. 값은 최소 999 이상이어야 합니다.
rootless 사용자에 대한
subgid
항목을 추가합니다.echo "ROOTLESS_USER:SUB_GID_RANGE_START:SUB_GID_RANGE_COUNT" >> /etc/subgid
다음 변수를 바꿉니다.
ROOTLESS_USER
: AlloyDB Omni를 실행할 사용자SUB_GID_RANGE_START
: 사용자에 등록할 하위 GID 범위의 하한SUB_GID_RANGE_COUNT
: 사용자에 등록할 하위 GID 양. 값은 최소 999 이상이어야 합니다.
사용자가 로그인하지 않은 상태에서 AlloyDB Omni 인스턴스를 실행하려면 다음 명령어를 실행합니다.
loginctl enable-linger ROOTLESS_USER
다음 변수를 바꿉니다.
ROOTLESS_USER
: AlloyDB Omni를 실행할 사용자
Docker를 사용하는 경우 ROOTLESS_USER로 다음 명령어를 실행합니다.
/usr/bin/dockerd-rootless-setuptool.sh install
하위 UID 및 하위 GID 변경사항이 적용되도록 새 셸을 엽니다.
AlloyDB Omni가 데이터를 저장하는 디렉터리 만들기
AlloyDB Omni 실행 이상의 작업을 수행하는 스토리지 시스템을 사용하는 경우 기기의 기존 파일 시스템에 AlloyDB Omni 디렉터리를 만들 수 있습니다. 그렇지 않으면 전용 기기에 새 파일 시스템을 만들 수 있습니다.
기존 파일 시스템
Docker
mkdir -p DATA_DIR
Docker
mkdir -p DATA_DIR
Podman
mkdir -p DATA_DIR
Podman
mkdir -p DATA_DIR
다음 변수를 바꿉니다.
DATA_DIR
: 데이터가 저장된 호스트 디렉터리 경로입니다.
전용 기기
디스크가 마운트될 호스트에 디렉터리를 만듭니다.
mkdir -p MOUNT_POINT
다음 변수를 바꿉니다.
MOUNT_POINT
: AlloyDB Omni 인스턴스를 포함해야 하는 최상위 디렉터리 경로
디스크 기기에 단일 파티션이 있는 GPT 파티션 테이블을 만듭니다.
parted -s DEVICE_PATH mklabel gpt
parted -s DEVICE_PATH mkpart primary 0% 100%
다음 변수를 바꿉니다.
DEVICE_PATH
: 운영체제에서 디스크 기기에 할당한 경로
디스크 기기에 파일 시스템을 만듭니다. AlloyDB Omni에는
ext4
파일 시스템을 사용하는 것이 좋습니다.mkfs.ext4 -q -m 1 -L FS_LABEL -F PARTITION_PATH
다음 변수를 바꿉니다.
FS_LABEL
: 파일 시스템 라벨.ext4
파일 시스템 라벨 최대 길이는 16자(영문 기준)입니다.PARTITION_PATH
: 컨테이너 데이터를 저장하는 데 사용되는 디스크 파티션의 경로
디스크가 재부팅 후 마운트되도록 기기를 마운트하고
/etc/fstab
파일에 항목을 만듭니다.echo -e "LABEL=FS_LABEL\tMOUNT_POINT\text4\tdefaults\t0 0" | tee -a /etc/fstab
systemctl daemon-reload
mount MOUNT_POINT
다음 변수를 바꿉니다.
FS_LABEL
: 파일 시스템 라벨.ext4
파일 시스템 라벨 최대 길이는 16자(영문 기준)입니다.MOUNT_POINT
: AlloyDB Omni 인스턴스를 포함해야 하는 최상위 디렉터리 경로
컨테이너별 파일 시스템에 데이터 디렉터리를 만듭니다.
Rootful
mkdir -p DATA_DIR
Rootless
mkdir -p DATA_DIR
chown ROOTLESS_USER:ROOTLESS_GROUP DATA_DIR
다음 변수를 바꿉니다.
DATA_DIR
: 데이터가 저장된 호스트 디렉터리 경로입니다.ROOTLESS_USER
: rootless 환경을 사용하는 경우 디렉터리를 소유할 사용자ROOTLESS_GROUP
: rootless 환경을 사용하는 경우 디렉터리를 소유할 그룹
컨테이너 만들기
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
다음 변수를 바꿉니다.
CONTAINER_NAME
: AlloyDB Omni가 데이터를 저장하는 디렉터리 만들기에서 사용한 디렉터리의 이름NEW_PASSWORD
: 새 컨테이너의postgres
사용자 생성 후 할당된 비밀번호입니다.DATA_DIR
: 데이터가 저장된 호스트 디렉터리 경로입니다.HOST_PORT
: 컨테이너가 자체 포트5432
를 게시해야 하는 호스트 머신의 TCP 포트입니다. 호스트 머신에서도 PostgreSQL 기본 포트를 사용하려면5432
를 지정합니다.
내 인스턴스에 연결
환경에 따라 로컬 또는 원격으로 AlloyDB Omni 인스턴스에 연결할 수 있습니다.
로컬로 연결
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
다음 변수를 바꿉니다.
CONTAINER_NAME
: AlloyDB Omni가 데이터를 저장하는 디렉터리 만들기에서 사용한 디렉터리의 이름
원격으로 연결
psql -U postgres -p HOST_PORT -h IP_ADDRESS_OR_FQDN
다음 변수를 바꿉니다.
HOST_PORT
: 컨테이너 만들기에서 사용한 TCP 포트IP_ADDRESS_OR_FQDN
: AlloyDB Omni가 실행되는 호스트의 IP 주소 또는 정규화된 도메인 이름
이 명령어를 실행하면 postgres
계정 비밀번호를 묻는 메시지가 표시됩니다. 컨테이너 만들기에서 사용한 비밀번호를 입력합니다.