클라우드 공부

AWS 애플리케이션 로드밸런싱 구축하기

jjury 2024. 8. 28. 16:59

클라우드에 대해 공부해보고자 인프런의 "AWS 클라우드 서비스 인프라 구축 이해와 해킹, 보안" 강의를 수강하면서 필기한 내용입니다.

부하 분산 (Elastic Load Balancing)

로드 밸런싱이란?

  • 인스턴스의 상태를 확인하고 데이터를 분산하여 전달하는 네트워크 역할을 수행

로드 밸런싱의 특징

  • 고가용성: 트래픽을 다수의 대상으로 분산하여 고가용성을 유지
  • 상태 확인: 대상 그룹에 대한 keeplive를 통해 주기적으로 상태를 확인
  • 보안 기능: 보안 그룹을 적용하여 보안 옵션을 부여할 수 있음
  • 4계층/7계층 로드밸런싱: HTTP/HTTPS의 계층의 애플리케이션 로드 밸런싱과 TCP/UDP의 4계층 로드 밸런싱을 사용할 수 있음
  • 운영 모니터링: ELB 애플리케이션 성능을 실시간으로 모니터링(Cloud watch)할 수 있음

로드 밸런싱 구축

2개 이상의 네트워크 생성

서브넷 생성

로드 밸런싱 실습을 위해 2개 이상의 네트워크가 존재해야 한다.

주의해야 할 점은 이전에 만들어 둔 subnet_pubilc_DMZ는 가용 영역이 ap-northeast-2a였다면 새로 만든 서브넷은 ap-northeast-2b나 ap-northeast-2c와 같이 다른 가용 영역을 선택해야 한다.

라우팅 테이블 지정

각각의 서브넷에 각각의 인스턴스 생성

이전 게시글을 보면 이미 하나 만들었기 때문에 하나만 만들면 된다.

구분을 위해 인스턴스의 페이지 구성을 다르게 한다.

Public 연결 후 구성

아파치2 설치, 서비스 시작

/var/www/html 디렉터리로 이동

기본적으로 웹페이지는 index.html을 읽기 때문에 기존 index.html 페이지의 이름을 변경

이후 새로운 index.html 파일 생성 (명령어: sudo vi index.html)

vi에서 작성하는 법은 i나 a키를 누르면 작성이 가능하다.

저장하고 나가는 명령어는 우선 쓰기 상태에서 esc로 빠져나와 :wq를 해주면 된다.

이후에 http://제공된 ip를 입력하고 이동하면 된다.

그러나 계속 사이트에 접속할 수 없음이 떴다.

인스턴스 재부팅, 로그 확인 다 해봤는데 방법을 모르겠다가 방법을 찾았다.

오류 해결

이전에 생성한 네트워크 ACL로 설정되어 있어서 그랬던 것이었다.

기본값으로 변경해주면 문제를 해결해 줄 수 있었다.

연결에 성공했다.

Public2 연결 후 구성

마찬가지로 apache2 설치와 실행을 해주고 html 파일을 수정한다.

아마 Public2는 생성할 때 80번 포트를 열어주지 않았을텐데 보안그룹에서 설정해야 한다.

연결 확인

현재 구성 상태는 아래와 같다. (벤지와 쭈리는 우리집 강아지 이름이다.)

로드 밸런싱 설정

ALB 생성

기본 구성 설정

네트워크 매핑 설정

새보안 그룹 설정

리스너 및 라우팅

대상 등록

ALB 생성 확인

대상 그룹에서 세부 정보를 볼 수 있는데 상태 확인 부분이 초록색이 떠야 완료된 것이다. (2~3분 정도 소요)

ALB 동작 확인

해당 DNS를 복사해 URL에 복붙하고 새로고침해보면 계속해서 다른 창이 나오는 것을 볼 수 있다.

이것이 로드밸런서가 한쪽으로 사용자가 모이지 않게 분배하고 있는 것을 확인해볼 수 있는 것이다.

사용하지 않는 인스턴스는 항상 중지할 것!!!

생성한 로드밸런스도 비용이 무서워 삭제하였다 나중에 필요하면 다시 생성하면 되니…