WAS를 생성하기 전에 먼저 Redmine에서 사용할 Database를 먼저 생성한다. Database는 AWS RDS로 생성하며, 고가용성을 위해 Multi-AZ 기능을 활성화할 것이다. 데이터베이스 엔진은 MySQL 5.7.21을 사용한다.
생성 방법
1. AWS 콘솔에서 RDS 서비스로 접속한다.
2. 서브넷 그룹 생성
서브넷 그룹은 RDS에 사용할 수 있는 서브넷과 IP 범위를 정의한다.
메뉴바에서 서브넷 그룹으로 접근하여 DB 서브넷 그룹 생성 버튼을 클릭한다.
RDS가 사용할 VPC, AZ, Subnet 정보를 지정한다.
3. 데이터베이스 생성
메뉴바에서 데이터베이스로 접근하여 데이터베이스 생성 버튼을 클릭한다.
3-1) 생성 방식 및 엔진 옵션
생성 방식은 표준 생성으로 진행할 것이다. 엔진은 계획했던 MySQL 5.7.21 버전을 선택한다.
참고로 작성일 기준 오래된 버전이라 선택할 수 있는 RDS 타입에 제한이 있는 것으로 보인다. 필요시 적절하게 버전을 업그레이드하자.
3-2) 템플릿 및 설정
템플릿은 고가용성 및 성능 보장을 위해 프로덕션을 선택했다. 프리 티어의 경우 Multi-AZ 사용이 불가능해 선택이 불가능했던 걸로 기억한다.
자격 증명 설정에서는 DB 관리를 위한 마스터 사용자 이름과 암호를 설정한다.
3-3) 인스턴스 유형 선택
테스트 환경 구성이므로 최대한 저렴한 인스턴스를 선택했다. 참고로 이전 세대 클래스 포함을 비활성화하면 3세대부터 사용하도록 되어 있다.
인스턴스 유형은 요구 스펙에 맞게 선택한다.
3-4) 스토리지
기본값으로 설정했다.
3-5) 가용성 및 내구성
고가용성을 보장할 수 있도록 다중 AZ 배포를 설정한다. 불필요시에는 비활성화할 수 있다.
3-6) 연결
RDS가 위치할 VPC와 서브넷 그룹을 선택한다.
이 글에서 RDS는 VPC 외부에서 접근할 필요가 없다. VPC 내 인스턴스를 통해서만 접근할 수 있도록 퍼블릭 액세스 기능은 비활성화한다. (워크벤치 등을 사용한다면 VPC 외부에서도 접근이 필요하다.)
보안 그룹은 일단 bastion 호스트의 접근을 허용하도록 한다. WAS 생성 이후에 WAS 접근 허용 규칙도 추가해야 한다.
MySQL로 접근할 때 사용하는 포트 변경이 필요한 경우, 적절하게 변경하도록 한다. 기본값은 3306이다.
3-7) 그 외 구성 확인
기본값으로 설정했다.
추가 구성 부분에서는 RDS 파라미터 그룹, 백업, 암호화, 모니터링 관련된 부분들을 설정할 수 있다.
필요한 부분을 전부 설정했으면 데이터베이스 생성 버튼을 클릭한다.
4. 접속
보안 그룹을 통해 bastion 호스트로부터의 트래픽을 허용해두었다. bastion 호스트에 mysql-client를 설치한 후 접속 명령을 이용해 접속할 수 있다.
접속할 호스트는 RDS 엔드포인트 주소로 지정한다.
# mysql cli 설치
yum install mysql # CentOS/Linux2
apt install mysql-client # Ubuntu
# 접속 : mysql -u 계정 -p -h Host주소
mysql -u admin -p -h <RDS_ENDPOINT>
mysql -u admin -p -h <RDS_ENDPOINT>:<PORT>
엔드포인트 확인 방법
5. 데이터베이스 설정
redmine이 사용할 데이터베이스와 사용자를 생성한다. 필요한 권한도 적절하게 부여한다.
# redmine DB 생성
CREATE DATABASE redmine CHARACTER SET utf8mb4;
# redmine 사용자 생성
CREATE USER 'redmine'@'localhost' IDENTIFIED BY 'my_password'; #localhost에 접속할 호스트 주소
# redmine 사용자에 권한 부여
GRANT ALL PRIVILEGES ON redmine.* TO 'redmine'@'localhost';