로드밸런서의 주요 기능은 서버 부하 분산, 즉 로드밸런싱으로 특정 서버에 부하가 몰리지 않도록 적절히 분산을 시킵니다.
로드밸런서가 사용자의 접근을 적당한 서버로 보내주는 역할을 합니다.
Application Layer: 사용자가 UI로 접하는 응용 프로그램과 관련된 계층으로 HTTP, FTP, DHCP, SMTP, DNS등이 있습니다.
Transport Layer: 송신자와 수신자의 논리적 연결을 담당하는 부분으로, 신뢰성있는 연결을 유지할 수 있도록 도와줍니다. 즉 endpoint(사용자)간의 연결을 생성하고 데이터를 얼마나 보냈고 받았는지, 제대로 받았는 지등을 확인합니다. TCP와 UDP가 대표적입니다.
Ubuntu Server 20.04 LTS (HVM), SSD Volume Type 선택
t2.micro 선택
나머지는 기본 설정 그대로!
해당 인스턴스 마우크 오른쪽 클릭 후 연결 선택 - 다음페이지도 연결 선택
이 화면이 나온다면 연결 성공!
sudo apt update
sudo apt install apache2 php
위의 코드 입력 후 잘 연결되었는지 확인을 위해 해당 인스턴스의 퍼블릭 IP주소를 입력해 접속해봅니다.
Ubuntu Default Page가 나온다면 연결 성공!
sudo vim /var/www/html/index.php
위 코드로 파일을 하나 생성합니다.
<?php
print($_SERVER['SERVER_ADDR']);
?>
파일(index.php) 안에 위 코드를 입력하면 현재 우리가 실행하고 있는 웹페이지가 어떤 내부 IP를 가지고 있는지를 출력합니다.
해당 인스턴스의 퍼블릭 IP주소/index.php를 입력해서 인스턴스의 프라이빗 IPv4주소가 출력되면 연결 성공!
이 인스턴스 하나로 서비스를 하다가 부족하다고 느끼면 로드밸런서를 웹서버 앞에두고 부하를 분산시킬 수 있습니다.
트래픽들이 들어오게 되면 그 트래픽을 Load Balancer가 모두 받고 각각의 인스턴스로 보내게 됩니다.
서로 같은 속성을 가지고 있는 인스턴스들을 그룹핑하는 Target Group을 만들고 그들을 Load Balancer에 등록해 Target Group을 대상으로 트래픽을 보내주게 됩니다.
메뉴에서 로드 밸런싱 밑에 대상 그룹 클릭
다음 선택 후 해당 인스턴스를 체크하고 '아래에 보류 중인 것으로 포함'클릭 후 '대상 그룹 생성' 선택하면 해당 인스턴스를 대상 그룹에 등록 완료!
메뉴에서 로드 밸런싱 밑에 대상 로드밸런서 클릭
Application Load Balancer 생성
해당 로드 밸런서의 DNS이름:81로 접속하면 Ubuntu Default Page가 나옵니다. DNS이름:81/index.php를 입력한 후 인스턴스의 프라이빗 IPv4주소가 출력되면 ELB에 인스턴스 연결 완료!
-> 현재는 하나의 인스턴스만 연결된 상태 - 오히려 속도가 느려진다.
기존 인스턴스의 이미지 생성(이름만 적고 생성 누르기)
메뉴 - 이미지 - AMI를 선택하면 방금 생성한 이미지를 볼 수 있습니다.
해당 이미지 마우스 오른쪽 클릭 후 시작하기 클릭 후 아까 처음 인스턴스 생성과 똑같은 조건의 인스턴스를 생성해줍니다.
로드밸런스에 연결되어있는 대상 그룹 TG에 해당 인스턴스를 추가해줍니다.
대상 등록을 선택해 방금 생성한 인스턴스를 등록합니다.
=> 인스턴스 2개가 TG라는 그룹을 통해서 ELB에 연결됩니다.
해당 로드 밸런서의 DNS이름:81/index.php로 접속후 새로고침을 하면 로드밸런서가 들어오는 트래픽을 연결되어 있는 인스턴스들에게 분산하고 있는 것을 볼 수 있습니다.
참고자료
https://nesoy.github.io/articles/2018-06/Load-Balancer
https://junghyungil.tistory.com/151
https://www.youtube.com/watch?v=s9FHdj6jd_U&t=790s