이번 글에선 GCP Compute Engine에 Docker 기반 PostgreSQL 서버가 작동하는 인스턴스를 생성하고, 외부에서 접속할 수 있는 환경을 만들어 보려고 합니다. 이 글을 따라하기 전에 우선 GCP 계정을 만들어야 합니다.
GCP Compute Engine 콘솔에 들어와서 상단의 인스턴스 만들기
버튼을 클릭합니다.
인스턴스 이름을 설정해줍니다. 저는 PostgreSQL 서버를 실행시킬 인스턴스라서 postgres
로 설정했습니다. 그리고 GCP 무료 등급을 사용하려면 리전은 us-west1(오리건)
으로 설정하고, 머신 구성은 e2-micro
로 설정해줍니다.
30GB 표준 영구 디스크를 선택합니다.
네트워크 태그에 postgres
를 입력해주고 만들기
버튼을 클릭합니다.
Compute Engine 인스턴스가 만들어졌습니다.
외부 네트워크에서 Compute Engine 인스턴스에 있는 PostgreSQL 서버에 접속할 수 있도록 5432번 포트를 열어줄 꺼에요. GCP VPC 네트워크에 들어와서 방화벽
탭을 클릭하면 위와 같은 화면이 나오는데, 방화벽 규칙 만들기
버튼을 클릭하세요.
방화벽 규칙 이름은 아무거나 정해주세요.
그리고 대상 태그에 postgres
를 입력하고, 소스 IP 범위는 모든 IP 주소 접속을 허용하도록 0.0.0.0/0
을 입력해주세요.
마지막으로 PostgreSQL 서버가 실행되고 있는 5432번 포트를 열어주고 만들기
버튼을 클릭해주세요.
$ gcloud init
$ gcloud components update
$ gcloud compute ssh {GCP계정이름}@{인스턴스이름}
gcloud
를 설치해줍니다. 그리고 GCP 계정 로그인 및 gcloud 업데이트 후 GCP Compute Engine 인스턴스에 SSH 접속을 시도합니다. 첫 SSH 접속 시도 시 비밀번호를 설정하라는 안내 문구가 뜨는데 거기에 매 SSH 접속 시 사용할 비밀번호를 입력합니다.
$ docker ps
$ docker rm -f {컨테이너ID}
docker ps
명령어로 기본적으로 실행 중이던 postgres:alpine
컨테이너 ID를 확인한 후, docker rm
명령어로 해당 컨테이너를 삭제합니다.
$ pwd
/home/{GCP계정이름}
$ mkdir -p postgresql/data
$ docker run \
-d \
-e POSTGRES_PASSWORD={DB계정비밀번호} \
-e POSTGRES_USER={DB계정이름} \
-p 5432:5432 \
-v /home/{GCP계정이름}/postgresql/data:/var/lib/postgresql/data \
--restart=always \
--name postgres \
postgres:alpine
기본적으로 실행 중이던 PostgreSQL 컨테이너를 삭제하고 세부 옵션을 설정해서 새로운 컨테이너를 생성합니다. PostgreSQL은 필수적으로 POSTGRES_PASSWORD
환경 변수가 필요한데 -e
옵션으로 컨테이너에 환경 변수를 넘겨줄 수 있습니다. 그리고 포트랑 볼륨도 설정해줍니다.
$ psql --host={인스턴스외부IP} --user={DB계정이름}
Password for user {DB계정이름}: {DB계정비밀번호}
로컬 컴퓨터에서 GCP Compute Engine 인스턴스에서 실행 중인 PostgreSQL 서버에 접속해봅니다.
$ docker run \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:rw \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker:/var/lib/docker:ro
--publish 9559:8080 \
--detach \
--restart=always \
--name=cadvisor \
google/cadvisor:latest
Google에서 제공하는 cAdviser를 통해 개별 컨테이너의 실시간 컴퓨터 자원 사용량을 그래프로 볼 수 있습니다. docker.io에서 cAdviser를 도커 이미지로 제공하고 있어서 cAdviser를 컨테이너로 실행할 수 있습니다.
http://{인스턴스외부IP}:9559/containers/docker
docker run
을 통해 cAdviser 컨테이너를 실행한 후 브라우저를 통해 위 주소로 접근하면 각 컨테이너별 메트릭을 확인할 수 있습니다.