기타/Redmine on AWS 13

[Redmine on AWS] AutoScailing

AutoScailing 애플리케이션의 로드를 처리할 수 있는 EC2 인스턴스 개수를 유지한다. AutoScailing Group이라고 하는 EC2 인스턴스 모음에 최소 인스턴스 개수와 최대 인스턴스 개수를 지정하여, 그룹의 크기가 지정된 인스턴수 개수의 범위를 벗어나지 않도록 조정한다. 크기가 줄어들거나 커지는 규칙은 조정 정책에 따라 결정된다. 예로 들어 AutoScailing Group에 인스턴스 최소 개수를 1개, 최대 개수를 4개, 원하는 개수를 2개로 설정하는 경우, 기본적으로 AutoScailing Group은 2개의 인스턴스를 유지한다. 그리고 부하에 따라 최소 1개부터 4개까지 인스턴스 개수가 조정될 수 있다. 서비스의 고가용성을 유지하기 위해 Web Server와 WAS에 AutoScai..

[Redmine on AWS] S3/CloudFront 연동

CloudFront는 정적, 동적 컨텐츠 요청에 빠르게 응답하기 위한 캐시 기능을 제공하는 CDN(컨텐츠 전송 네트워크) 서비스다. 엣지 로케이션, 리전 별 엣지 캐시로 구성된 네트워크를 통해 컨텐츠 사본을 최종 사용자에게 가깝게 캐싱하여, 사용자와 가장 가까운 엣지 로케이션에서 요청이 처리되도록 보장한다. 캐시 지원으로 S3에 직접 접근하지 않을 수 있으므로, S3 비용을 절감하면서 빠른 응답을 지원할 수 있다. 따라서 이번 글에서는 S3와 CloudFront를 연동하고자 한다. 각 설정의 상세 설명은 https://victorydntmd.tistory.com/335 를 참고하는 것을 추천한다. 잘 정리되어 있다. 방법 1. AWS 콘솔에서 CloudFront 서비스 접근 2. CloudFront 배포..

[Redmine on AWS] S3 Bucket 생성 및 Redmine S3 플러그인 설치

지난 2022.04.02 - [Redmine on AWS] NLB 생성 글까지 진행해서 문제가 없다면, Redmine이 동작하는 것을 확인할 수 있다. S3는 AWS 스토리지 서비스로 모든 종류의 데이터를 저장할 수 있는 key 기반의 객체 스토리지이다. 이번 글에서는 Redmine에 업로드한 파일을 저장하기 위한 S3 Bucket을 생성하고, Redmine S3 플러그인을 설치하고자 한다. 참고로 공식 플러그인은 아니다. Redmine에 업로드한 파일은 기본적으로 Redmine이 동작하는 WAS 인스턴스 내에 저장된다. 하나의 WAS 인스턴스가 동작한다면 별다른 문제가 없겠지만, 이 글에서는 로드 밸런서가 2개 이상의 WAS 인스턴스에 트래픽을 분산시키면서 동작하기 때문에 모든 WAS가 동일하게 파일에..

[Redmine on AWS] NLB 생성

웹 서버에서 WAS로 트래픽을 라우팅 할 수 있도록 NLB를 생성하려고 한다. NLB는 3000 포트로 트래픽을 수신받아 WAS의 3000 포트로 라우팅 하도록 하려고 한다. 생성 방법 1. EC2 서비스의 왼쪽 메뉴바에서 로드 밸런서를 클릭한다. 2. 로드 밸런서 생성 버튼을 클릭한다. 3. Network Load Balancer를 선택한다. 4. NLB 생성을 위한 구성 정보를 설정한다 4-1) 기본 구성 VPC 내부에서 동작하기 때문에 내부 체계를 선택한다. 4-2) 네트워크 NLB가 위치할 VPC, AZ, 서브넷을 선택한다. 4-3) 리스너 및 라우팅 TCP 3000포트로 수신받은 트래픽을 대상 그룹으로 전달하도록 한다. 필요시 대상 그룹을 생성한다. ALB 대상 그룹과 동일하게 인스턴스 유형을 ..

[Redmine on AWS] WAS

