안녕하세요. J4J입니다.
이번 포스팅은 ALB 사용하는 방법에 대해 적어보는 시간을 가져보려고 합니다.
ALB란?
ALB는 Application Load Balancer라는 뜻으로 어플리케이션에서 사용되는 여러 대의 서버들의 트래픽을 분산시켜주는 역할을 수행합니다.
정말 단순한 서비스라고 한다면 한 대의 서버만 scale-up하여 사용해도 문제없이 운영할 수 있습니다.
하지만 사용자의 접속이 많고 그에 따라 트래픽이 방대하게 증가하게 되면 한 대의 서버를 계속해서 scale-up을 하는 것은 점점 더 많은 비용 발생과, 트래픽 처리를 위해서도 좋지 않은 방향입니다.
그렇기 때문에 트래픽 처리를 하나의 서버가 모두 부담하지 않고 여러 대의 서버들을 생성하여 분산시키는 scale-out 방식을 많이 채택합니다.
ALB는 위와 같이 scale-out을 할때 유용하게 사용될 수 있습니다.
ALB를 설정하게 되면 사용자의 모든 요청을 우선 ALB가 전달받게 하고 ALB는 어떤 요청이 왔는지를 구분하여 각 요청에 맞는 서버들에게 사용자의 요청을 뿌려줄 수 있습니다.
또한 이때 가중치를 부여하여 어느 서버에 더 많은 요청을 보낼지에 대해서도 설정할 수 있습니다.
그리고 ALB 또 다른 단순한 측면에서 웹 서버의 역할을 해줄 수도 있습니다.
ALB만 DMZ에 노출되어 위와 동일하게 사용자의 요청을 전달받고 서버에 뿌려주게 됩니다.
그렇기 때문에 scale-out을 하지 않더라도 nginx, apache 등의 웹 서버 역할로써도 사용될 수 있습니다.
부가적으로 ALB를 사용하게 되면 SSL을 AWS로부터 무료로 제공받아 사용할 수 있습니다.
따로 SSL을 관리할 필요가 없어지기 때문에 SSL을 따로 구매하고, 설정하는 등의 귀찮음을 덜어주기도 합니다.
SSL 인증서 발급 방법
ALB 설정하는 방법에 앞서 먼저 AWS에서 SSL 인증서 발급받는 방법에 대해서 먼저 보도록 하겠습니다.
SSL 인증서 발급이 필요없는 분들은 해당 부분은 스킵하셔도 됩니다.
[ 1. Certificate Manager 접속 ]
[ 2. 인증서 요청 ]
[ 3. 인증서 유형 선택 ]
퍼블릭 인증서 요청을 선택한 뒤 다음을 눌러주시면 됩니다.
[ 4. 도메인 이름 입력 및 검증 방법 선택 ]
여기서는 구매한 도메인 이름을 입력해주시면 됩니다.
만약 서브 도메인을 사용하실 예정이라면 *.{ 도메인 명 }과 같은 형태로 도메인 이름을 추가하여 모든 서브 도메인에서도 사용될 수 있도록 설정해주시면 됩니다.
검증 방법은 DNS 검증을 선택해주시고, 모든 정보 입력이 끝났다면 요청 버튼을 클릭하면 됩니다.
[ 5. Route 53 레코드 생성 ]
요청이 완료되었다면 다음과 같은 인증서 목록을 확인할 수 있습니다.
인증서 아이디를 클릭해주시면 다음과 같은 화면이 보이는데 여기서 Route 53에서 레코드 생성 버튼을 클릭해주시면 됩니다.
그러면 아래와 같은 화면이 보이는데 Route 53에 도메인이 있다면 레코드 생성 버튼을 눌러주시면 됩니다.
[ 6. 인증서 상태 변경 확인 ]
레코드 생성을 마친 뒤 저 같은 경우는 5분정도의 시간이 지나니 다음과 같이 인증서 상태가 변경되었습니다.
ALB 설정 방법
[ 1. 신규 보안 그룹 생성 ]
ALB의 역할에 맞는 보안 그룹을 먼저 하나 생성해줍니다.
저는 80, 443포트가 ALB에 접근할 수 있어야 하기 때문에 아래와 같이 보안 그룹을 생성해줬습니다.
[ 2. EC2 가용 영역 확인 ]
ALB 설정에 참고하기 위해 ALB가 사용될 EC2의 가용 영역을 확인해줍니다.
[ 3. 로드 밸런서 접속 ]
[ 4. 로드 밸런서 생성 ]
[ 5. 로드 밸런서 타입 선택 ]
AWS에서 제공해주는 로드 밸런서는 ALB 말고도 NLB, GWLB 등이 추가로 있습니다.
ALB만 있는것이 아니라는 것만 참고해주시고, ALB의 Create 버튼을 클릭해주시면 됩니다.
[ 6. 기본 설정 ]
기본 설정은 다음과 같이 설정해줬습니다.
[ 7. 네트워크 매핑 ]
네트워크 매핑은 위에서 확인했던 EC2의 가용 영역을 포함시켜서 최소 2개를 선택해주시면 됩니다.
[ 8. 보안그룹 설정 ]
보안 그룹은 위에서 생성해놨던 보안 그룹으로 변경해주시면 됩니다.
[ 9. 리스너 설정 ]
리스너 설정은 먼저 가운데에 있는 Create target group을 눌러줍니다.
저 같은 경우 target group을 web/was별로 각각 모두 만들어 줬습니다.
web target group에 대해서만 예시를 들겠습니다.
먼저 기본 설정은 아래와 같이 했습니다. (was도 name 제외하곤 모두 동일)
그리고 Health checks도 아래와 같이 하고 Next를 눌러줍니다. (was도 동일)
제가 설정해둔 서버에서는 web이 동작되는 포트는 8088입니다.
그렇기 때문에 target을 아래와 같이 등록해줬습니다.
was 쪽도 동일하게 동작되는 포트를 각각 등록해줬습니다.
모든 target group 생성이 완료되었다면 리스너 하나를 더 추가해서 443 포트도 등록을 해주고 80과 443 둘 다 default값으로 web target group을 선택해줍니다. (필수는 아닙니다.)
그리고 SSL 설정도 같이 이루어지기 때문에 아래쪽에는 위에서 만들어둔 ACM을 선택해줍니다.
[ 10. 80포트 리디렉트 설정 ]
위의 모든 설정이 완료되었다면 로드 밸런서를 생성해줍니다.
그리고 생성한 로드 밸런서를 선택한 뒤 리스너 탭에서 80 포트에 규칙 보기/편집을 클릭해줍니다.
클릭한 뒤에는 아래와 같이 도메인을 호스트로 하여 해당 호스트는 443 포트로 리디렉트 되도록 규칙을 추가해줍니다.
[ 11. 443포트 규칙 설정 ]
이번엔 443포트443 포트 규칙 설정을 위해 443 포트 규칙 보기/편집을 클릭해줍니다.
이곳에서는 서버가 접근되기 원하는 규칙을 자유롭게 만들어서 생성해주시면 됩니다.
저는 기본 도메인으로 요청이 넘어올 경우 web target group에 설정해둔 값으로 전달받도록 다음과 같이 설정하겠습니다.
[ 12. Route 53 레코드 생성 ]
규칙을 모두 적용했다면 Route 53으로 넘어가서 등록한 도메인으로 사용자 요청이 넘어올 경우 ALB가 모든 요청을 처리할 수 있도록 설정하겠습니다.
Route 53에서 도메인을 선택한 뒤 레코드 생성 버튼을 클릭해줍니다.
레코드 유형은 A, 별칭을 사용하도록 설정한 뒤 다음과 같이 지금까지 설정해온 ALB를 등록해주면 됩니다.
사용될 서브 도메인이 있다면 동일한 방식으로 레코드 이름만 달리하여 추가 생성해주시면 됩니다.
[ 13. EC2 보안그룹 생성 ]
마지막으로 EC2 보안그룹을 생성하도록 하겠습니다.
다음과 같이 EC2에서 사용될 포트들의 인바운드 허용을 모두 ALB 보안 그룹으로 해주시면 됩니다.
그리고 생성한 보안그룹을 EC2에 적용해주시면 됩니다.
테스트
모든 설정을 완료하고 URL에 접속을 해보겠습니다.
그러면 다음과 같이 SSL까지 잘 적용되는 모습을 확인할 수 있습니다.
이상으로 ALB 사용하는 방법에 대해 간단하게 알아보는 시간이었습니다.
읽어주셔서 감사합니다.
'Infra, Cloud > AWS' 카테고리의 다른 글
[AWS] CloudWatch의 경보를 Slack으로 전달받기 (0) | 2022.10.22 |
---|---|
[AWS] JMeter를 이용하여 EC2 부하 테스트하기 (6) | 2022.10.19 |
[AWS] Cafe24 도메인 AWS EC2에 연결하기 (Feat. Route53) (0) | 2022.07.18 |
[AWS] 이미지 저장을 위한 S3 버킷 생성하기 (0) | 2022.04.17 |
[AWS] RDS로 MySQL 사용 환경 구성 (0) | 2022.04.06 |
댓글