배경
On-Premise에 운영 라이센스를 구입해 운영중이던 Oracle을 AWS 환경으로 그대로 가져올 경우가 있습니다. 이런 경우 Oracle 라이센스를 AWS에서 그대로 사용할 수 있는데(BYOL: Bring Your Own License) 이 경우 EC2 환경에서 설치해야 했습니다. AWS에서는 기존에 사용하던 라이센스를 AWS가 Managed 해주는 RDS 환경에서 사용할 수 있도록 RDS Custom for Oracle(Custom Engine Version)을 지난 2021년 10월 처음으로 선보였습니다. 하지만 좀처럼 서울 리전에서는 해당 기능을 사용할 수 없었는데요, 2022년 12월 21일을 기준으로 마침내 서울리전에서도 RDS Custom for Oracle 버전을 사용할 수 있게 되었습니다. 이번 포스팅에서는 RDS Custom for ORACLE을 설치하는 것을 알아 보도록 하겠습니다.
전체 진행 과정 간략히 알아보기
RDS Custom for ORACLE을 설치 하기 위해서는 RDS Custome Engine으로 이미지를 생성할 오리지널 Oracle Image가 필요합니다. (2023년 7월 현재 RDS Custom을 지원하는 ORACLE 버전은 Oracle 19c, Oracle 18c, Oracle 12.2, Oracle 12.1 4개 버전입니다. 최근 12.x 버전에 대한 RDS 지원이 끝나기 때문에 많은 분들이 RDS Custom으로 12.x 버전을 계속해서 사용하고 싶어하십니다.)
또한 AWS에서 모든 RDS가 사용하는 Data Storage는 암호화가 되어야 되기 때문에 AWS의 KMS 대칭형 암호 생성이 필요합니다.
설치할 Oracle Custom 설치 이미지와, KMS 대칭형 키 생성이 완료 되었다면 아래 이미지와 같은 순서로 RDS 설치를 위한 Oracle 설치 이미지를 AWS 내에 등록하는 것이 필요합니다.
- RDS Custom으로 설치할 오라클 이미지 파일을 임의의 S3 버킷에 업로드 합니다.
- 업로드된 오라클 사용자 버전 이미지를 기반으로 RDS 설치에 필요한 이미지를 만듭니다.(AWS에서는 이를 CEV:Customer Engine Version)이라고 합니다.)
- 생성된 CEV:Customer Engine Version를 기반으로 RDS를 VPC내 Subnet에 생성합니다.
사전 준비
대칭 암호화 AWS KMS 키 생성 또는 재사용
RDS의 스토리지는 암호화 되어야 합니다. AWS에서는 암호화를 위해 KMS 키를 내부적으로 사용하기 때문에 RDS Custom for ORACLE을 사용하기 위해서는 설치전에 대칭키 방식의 암호화 키가 KMS로 생성되어 있어야 합니다.(기존에 만들어 놓은 것이 있다면 해당 키를 사용하시면 됩니다.)
Oracle Installration Image 준비
앞서 언급했듯이 RDS Custom for Oracle 설치를 위해서는 RDS를 설치하기 위한 Oracle 설치 Image가 필요합니다. 이 포스트에서는 해당 이미지를 가정하기 위해 Oracle 공식 홈페이지에서 Oracle 19c Enterprise Edition을 다운로드 받도록 하겠습니다.
여기를 클릭해서 Oracle 19c Enterprise Edition을 찾아 아래와 같은 버전 형태를 다운로드 받도록 합니다.
다운로드가 완료되었으면 AWS의 S3 메뉴로 들어가 Unique한 이름의 S3 Bucket을 만들고(이름만 유니크한 이름을 입력하고 나머지 옵션은 기본으로 설정하시면 됩니다.) 방금 다운 받은 zip 파일(이 예제에서는 LINUX_X64_193000_db_home.zip)을 업로드 합니다.
모든 것이 완료되면 아래 화면 처럼 보입니다.
RDS Custom for ORACLE 설치를 위한 IAM 권한 생성
또한 RDS 인스턴스를 설치하기 위해서는 IAM 권한이 있어야 합니다. 따라서 적절한 IAM 역할과 인스턴스 프로파일 생성이 필요합니다. 이 역할과 프로파일은 AWS의 공식 메뉴얼을 참조해 수동으로 작성할 수 있으나 이 포스트에서는 미리 만들어진 CloudFormation 파일을 이용해 자동으로 IAM 권한을 생성하도록 합니다. 여기를 클릭해서 IAM 권한 생성을 위한 CloudFormation 파일(custom-oracle-iam.json)을 다운로드 받도록 합니다.
다운받은 파일을 AWS CloudFormation 콘솔에서 업로드 해서 IAM 권한을 생성하시기 바랍니다.
RDS Custom for ORACLE 설치를 위한 VPC 인프라와 VPC Endpoint 생성
RDS Custom for ORACLE 설치를 위해서는 2개 이상의 Private Subnet이 있는 VPC 인프라가 필요합니다. 또한 RDS Custom이 통신할 수 있도록 다음과 같은 AWS 서비스에 대한 VPC Endpoint를 생성하는 것이 필요합니다.
- Amazon CloudWatch
- Amazon CloudWatch Logs
- Amazon CloudWatch Events
- Amazon EC2
- Amazon EventBridge
- Amazon S3
- AWS Secrets Manager
- AWS System Manager
VPC 인프라와 VPC Endpoint는 수동으로 설치를 할 수 있지만 이 포스팅에서는 미리 만들어진 CloudFormation 파일을 통해 자동으로 생성하는 방식으로 알아보도록 하겠습니다.
여기를 클릭해서 VPC Infra 생성을 위한 CloudFormation 파일을 다운로드 받고 여기를 클릭해서 VPC Endpoint를 생성하는 CloudFormation 파일을 다운로드 받기 바랍니다.
다운로드를 완료했으면 AWS의 CloudFormation 콘솔로 이동후 먼저 다운로드 받은 파일(codebuild-vpc-infra.yaml)을 이용해 VPC Infra 생성을 위한 CloudFormation Stack을 생성합니다.
Stack name은 CloudFormation stack name이며 아래 EnviromentName이 만들고자 하는 VPC 이름입니다. 원하는 VPC이름을 입력하며 VpcCIDR와 Private Subnet CIDR 값을 모두 입력합니다. 이 VPC는 2개의 Private Subnet과 2개의 Public Subnet을 포함하고 있습니다.
다음 화면의 Configure stack options는 기본값으로 설정한 후 Next 버튼을 클릭한 후 생성될 자원을 Review 한 후 Submit 버튼을 클릭해 VPC를 생성하도록 합니다.
이제 생성한 VPC에 앞서 RDS Custom for ORACLE에서 필요한 8개의 Endpoint를 생성하도록 하겠습니다.
역시 앞서 다운로드 받았던 VPC Endpoint를 생성해주는 CloudFormation 파일(codebuild-vpc-endpoints.yaml)을 이용해 VPC Endpoint를 생성해 보도록 하겠습니다.
Cloudformation 콘솔에서 Create stack 버튼을 클릭해 새로운 stack을 생성하도록 합니다. Upload a Template을 클릭해 다운 받은 endpoint 생성용 cloudformation 파일을 업로드 하도록 합니다.
Stack details 창에서 먼저 PrivateVpc 콤보박스에서 앞서 생성한 VPC를 선택해 줍니다. 그리고 PrivateVpc 콤보박스에서 VPC에 할당된 2개의 Private Subnet을 아래 그림과 같이 찾아 선택해 줍니다.
그리고 Parameters에서 SecurityGroupId는 VPC-Infra 생성시 만들어진 '[생성한VPC이름]Private Security Group' 이란 이름의 Security Group ID를 아래 그림과 같이 찾아 복사해 와서 붙여 넣기 합니다.(이때 웹 브라우저에서 새 브라우저 열기 등을 통해 새 창이나 탭을 실행시켜서 VPC 메뉴를 찾아 들어가 기존에 입력한 값이 유실되지 않도록 주의합니다.)
마찬가지로 Parameters의 Route Table ID 값도 VPC 콘솔의 Route Table 메뉴를 찾아 앞서 VPC-Infra 를 생성할 때 자동으로 생성된 '[생성한VPC이름] Private Routes' 이란 이름의 Route Table을 찾아 그 ID 값을 복사해 와서 붙여 넣기 하도록 합니다.
모두 찾아서 입력해서 아래와 같이 되도록 합니다.
이제 Next를 클릭해 다음으로 갑니다. 다음 단계인 Configure stack option에서는 별도로 설정하는 것 없이 Next 버튼을 클릭하고 마지막으로 Review를 한 다음 Submit 버튼을 클릭해 리소스 생성을 완료해 주십시오.
이제 사전 준비가 완료되었습니다.
RDS Custom Engine Version 생성
AWS 관리자 콘솔에서 Amazon RDS 서비스를 찾아 들어갑니다. 왼쪽 메뉴에서 'Custom engine versions' 메뉴를 찾아 클릭합니다.
여기서는 앞서 S3 버킷에 업로드한 ORACLE 설치 이미지(zip형태)를 이용해 RDS 설치에 필요한 Customer Version의 RDS 이미지를 만들도록 할 예정입니다.
아래 이미지 처럼 "Create database" 버튼을 클릭해서 RDS Custom Engine Version을 생성 시작합니다.
Engien typ은 Oracle을 선택합니다. Mutitenant architecture는 선택하지 않습니다. 마지막으로 Engine Version은 Oracle 19c를 선택합니다.
Version detail에 다운 받은 버전의 이름을 알아 볼 수 있도록 가급적 상세하게 기입합니다.(아래 예 참조)
Installation media는 업로드한 Oracle Installation Images를 이용할 예정이기 때문에 S3 location of manifest files의 'Browse S3'를 클릭해서 압서 등록한 S3 Bucket을 선택하도록 합니다.
다음으로 CEV manifest를 작성해 주어야 하는데 우리가 설치하는 오라클 설치 이미지는 오라클 공식 홈페이지에서 다운 받은 파일이고 별도의 패치 파일이 포함되어 있지 않기 때문에 예시로 제시된 manifest 파일을 아래와 같이 단순하게 수정하도록 할 예정입니다. 아래와 같이 S3에 올라간 파일 이름을 databaseInstallationFileNames에 입력하고 나머지는 수정하도록 합니다.
마지막으로 AWS KMS key 란에 사전 준비 단계에서 만들었던 KMS 키를 선택하도록 합니다.
모든 것이 완료 되었으면 'Create custom engine version' 버튼을 클릭해 Custom Engine Version의 RDS 설치 이미지를 생성하도록 합니다. 생성은 최대 2시간 정도까지 소요될 수 있습니다.
모든 생성이 완료되면 상태가 Creating 에서 'Available'로 변경
이제 RDS Oracle for Custom Edtion Version 준비가 완료되었습니다.
RDS Custom for ORACLE 설치
이제 RDS Custom for ORACLE 설치를 위한 모든 준비가 완료되었습니다. AWS 콘솔에서 RDS 콘솔을 찾아 들어 갑니다.
아래의 그림 처럼 'Create database' 버튼을 찾아 클릭합니다.
데이터베이스는 Standard create를 선택하시고 Engine options에서는 Oracle을 선택합니다.
다음으로 Database management type에서 Amazon RDS custom을 선택합니다.(아래 이미지에서 Amazon RDS(Unavailable)은 제 계정의 특수한 경우이니 무시하시기 바랍니다.) Architecture settings에서 Multienant architecture는 선택 해제합니다. 그리고 아래 그림처럼 Custom engine version에서는 앞서 생성한 CEV:Customer Engine Version의 Oracle 버전을 선택합니다.
DB Instance 명은 임의로 입력하시고 admin 계정과 패스워드를 입력하시기 바랍니다.
DB Instance class 스토리지는 원하는 크기와 사이즈를 입력합니다. 이 포스팅에서는 Instance class로 db.m5.xlarge와 스트로지는 gp2 타입으로 1TB(1024GByte)를 입력했습니다.
RDS가 설치되는 네트워크 환경은 앞서 CloudFormation으로 생성한 VPC 환경을 선택합니다. 또한 DB Sunbet Group은 rds-custom-private 를 선택합니다. VPC Security group은 새로 생성을 하며 임의의 이름을 입력하도록 합니다. 아래 이미지를 참고하도록 합니다.
다음은 RDS Custom security 영역입니다.IAM Instance Profile은 앞서 Cloudformation으로 자동 생성한 IAM 권한을 선택합니다.
AWSRDSCustomInstanceProfile-[region] 이란 이름으로 생성되어 있습니다. 또한 AWS KMS key에서는 앞서 생성한 KMS 대칭형 암호키를 선택해 주시면 됩니다. 아래 이미지를 참고해 주세요.
이제 모든 설정이 완료되었습니다. 'Create database' 버튼을 클릭해 RDS Custom for ORACLE을 설치하시면 됩니다. 생성까지는 최대 2시간의 시간이 소요될 수 있습니다.
모든 설정이 정상적이라면 아래와 같이 우리가 생성한 RDS Custom for ORACLE 인스턴스의 Status가 Available 상태로 표시되는 것을 보실 수 있습니다.
이제 RDS Instance를 클릭해 내부 설정 정보를 확인하도록 합니다.
이제 모든 설치가 완료되었습니다.
RDS Custom for ORACLE에 접속할 수 있는 서브넷에 ORACLE Client등을 설치하고 ORACLE에 접속해 보도록 합니다.
RDS 접속용 Endpoint는 위 그림의 Connectivity & security 탭에서 참조하실 수 있습니다.
필자의 경우 오라클이 설치된 VPC내에 별도의 Private Subnet을 만든 다음 Windows 서버를 설치하고 라우팅과 보안(1521번 포트)을 셋팅한 다음 SQLDeveloper를 다운로드 받아 SQL Developer로 접속을 했습니다. 이때 Username과 Password는 앞서 Oracle 설치시 입력했던 아이디와 패스워드를 입력하도록 합니다. (Windows 서버의 경우 윈도우 방화벽에서 Inbound/Outbound 설정에서 Oracle 서버의 Port를 열어주어야 합니다.) 아래 그림 참고
로그인 후 쿼리를 통해 RDS Custom for ORACLE이 정상적으로 설치되었는지 확인해 보도록 합니다.(아래 그림의 테이블은 테스트를 위해 만들어 놓은 테이블 입니다.)
이번 포스팅은 여기까지입니다.
감사합니다.
'Cloud Service > AWS' 카테고리의 다른 글
Bastion 없이 Private Subnet의 EC2에 접속해보자! (5) | 2023.06.07 |
---|---|
AWS DynamoDB Spring Boot CRUD 예제 (1) | 2023.01.11 |
개인 PC에 DynamoDB를 설치해 테스트 해보자 (0) | 2023.01.04 |
VPC 간의 연결 방식- VPC Peering, VGW, DGW, TGW 비교 (0) | 2022.03.01 |
Route 53과 ALB 연동 (0) | 2022.02.03 |