- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
부하 분산과 고가용성을 제공하는 ELB
이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30
EC2 인스턴스에 웹 서버 실행하기
'12.3.1 EC2와 CloudFront 연동하기'를 참조하여 ELB 로드 밸런서에 연결한 EC2 인스턴스 2개에 Node.js와 express 모듈을 설치합니다. EC2 인스턴스 2개 모두 ExampleServer 디렉터리를 생성하고, 이 디렉터리 안에 다음과 같이 작성한 뒤 app.js로 저장합니다.
var express = require('express');
var app = express();
app.get(['/', '/index.html'], function (req, res) {
res.send('Hello ELB 1'); // 두 번째 EC2 인스턴스에서는 Hello ELB 2
});
app.listen(80);
두 EC2 인스턴스에서 다음 명령을 입력하여 각각 Node.js 서버를 실행합니다.
[ec2-user@ip-172-31-21-171 ExampleServer]$ sudo node app.js
ELB 로드 밸런서 목록(NETWORK & SECURITY → Load Balancers)에서 ELB 로드 밸런서(exampleelb)를 선택하고, 아래 Instances 탭을 클릭합니다.
ELB 로드 밸런서에 연결된 EC2 인스턴스 목록이 나오는데 Status를 보면 OutOfServices라고 표시되어 있습니다. OurOfService는 EC2 인스턴스(웹 서버)가 중단되어 트래픽을 받을 수 없는 상태입니다.
5분 정도 기다리면 Status가 InService로 바뀝니다. 이제 트래픽을 받을 수 있는 상태가 되었습니다. 앞에서 헬스 체크 설정을 할 때 Health Check Interval이 30초, Healthy Threshold가 10번으로 설정했기 때문에 30초 x 10번 = 300초(5분)입니다.
이제 Description 탭을 클릭합니다. DNS Name 부분에 ELB 로드 밸런서의 URL이 표시됩니다.
웹 브라우저를 실행하고 ELB 로드 밸런서의 URL에 접속합니다. Hello ELB 1 또는 Hello ELB 2가 표시될 것입니다. 이 URL을 계속 새로고침해보면 Hello ELB 1과 Hello ELB 2로 계속 바뀝니다. ELB 로드 밸런서가 라운드 로빈 알고리즘으로 매번 다른 EC2 인스턴스에 연결해주기 때문입니다.
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.