RDS, Docker 등등..

유동헌·2021년 12월 23일
0

오늘은 예전 프로젝트를 가지고 배포 연습을 해보았습니다. 예전 프로젝트여서 어떤 데이터베이스를 사용했었는지 기억은 안나지만.. (팀 프로젝트였기 때문에.. 기본 데이터베이스가 로컬 MySQL로 되어있었음..) RDS로 바꿨고, 다시 한 번 Docker를 사용해 배포를 해보았습니다.

1.

우선 팀원 분 한 분과 함께 공부를 하며 배포를 해보았는데 EC2 환경은 팀원분걸 이용했고 RDS는 제 껄 이용해였습니다. RDS를 만드는 방법은 블로그 검색을 하면 매우 잘 나와있음으로 생략하도록 하고, 살짝 까다로운 부분은 정리를 해봅니다.

2.

django.db.utils.OperationalError: (2003, (timed out)")

오류 전체 문장은 아닙니다. 대충 이런 오류 메세지가 생겨 배포에 애를 먹었지만 Lucky Draw 블로그를 참고해 해결하였습니다. 팀원 분의 EC2와 제 RDS의 간의 연동이 문제였는지, 단순히 RDS의 외부 접속이 막혀있었는지는 아직 잘 모르겠습니다. 결과적으로는 RDS 상의 보안 그룹에 하나를 추가해서 해결하였습니다.

하나는 기본적으로 셋팅되어 있는 default 인바운드 규칙입니다. 프로토콜 : 전체, 유형 : 모든 트래픽, 포트 범위 : 전체 로 되어 있습니다. 이렇게 되어 있으니 저희는 문제가 없다고 판단을 했었는데요, 구글링해보니 보안 규칙 때문에 이런 문제가 발생할 수 있다는 글이 많이 보이더라고요. 그래서 규칙을 다음과 같이 IP버전 : IPv4, 프로토콜 : TCP, 포트 범위 : 3306, 소스 : 0.0.0.0/0 로 만들었더니 바로 해결이 되었습니다! 해당 내용에 대한 이해는 아직 없지만, 해결한 기록을 남기고 나중에 다시 포스팅 해야겠습니다.

3.

RDS를 만드는 과정에서 추가 구성에 있는 데이터베이스 초기 이름이 데이터베이스 셋팅할 때 사용이 되는 것을 확인했습니다. 저희는 실수로 두 개 이름을 다르게 해서 셋팅 과정에서 오류가 발생하는 걸 확인했습니다. 다음부터는 같은 이름을 사용 해야겠습니다.

4.

컨테이너 안으로 들어가는 명령어

sudo docker exec -it [컨테이너 명] /bin/bash

로컬에서 이미지를 만들어 배포를 했습니다. 하지만 쉘에서 자료를 넣어야 할 일이 생겼습니다. 해당 명령어는 이런 경우를 위해 사용이 되는데요, EC2 환경에 접속한 상태로 위 명령어를 입력하면 컨테이너 안으로 접속할 수 있습니다. 이미지 자체는 수정이 불가능하다는 것으로 알고 있어서 자체 파일 수정까지는 허용이 되는지 모르겠습니다. 하지만 데이터베이스 수준에서 쉘로 자료를 생성하는 건 잘 되었습니다.

5.

RDS 실행 명령어

mysql -u admin --host [aimmo-test-db-1.cmsyuoej8t5r.us-east-2.rds.amazonaws.com](http://aimmo-test-db-1.cmsyuoej8t5r.us-east-2.rds.amazonaws.com/) -p

mysql -h [aimmo-test-db-1.cmsyuoej8t5r.us-east-2.rds.amazonaws.com](http://aimmo-test-db-1.cmsyuoej8t5r.us-east-2.rds.amazonaws.com/) -P 3306 -u admin -p

mysql -u -h [aimmo-test-db-1.cmsyuoej8t5r.us-east-2.rds.amazonaws.com](http://aimmo-test-db-1.cmsyuoej8t5r.us-east-2.rds.amazonaws.com/) -P 3306 -u admin -p (안됨)
profile
지뢰찾기 개발자

0개의 댓글