[AWS] Load Balancer & Route53 & CloudFront

남영민·2021년 11월 7일
0

AWS의 Load Balancer 서비스를 활용하여 부하를 분산하고, Route53 서비스를 활용하여 특정 도메인 이름에 연결하는 방법을 정리하겠습니다.

우선, 로드밸런서를 생성하기 전에 대상그룹을 생성합니다.
대상 그룹에서는 연결할 ec2, 포트번호, http protocol version 등을 선택하여 줍니다.

다음으로 로드밸런서를 생성하여 대상그룹과 연결해줍니다. 부하를 분산처리 하는 방식으로는 경로를 통한 방식, http 헤더를 통한 방식, 소스 ip를 통한 방식 등 여러가지가 있습니다. 아래는 url 경로를 활용하여 부하를 분산한 방식의 예시입니다.

보안을 위해서 https로 접근하고자 한다면, AWS Certificate Manager로 인증서를 생성하여 Load Balancer와 연결해주어야 합니다. Certificate Manager로 인증서를 생성 한 후에 아래와 같이 Load Balancer 리스너에 HTTPS 프로토콜을 추가하고, 인증서를 불러옵니다.

Route53을 활용하여 도메인 이름을 만들고 등록할 수 있습니다.
단계는 아래와 같습니다.

Route53 > 등록된 도메인 > 도메인 등록(aws 서비스를 활용하지 않고 도메인 이름을 만들기도 가능하나 호스팅 영역에 등록시 유형과 값/트래핑 라우팅 대상 등을 직접 설정해주어야 함) > 호스팅 영역 > 레코드 생성(동일 aws 계정에서 만든 ec2나 로드밸런서 등에 연결할 경우 별칭을 사용하여 간단히 연결 가능)

Route53 -> Cloud Front -> Load Balancer 순서로 연결하여 Cloud Front를 캐시서버로 사용이 가능합니다.

Cloud Front 생성은 아래와 같이 합니다.
원본 도메인에 연결할 Load Balancer를 선택합니다.

설정의 대체 도메인 이름에는 Route53에서 생성한 도메인을 넣어주고, https를 사용하기 위해서는 AWS Certificate Manager에서 생성된 인증서를 연결합니다.

캐시와 관련해서는 아래 선택되어 있는 선택지는 이전 aws 버전의 선택지입니다.
TTL은 origin 데이터가 변경되었을 때, 언제 cache server에 반영할지 입니다. default ttl을 기준으로 반영이 되나(default ttl을 10초로 설정해주면, origin의 데이터가 변경되고 10초후 cache server에 변경사항이 반영) php와 같이 코드에 ttl 값을 넣어준 경우 min ttl, max ttl 값의 사이에 해당 값이 들어있을 경우 코드의 ttl값, 이외에는 min, max ttl의 값을 반영하게 됩니다.

Route53에서는 Load Balancer에 대한 별칭 대신 CloudFront 배포에 대한 별칭을 선택하여 연결해 줍니다.

s3의 접근 권한을 퍼블릭으로 열지 않은 상태로, 이미지를 호스팅 할 때도 cloudfront를 사용할 수 있습니다.

  • 원본 도메인에 이미지를 호스팅할 s3 주소를 지정합니다.
  • 원본 이름에 test.nym-service.com과 같이 route53에 등록할 도메인을 지정해줍니다.
  • cors를 방지하기 위해 s3 origin을 선택해줍니다.
  • 대체 도메인 이름에 항목추가를 하여 위에서 입력한 원본 이름(test.nym-service.com)과 동일한 값을 입력해줍니다.
  • ssl 인증을 추가해줍니다.

Route53에서는 CloudFront 배포에 대한 별칭을 선택하여 test.nym-service.com 도메인을 등록합니다.

profile
성장하는 개발자

0개의 댓글