로드밸런서는 네트워크 트래픽을 여러 대의 서버에 분산시켜 부하를 균형화하는 역할을 한다. 또한 외부에서 일반적으로는 접속하지 못하는 private subnet 속에 있는 서버로 접속할 수 있게 해주는 역할도 한다.
다양한 로드밸런서가 있으며 이를 통틀어서 ELB라 하고 보통 웹사이트를 운영할 때는 ALB를 사용한다.
우선 로드밸런서를 생성하기 전에 각 서버에서 실행할 패키지를 먼저 설치하자.
web 서버에서는 nginx를 설치할 것이고
was 서버에서는 Tomcat9을 설치할 예정이다.
1. web서버에 nginx 설치
sudo yum -y update
sudo yum -y install nginx
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
2. Was서버에 Tomcat9 설치
해당 과정은 수동으로 설치해야하기 때문에 조금 복잡하다.
# yum 업데이트
sudo yum -y update
# Java 설치 (Tomcat을 사용하려면 Java는 필수)
sudo yum -y install java-1.8.0-openjdk.x86_64
# Tomcat 설치 (기본 yum리포지토리에 없기 때문에 직접 wget으로 다운받는다)
wget https://dlcdn.apache.org/tomcat/tomcat-9/v9.0.73/bin/apache-tomcat-9.0.73.tar.gz
# 압축풀기(압축파일 삭제는 선택)
sudo tar xzf apache-tomcat-9.0.73.tar.gz
sudo rm -rf apache-tomcat-9.0.73.tar.gz
# Tomcat의 위치 쉽게 찾기 위해 최상위 디렉토리로 이동
# 이 부분도 선택이지만 여기서는 최상위 경로에 있다고 가정할 것이다.
sudo mv /home/ec2-user/apache-tomcat-9.0.73/ /
# 톰캣 서비스 실행
sudo sh /apache-tomcat-9.0.73/bin/startup.sh
-----------------------------------------------------------------------------------------
# Tomcat 디렉토리 속에 다양한 파일이 있지만 중요한 건 이 4가지이다.
[root@ip-172-20-2-221 apache-tomcat-9.0.73]# ls
bin : Tomcat 애플리케이션을 시작하거나 종료할 수 있는 sh파일이 있는 장소
webapps : 웹 페이지를 관리하는 장소
lib : MySQL과 연동을 할 때 필요한 Connector를 넣을 장소
conf : 서버에 관한 정보(포트 등)를 수정할 수 있는 파일이 있는 장소
3. Target Group(대상 그룹) 생성
로드밸런서를 만들기 전에 Target Group을 만들어 인스턴스를 넣어둔 후 로드밸런서에서 해당 Target Group에 있는 인스턴스로 HTTP 트래픽을 보내도록 해야 한다.
프로토콜과 포트 부분은 해당 서버로 상태 검사를 하기 위해 요청을 보낼 부분이며 nginx를 사용하는 web Target Group에서는 80번, Tomcat을 사용하는 was Target Group에서는 8080 포트를 지정해 주면 된다.
a. Web Target Group
b. Was Target Group
4. EX-LB(외부 로드밸런서) 생성
5. IN-LB(내부 로드밸런서) 생성
6. 결과 확인
각 타겟그룹 - 대상 탭에서 상태 확인이 healthy가 뜨면 제데로 구성한 것이다.
외부 로드밸런서의 DNS로 접속을 하면 EX-LB(외부 로드밸런서)와 연결된 web서버로 접속이 된다.
IN-LB(내부 로드밸런서)는 안쪽에 놓았기 때문에 바깥에서는 확인을 못하고 web서버에서 curl명령어로 확인 가능하다
# Web 서버에서
# curl [IN-LB DNS주소]:8080
curl internal-IN-LB-abcdefgh.ap-northeast-3.elb.amazonaws.com:8080
'AWS > 3tier Architecture' 카테고리의 다른 글
[AWS] AWS 3tier Architecture 구성 7. 오토스케일링 (0) | 2023.04.26 |
---|---|
[AWS] AWS 3tier Architecture 구성 5. RDS서버 생성 (0) | 2023.04.25 |
[AWS] AWS 3tier Architecture 구성 4. 인스턴스 생성 (32) | 2023.04.25 |
[AWS] AWS 3tier Architecture 구성 3. 보안그룹 (8) | 2023.04.23 |
[AWS] AWS 3tier Architecture 구성 2. 게이트웨이 & 라우팅 설정 (0) | 2023.04.23 |