[6주차] AWS - Elastic Load Balancer 사용하기
로드 밸런서는 리소스에 부하를 분산시켜주는 역할을 한다.
여러 대의 컴퓨터가 있을 때, 하나의 컴퓨터에만 부하를 주는 것이 아니라, 여러 대의 컴퓨터가 균등한 부하를 받도록 만들어 준다.
로드 밸런서는 오토 스케일링과 함께 사용하면 효과적인데, 이 방법은 나중에 알아보고 일단은 로드 밸런서를 사용하는 방법에 대해서 알아보자.
ELB를 사용하기 위해서는 해야 할 것이 많다.
차근차근 하나씩 해보자.
1. VPC를 만드는 것부터 시작한다.
CIDR 블록은 10.0.0.0/16으로 하자.
이렇게 지정하면, 뒤의 .0.0/의 범위로 vpc가 생성된다.
2. 그리고 서브넷을 만들어준다.
생성시 VPC는 아까 만든 VPC 하위에 만들어주고
서브넷은 두 개를 만드는데, 하나는 ap-northeast-2a에 다른 하나는 ap-northeast-2c에 만들어준다.
(가용 영역은 어디에 만들어도 상관은 없는데, ec2에서 t2-micro를 생성할 수 있는 곳으로 골라야 해서 두 개를 골랐다.)
아까 VPC는 앞의 두 CIDR에서 앞의 16비트를 고정해줬으니, 그 다음 자리를 1, 2로 서브넷에 지정해주고 마지막 자리는 남겨두자.
(subnet1 - 10.0.1.0/24, subnet2 - 10.0.2.0/24)
3. 인터넷 게이트웨이 생성
인터넷 게이트웨이를 만들고, VPC에 붙여준다.
이제 라우팅 테이블을 생성한다.
그리고 라우팅 편집에서 아까 만든 인터넷 게이트웨이를 추가시켜준다.
그리고 서브넷도 연결시켜준다.
4. 보안 그룹도 만들어준다.
5. EC2를 만들어준다.
이때 VPC와 서브넷 설정을 잘 해주어야한다.
아까 만든 보안 그룹도 연결한다.
그리고 Elastic IP도 연결한다.
6. 이제 git bash로 ec2에 접속하고, Web Server, PHP Server를 설치한다.
https://seob.tistory.com/entry/5%EC%A3%BC%EC%B0%A8-AWS-LAMP-WebServer-%EB%A7%8C%EB%93%A4%EA%B8%B0
위의 글을 참고한다.
7. /var/www/html에서 php script 작성 및 테스트
<?php echo "Hello! My IP Address is: ".$_SERVER['SERVER_ADDR']; ?>
위와 같은 코드로 php 파일을 작성하고, 퍼블릭 ip로 들어가 확인한다.
확인 전에 httpd를 켜 두어야 한다.
EC2의 ip가 보인다.
우리는 서브넷 1의 CIDR 설정을 10.0.1.0/24로 두었기 때문에, 마지막 부분에만 임의적으로 주소를 받았다.
8. Subnet1에 EBS 붙여주기
AMI 이미지를 만들기 전에 EBS 볼륨을 EC2에 붙여준다.
9.. AMI를 이용하여 똑같은 EC2를 subnet2에도 만들어 준다.
AMI를 이용하지 않으면 방금 php, httpd를 설치하는 과정을 또 해야 한다.
AMI는 현재 EC2의 상태를 똑같이 복사하고 이것으로 EC2를 만들 때 사용한다.
AMI를 이용하여 EC2를 만들면 똑같이 사용할 수 있는 EC2가 손쉽게 생성되는 것이다.
EC2를 만들어보자.
VPC와 Subnet을 잘 설정한다.
그래야 Subnet1과는 다른 AZ에 EC2가 생긴다.
10. Elastic IP를 Subnet2 EC2에 연결
이때 재연결을 허용한다.
11. 로드 밸런서 연결
이제 vpc내의 subnet1과 subnet2를 로드 밸런서와 연결시킨다. (왜 이 페이지는 영어로 나올까?)
Application Load Balancer 선택 후
Internet-facing 선택
우리가 만든 VPC와 subnet1, 2를 선택
vpc와 subnet을 만들고, ec2를 만들 때 사용한 보안 그룹을 선택
target 그룹을 안 만들었으므로 create target group으로 간다.
인스턴스 선택
VPC는 우리가 만들었던 VPC 선택
헬스체크에서 더 필요한 옵션이 있다면 들어가서 설정한다.
(상태가 좋다고 판단하기 위한 code 200 반환 횟수, 상태가 좋지 못하다고 판단하기 위한 체크 실패 횟수, 제한 시간, 확인 주기 등)
subnet1과 subnet2의 ec2를 target group으로 넣어준다.
완료 후 로드밸런서의 Listners and Routing을 새로고침 하면
우리가 방금 만든 target이 있다.
선택하고 로드밸런서를 생성하면 된다.
12. 그렇다면 이제 로드밸런서가 어떻게 부하를 분산시켜주는지 확인해보자.
DNS 이름/myip.php를 사용하여 ip가 subnet1과 2를 번갈아 나오는지 확인하자.
번갈아 나온다면 로드 밸런서가 subnet1과 subnet2에 들어간 부하를 분산시켜준다는 의미이다.
끝....
(꽤 기네....DNS 주소 말고 Elastic IP로 myip.php를 불러와서 왜 로드밸런서가 안될까 고민하느라 좀 오래걸렸다.....)