이번 글에서는 WAS를 생성할 것이다. WAS의 OS도 Ubuntu 18.04 LTS이며, Redmine과 Redmine을 실행할 Phusion Passenger 설치가 필요하다. EC2 인스턴스를 생성하는 것 자체는 2022.02.24 - [Redmine on AWS] Bastion Host 생성과 동일하므로 이 글에서는 생략한다. 생성이 완료되었다면, 보안 그룹에 아웃바운드 규칙을 추가한다. 대상은 MySQL에 적용된 SG로 하고, 포트는 3306으로 설정한다. Redmine은 Ruby를 사용할 수 있는 대부분의 OS 환경에서 사용할 수 있다. 조금 더 정확하게는 Ruby on Rails 프레임워크로 구축된 웹 애플리케이션이다. 그리고 Phusion Passenger는 Ruby on Rails 프레임..

[Redmine on AWS] Database 생성 및 설정

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) 생성 방식 및 엔진 옵션 생성 방식은 표준 생성으로 진행할 것이다. 엔진..

[Redmine on AWS] ALB 생성

생성한 웹 서버로 접근하기 위해 ALB를 생성하고자 한다. 웹 서버 오토 스케일링 등은 테스트 비용 문제로 서비스 동작을 확인한 뒤에 설정할 것이다. 생성 방법 1. EC2 서비스의 왼쪽 메뉴바에서 로드 밸런서를 클릭한다. 2. 로드 밸런서 생성 버튼을 클릭한다. 3. Application Load Balancer를 선택한다. 4. ALB 생성을 위한 구성 정보를 적절하게 설정한다. 4-1) 기본 구성 인터넷을 통해 AWS 네트워크 외부에서 접근하므로 인터넷 경계를 선택한다. 4-2) 네트워크 ALB가 위치할 VPC와 AZ, 그리고 서브넷을 선택한다. 이 글에서는 ap-northeast-2a, ap-northeast-2c AZ의 public subnet에 위치한다. 4-3) 보안 그룹 ALB를 통해 80..

[Redmine on AWS] Web Server

아주 오랜만에 글을 마저 작성한다. 이번 글에서는 웹 서버를 생성할 것이다. OS는 Ubuntu 18.04 LTS를 사용하며, nginx를 웹 서버로 사용할 것이다. EC2 인스턴스를 생성하는 것 자체는 2022.02.24 - [Redmine on AWS] Bastion Host 생성와 동일하므로 이 글에서는 생략한다. Nginx 설치 패키지 설치가 필요하므로 root 권한이 필요하다. 저장소 업데이트 apt update nginx 설치 apt install nginx Nginx 서비스 활성화 서버가 재부팅할 때 nginx도 함께 동작을 시작할 수 있도록 한다. # nginx 실행 systemctl start nginx # nginx 서비스 활성화 systemctl enable nginx 웹 서버 오토 ..

[Redmine on AWS] Bastion Host 생성

Subnet, IGW, NAT GW 등 기본적인 VPC 구성이 완료되었으므로, 이제부터는 EC2를 구성해나갈 것이다. 이번 글에서는 Public Subnet에 위치할 Bastion Host를 생성할 것이다. Bastion Host 네트워크 내외간의 게이트웨이 역할로, 네트워크 내부를 직접 접속하는 것을 방지하기 위해 네트워크 앞단에 위치하고 있다. Bastion Host는 외부 접속이 필요하므로 Public Subnet에 EC2로 생성할 것이며, 접속을 위한 Public IP 할당이 필요하다. 생성 방법 1. AWS EC2 서비스 접근 > 인스턴스 시작 버튼 클릭 2. 사용할 AMI를 선택한다. 프리 티어를 사용하고 있다면 프리 티어를 지원하는 AMI 중에 선택해야 한다. 참고로 AWS Linux 2 A..

[Redmine on AWS] NAT Gateway 생성

NAT Gateway NAT(Network Address Translation)은 패킷의 IP, Port 등을 변환하는 기술을 뜻하며, 주로 Private Network가 외부의 Public Network와 통신하기 위해 사용된다. 인스턴스의 펌웨어나 업데이트를 위한 outbound 트래픽을 허용하기 위함으로, NAT 게이트웨이는 Private Subnet에서 외부로 요청하는 아웃바운드 트래픽을 받아 인터넷 게이트웨이로 연결한다. AWS에서 NAT를 사용하는 방법에는 두 가지가 존재한다. NAT Gateway : AWS VPC 내 NAT Gateway 사용 NAT Instance : EC2 인스턴스를 NAT용으로 생성하여 사용 NAT Gateway가 NAT Instance보다 고가용성을 보장하기 때문에 ..

1 2