Elastic Load Balancing은 로드 밸런서의 역할을 하는 AWS 서비스이다. 클라이언트의 요청을 직접 받고 로드 밸런서가 관리하는 서버들에게 요청을 골고루 전달해주는 역할을 한다.
Target Group(대상 그룹)은 로드 밸런서가 요청을 전달할 서버들을 묶어둔 개념적인 그룹이다. 이 대상 그룹 내에는 인스턴스나 Auto Scaling 그룹이 포함될 수 있다. 로드 밸런서가 요청을 보낼 인스턴스들을 더 쉽게 관리하기 위해 만든 기능이라고 보면 된다.
Auto Scaling 그룹을 이용해 여러 대로 띄운 서버들을 대상으로 클라이언트의 요청을 전달할 수 있는 환경을 만들어본다.
EC2 서비스의 로드밸런싱 -> 로드밸런서 메뉴를 선택한 뒤 로드 밸런서 생성 버튼을 클릭한다.
로드 밸런서 유형을 선택하는 화면이 나타난다. 일반적인 HTTP, HTTPS 요청을 받으려고 하므로 Application Load Balancer를 클릭한다.
로드 밸런서 설정 구성 화면이 나타날 것이다.
이름, 리스너, 가용 영역 지정 후 다음:보안 설정 구성으로 넘어간다.
클릭하면 경고창이 나타나지만 무시한다.
보안그룹을 생성 또는 선택하는데 기존에 만들어놓은 보안그룹을 선택한다.
이 보안 그룹 인바운드 규칙으로는
이렇게 구성하였다.
4단계:라우팅 구성은 로드 밸런서가 클라이언트로부터 받은 요청을 전달할 대상 그룹을 지정하는 화면이다. 현재 생성해둔 대상 그룹이 없기 때문에 대상 그룹을 생성해야 한다.
5단계 : 대상 등록은 생성한 대상 그룹에서 관리할 인스턴스를 추가할 수 있는 화면이다.
앞서 생성한 Auto Scaling 그룹에서 생성된 인스턴스 한 대가 보일 것이다. 인스턴스를 직접 추가할 수 있지만 Auto Scaling 그룹 자체를 대상 그룹에 등록해서 새로운 인스턴스들이 실행될 때마다 자동으로 대상 그룹에 등록되게 할 것이므로 바로 다음:검토를 클릭한다.
검토 화면을 확인하고 생성 버튼을 누른다.
생성 된 것을 볼 수 있다.
이제 생성한 로드 밸런서의 대상 그룹에 Auto scaling 그룹을 추가할 것이다.
AUTO SCALING - Auto Scaling Groups 메뉴를 클릭하여 기존에 만든 그룹을 클릭한 뒤 세부 정보 탭에서 로드 밸런싱 편집 버튼을 클릭한다.
애플리케이션 또는 Network Load Balancer 대상 그룹 을 체크하고 만들어놓은 target-group을 지정한다.
잘 적용된 것을 볼 수 있다.
이제 구성된 다중 서버 환경이 제대로 동작하는지 확인하기 위해 로드 밸런서에 요청을 날릴 것이다.
로드 밸런싱 -> 로드 밸런서 메뉴를 클릭한 뒤 만든 로드밸런서를 클릭한다.
해당 DNS 주소로 접속을 해보면
접속은 되는 것을 볼 수 있다. 인스턴스 안에서 아무런 구성도 하지 않았기 때문에 502 Error가 뜨는 것이다.
확인을 위해서 EC2 인스턴스에 nginx를 설치해보고 작동시켜본다.
# sudo apt-get install nginx
# sudo service nginx start
# sudo service nginx status
작동 중인 것을 볼 수 있다.
이제 다시 로드밸런서 DNS 주소로 접속을 해보면
잘 구성된 것을 확인할 수 있다.
구성도는 간단하게 이렇다고 볼 수 있다.