본문 바로가기
Cloud AWS, Azure, GCP

AWS 인프라 구축 실습 8회 - ELB의 ALB, HTTPS

by SB리치퍼슨 2021. 11. 22.

AWS 인프라 구축 실습 8회 - ELB의 ALB, HTTPS


이번 시간에 실습할 내용은 Application Load Balancing과 HTTPS입니다.
다음에는 ALB에서 Auto Scaling을 연동해서 실습해 보겠습니다.

준비사항 및 실습과정
1. Route53 도메인 : 
  alb.edbae.shop/Fashion/ -> Fashion 인스턴스로 포워드
  alb.edbae.shop/sales/ -> Sales 인스턴스로 포워드
2. ACM(인증서) 
3. VPC "new-vpc"
4. subnet "퍼블릭서브넷2a", "퍼블릭서브넷2c"
5. 보안그룹 : "new-SG-ALB" <- 생성중 할당
6. 대상그룹 : "new-TG" <- 생성중 할당
7. EC2 인스턴스 2개 (웹서버) 'Web Server Fashion', 'Web Server Sales'




ALB(Application Load Balancer) 특징
  - 경로기반 라우팅
  - 라운드로빈 / 최저접속 방식 지원


1. Route53


도메인 관리 사이트에서 등록된 도메인 sbrich.shop을 Route53 의 호스팅영역에 등록합니다.
Route53 > 대시보드 > 호스트영역생성 클릭
'sbrich.shop' 도메인을 입력하고 생성을 클릭합니다.
호스트영역 세부정보를 복사하고 4개의 네임서버 정보를 도메인 관리 사이트의 sbrich.shop 도메인의 네임서버로 등록합니다.

ns-864.awsdns-44.net
ns-444.awsdns-55.com
ns-1104.awsdns-10.org
ns-1859.awsdns-40.co.uk

 


2. ACM(AWS Certification Management)


AWS 인증관리 메뉴에서 SSL/TLS 인증서를 관리합니다. 이 과정을 완료하면 HTTPS로 접속이 가능합니다.
ACM 메뉴로 이동합니다.
인증서 프로비저닝을 시작합니다.

'공인 인증서 요청'을 선택하고 '인증서 요청'을 클릭합니다.
다음으로 인증서 요청의 5단계를 시작합니다.

1단계: 도메인 이름 추가
  도메인관리사이트에서 등록한 도메인이름을 기입하고 다음을 클릭합니다.

2단계: 검증 방법 선택
DNS 검증을 선택하고 다음을 클릭합니다.


3단계: 태그 추가
  태그는 생략합니다.


4단계: 검토 및 요청
  확인 및 요청을 클릭합니다.


5단계: 검증
  "검증보류" 표시중입니다. 

위의 도메인 좌측 펼치기 아이콘을 클릭하여 'Route53 레코드 생성'을 클릭합니다.

Route53에서 레코드생성 대화윈도우가 표시됩니다. 생성을 클릭합니다.

CNAME 기록을 추가하여 인증서를 발급합니다. 검증상태가 "발급완료"가 되면 인증서 완료 절차가 성공적으로 완료됩니다.

시간이 잠시 흐르니 검증상태가 '성공'으로 변경되었습니다.

인증서관리자에서는 다음과 같이 표시되고 있습니다.

 


3. VPC

  이전 실습에서 생성한 'new-vpc'를 사용합니다. 
AWS 인프라 구축 실습 5회 - RDS
https://sbrich.tistory.com/7610

 

AWS 인프라 구축 실습 5회 - RDS

AWS 인프라 구축 실습 5회 - RDS 이번 회차에서는 AWS의 관리형 데이터베이스 RDS설정에 관하여 실습을 해보겠습니다. RDS만 설정하면 실제로 어떻게 사용되는지 모르기 때문에, 어디에 어떻게 사용

sb.pe.kr


