-
[AWS] EC2 Instance LoadbalancerAws 2022. 10. 24. 09:08반응형
AWS EC2 Instance에 Loadbalancer 적용 및 테스트를 진행하는 예제 입니다.
<환경>Instance: Amazon Linux 2
EC2 Instance 2개를 생성해놓은 상태를 전제로 함 ( 설명은 EC2 1개로 진행하지만, 2개에 전부 진행 해줘야 한다.)
Node.js
* 사진은 1개의 EC2 인스턴스를 보여주지만 로드 밸런서에 연결할 2개의 EC2 인스턴스에 동시 적용할 것
📌시작하기
ELB( Elastic Load Balancing ) : 부하 분산과 고가용성을 제공하는 AWS 서비스이다.
- 프리 티어로 진행
- ELB는 한 곳에 집중되는 HTTP, TCP, SSL 트래픽을 여러 EC2 인스턴스로 분산한다. 서버가 가동 중인지 확인 후,
어떤 EC2 인스턴스가 중단 되더라도 트래픽을 정상적인 EC2 인스턴스로만 전송 - ELB는 Resion별로 생성해야 하며, 여러 AZ에서 실행되는 EC2 인스턴스들로 부하 분산이 가능하기 때문에 AZ전체가 중단 되어도 정상적인 서비스 제공 가능
1. EC2 > 로드밸런서 > Load Balancer 생성
2. Classic Load Balancer 유형 선택
3. Load Balancer 정의- Name 설정, Default VPC 사용
4. 보안 그룹 할당- 새 보안 그룹 생성 ( Default Value 사용 )
- Load Balancer 프로토콜을 HTTP로 설정 했기 때문에, 유형도 HTTP 프로토콜로 지정
5. 상태 검사 구성 ( Default Value 사용 )
6. EC2 인스턴스 추가- 기존에 생성한 ELB 연결용 EC2 인스턴스 2개를 연결
7. 검토 후 구성 완료를 누르면 ELB 생성
1. EC2 Instance 접속
ssh ec2-user@[PUBLIC IP ADDRESS]
2. EPEL 레포지토리 설치- Amazon Linux 2
- RHEL 7용 EPEL 릴리스 패키지를 설치하고 EPEL 리포지토리를 활성화
3. Node.js / NPM 패키지 설치sudo yum -y install nodejs npm --enablerepo=epel
4. node, npm 설치 확인
5. Directory 생성 후, Express 모듈 설치6. app.js 파일 생성 후, 소스 작성
- 소스 작성 후, :wq 입력 저장
7. 보안 그룹 인바운드 규칙 편집- 해당 EC2 연결된 보안 그룹의 인바운드 규칙에 app.js 설정한 포트 8080을 추가
8. Node.js 서버 실행
9. Public IP Address 확인 후, 포트 8080로 연결 확인
10. 로드 밸런서 서비스 상태 확인- 현재 서로 다른 가용 영역에 있는 인스턴스 2개가 OutOfService 상태이다.
- Node.js 서버를 가동 후 5분 정도가 지나면 InService상태로 변경 된다.
11. 로드 밸런서 보안 그룹 인바운드 규칙 추가- 8080 포트 규칙 추가
12. 로드 밸런서 상태검사 포트 변경- 기존 80 포트에서 8080포트로 변경
- Ping 경로 /index.html 추가
13. 로드 밸런서 리스너 포트 변경- 8080 포트로 변경
14. URL 접속 후 확인- DNS 이름의 URL 복사
- :8080 포트 붙여서 접속
EC2 두 개가 LoadBalancer에 연결되어 있는 상태를 확인할 수 있다.
URL을 계속 새로고침 하면 두 개의 인스턴스가 섞여서 출력된다.
ELB 로드 밸런서는 라운드 로빈 알고리즘으로 매번 다른 EC2 인스턴스를 연결해주기 때문이다.Reference:
https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-enable-epel/반응형'Aws' 카테고리의 다른 글
[Aws] S3 파일 업로드 확장자 제한 및 에러 페이지 처리 - 웹 취약점 보안 (0) 2024.02.14 [Aws + Spring] Spring Boot + Aws Glue + S3를 활용한 방문자 통계 구축 (3) (2) 2024.01.02 [AWS] EB Deploy Issue (Chrome) (0) 2022.10.24