4. Subnet 


  이전 실습에서 생성한 '퍼블릭서브넷2a', '퍼블릭서브넷2c' 를 사용합니다.
  VPC는 'new-vpc'를 선택합니다.


5. EC2 


'web 01'과 'web 02'로 
2 개의 웹서버를 만들어 둡니다.

EC2 메뉴 > 인스턴스 시작(생성)을 클릭합니다.
AMI : Amazon Linux 2 AMI
유형 : t2.micro
구성 : 네트워크 'new-vpc' / 서브넷 '퍼블릭서브넷2a' / 퍼블릭IP자동활성화 '활성화' / 사용자데이터 'httpd웹서버설치' / tag name 'web01' / 보안그룹 'new-SG-WEB', SSH(anywhere), HTTP(anywhere) / 키페어
(이 웹서버를 https://alb.sbrich.shop/fashion/ 으로 하겠습니다)

EC2 메뉴 > 인스턴스 시작(생성)을 클릭합니다.
AMI : Ubuntu server 18.04 LTS
유형 : t2.micro
구성 : 네트워크 'new-vpc' / 서브넷 '퍼블릭서브넷2c' / 퍼블릭IP자동활성화 '활성화' / 사용자데이터 'apache2웹서버설치' / tag name 'web02' / 보안그룹 'new-SG-WEB', SSH(anywhere), HTTP(anywhere) / 키페어
(이 웹서버를 https://alb.sbrich.shop/sales/ 으로 하겠습니다)

두 웹서버가 제대로 생성되었는지 퍼블릭 IP로 접속하여 확인해 봅니다.


6.  레코드생성

Route53으로 이동하여 sbrich.shop 에대하여 web01, web02에 대한 레코드를 생성합니다.
web01 에 대하여 레코드를 생성하겠습니다.

레코드 이름은 'web01', 값은 EC2 퍼블릭ip '3.36.65.125'를 입력하고 레코드 생성을 클릭합니다.

web02에 대해서도 동일하게 레코드 생성을 해줍니다.
이제 web01, web02에 대하여 도메인이 생성되었습니다.

 


6. Target Group


EC2 > 대상그룹 메뉴로 이동하여 대상그룹을 생성을 시작합니다.
이름 'new-TG' 입력, vpc 'new-vpc'를 선택하고 생성합니다.

생성결과입니다.


이제 대상그룹의 행을 선택하고 대상탭을 선택 후 편집을 클릭합니다.

가용영역의 대상 중 인스턴스 web01, web02를 선택하고 '등록된 항목에 추가'를 클릭합니다. 그리고 나서, 저장을 클릭합니다.

이제 대상그룹 등록이 완료되었습니다.



7. Security Group


ALB에서 사용할 보안그룹을 생성합니다. 
이름 'new-SG-ALB'를 입력하고 VPC 'new-vpc'를 선택합니다. 인바운드 규칙은 https(anywhere)를 선택합니다.

 


8. ELB > ALB

EC2 > Load Balancer (로드 밸런서) 메뉴로 이동하여 로드밸런서 생성을 클릭합니다.
유형선택에서 'Application Load Balancer'를 클릭합니다.

1단계 로드밸런서구성을 설정합니다.
이름 : ELB-ALB
체계 : 인터넷경계
IP주소유형 : IPv4
리스너 : HTTPS


vpc : new-vpc
가용영역 : 퍼블릭서브넷2a, 퍼블릭서브넷2c

보안설정구성으로 이동합니다.
2단계 보안설정구성에서는 기본인증서(앞서 생성한 ACM을 선택)와 보안정책(기본)을선택합니다. 다음 보안그룹구성으로 이동합니다.


3단계 보안그룹구성에서는
vpc(new-vpc)내에서 앞서 생성한 보안그룹(new-SG-ALB)을 선택합니다.

다음 라우팅 그룹으로 이동합니다
4 단계 라우팅구성을 설정합니다.
대상그룹은 앞서 생성한 대상그룹(new-TG)을 선택합니다.

다음 5단계 대상등록을 확인합니다.
대상그룹에 등록된 대상이 표시됩니다.

다음 검토로 이동한 후에 설정한 내용을 확인합니다. 이상이 없다면 생성을 클릭합니다.

로드밸런서 프로비저닝에 수분에서 수십분이 필요할 수 있습니다.
로드밸런서의 상태가 'healthy'상태가 되어야 완료가 됩니다.

 


9. 로드밸런서 도메인생성


Route53에서 호스팅영역 sbrich.shop 에서 레코드생성을 합니다.
이름 : alb
레코드유형 : A
별칭(엔드포인트) : Application/Classic Load Balancer > 서울리전 > dual-stack.elb-alb....
레코드 생성을 합니다. 웹 url https://alb.sbrich.shop 을 접속해서 작업이 완료되었는지 확인합니다.

접속결과는 round-robin 방식으로 접속됩니다. 즉, 한 번씩 교차접속을 합니다.

위와 같이 표시됩니다. 위사이트는 HTTPS로 접속되었다는 것을 확인할 수 있습니다.

 


10. 경로기준 로드밸런싱


하나의 웹서버에서 경로를 생성해서 접속 할 수도 있지만 web01과 web02에 별도로 하위 경로를 등록해서 접속해 보도록 해보겠습니다.
EC2 인스턴스 web01 에 서브패스 fashion 을 생성하고 

EC2 인스턴스 web02에 서브패스 sales 를 생성합니다.

각 웹서버의 서브경로로 접속해서 설정이 제대로 되었는지 확인해 봅니다.

 


11. 대상그룹 생성

EC2 > 로드밸런서 > 대상그룹 메뉴에서
대상그룹 fashion 생성
프로토콜은 http, vpc는 new-vpc, 경로는 /fashion 으로 설정하고 생성합니다.

대상그룹의 편집 대상으로 이동하여 인스턴스를 등록하여 저장합니다.


대상그룹 sales 생성
프로토콜 http, vpc는 new-vpc, 경로는 /sales 으로 설정하고 생성합니다.

대상그룹의 편집 대상으로 이동하여 인스턴스를 등록하여 저장합니다.


생성된 결과입니다.

 


10. 리스너탭 규칙 등록


EC2 > ELB > ALB 메뉴에서 등록한 'ELB-ALB'를 선택한 후 리스너탭을 선택합니다.

리스너 추가를 클릭합니다. 프로토콜은 HTTP로 두고 기본작업은 전달대상을 추가합니다.

전달대상에는 앞서 등록한 대상그룹 'new-tg-fashion', 'new-tg-sales'를 추가하여 리스너를 추가합니다.

이제 작업결과를 확인해보겠습니다.

fashion 경로의 웹서버

sales 경로의 웹서버

경로기반의 로드밸런싱 ALB, HTTPS 가 적용되었습니다.
다만, alb 접속시 web01, web02를 round-robin방식으로 접속하기 때문에 양쪽 서버에 /fashion, /sales 를 설정해주어야 합니다.



대상 그룹(Target Group)이란

  -   로드 밸런서로 들어오는 트래픽을 전송할 위치를 정의
  -   기본적으로 로드 밸런서는 대상 그룹에 대해 지정한 프로토콜과 포트 번호를 사용하여 등록된 대상으로 요청을 전송
  -   로드 밸런서에서 대상 그룹의 대상으로 트래픽을 라우팅하려면 리스너 또는 리스너에 대한 규칙 생성 시 작업에 대상 그룹을 지정

---

AWS 인프라 구축 실습 8회 - ELB의 ALB, HTTPS를 마치고 다음 AutoScaling과정으로 넘어갑니다.
S3, EFS, CloudFront, ECR, ECS, EKS를 차례대로 실습해 보겠습니다.

 

 

반응형

댓글