VM 기반의 웹 서비스 구성
웹, 애플리케이션, 데이터베이스 계층으로 구성된 3-Tier 아키텍처를 카카오클라우드에서 구축합니다.
- 예상 소요 시간: 60분
- 권장 운영 체제: macOS, Ubuntu
- 사전 준비 사항
시나리오 소개
이 시나리오에서는 카카오클라우드 도서관 웹 서비스를 예제로 3-Tier 아키텍처를 구현합니다. 3-Tier 아키텍처는 웹 애플리케이션을 웹, 애플리케이션, 데이터베이스 세 계층으로 분리하는 구성 방식입니다. 각 계층의 역할을 나누면 서비스 확장, 장애 대응, 보안 정책 적용을 더 체계적으로 관리할 수 있습니다.
주요 내용은 다음과 같습니다.
- 웹 호스팅을 위한 3-Tier 아키텍처 구성
- Bastion 호스트를 통한 내부 서버 접속 경로 구성
- 로드 밸런서를 이용한 웹 및 애플리케이션 계층 트래픽 분산
- 카카오클라우드 MySQL 기반 데이터베이스 구성
시나리오 아키텍처
시작하기 전에
사전 작업에서는 3-Tier 웹 서비스에 필요한 네트워크와 VM 리소스를 생성합니다. 먼저 카카오클라우드 네트워크 환경을 구축한 뒤, 웹 서버 인스턴스, 애플리케이션 서버 인스턴스, 내부 서버 접속을 중계할 Bastion 서버 인스턴스를 구성합니다.
1. VPC와 서브넷 설정
컴퓨팅 환경을 구축하려면 먼저 VPC와 서브넷을 준비해야 합니다. 다중 가용 영역에서 NAT 인스턴스를 이용한 네트워크 구축 문서를 참고하여 프라이빗 서브넷의 리소스가 외부와 통신할 수 있는 네트워크 환경을 구성하세요. 이 튜토리얼의 네트워크 설정은 해당 문서에서 정의한 값을 기준으로 합니다.
2. 보안 그룹 설정
-
카카오클라우드 콘솔 > Networking > VPC > 보안 그룹으로 이동합니다.
-
오른쪽의 [보안 그룹 생성] 버튼을 클릭하여 새 보안 그룹을 생성합니다.
보안 그룹: tutorial-bastion-sg
-
보안 그룹 이름과 설명을 아래와 같이 입력합니다.
이름 설명(선택) tutorial-bastion-sg Bastion 호스트의 보안 정책 -
하단의 [+ 추가하기] 버튼을 클릭한 뒤 인바운드 조건을 아래와 같이 설정하고 [적용] 버튼을 클릭합니다.
나의 퍼블릭 IP 확인하기다음 버튼을 클릭하면 현재 사용 중인 나의 퍼블릭 IP를 확인할 수 있습니다.
추가할 인바운드 규칙 항목 설정값 bastion inbound policy 1 프로토콜 TCP패킷 출발지 {사용자 퍼블릭 IP}/32포트 번호 10000-10010정책 설명(선택) bastion inbound policy 1 bastion inbound policy 2 프로토콜 TCP패킷 출발지 {사용자 퍼블릭 IP}/32포트 번호 81정책 설명(선택) bastion inbound policy 2 bastion inbound policy 3 프로토콜 TCP패킷 출발지 {사용자 퍼블릭 IP}/32포트 번호 22정책 설명(선택) bastion inbound policy 3
보안 그룹: tutorial-web-sg
-
보안 그룹 이름과 설명을 아래와 같이 입력합니다.
이름 설명(선택) tutorial-web-sg 웹 서버의 보안정책 -
하단의 [+ 추가하기] 버튼을 클릭한 뒤 인바운드 조건을 아래와 같이 설정하고 [적용] 버튼을 클릭합니다.
추가할 인바운드 규칙 항목 설정값 web inbound policy 프로토콜 TCP패킷 출발지 10.0.0.0/20포트 번호 80정책 설명(선택) web inbound
보안 그룹: tutorial-app-sg
-
보안 그룹 이름과 설명을 아래와 같이 입력합니다.
이름 설명(선택) tutorial-app-sg 애플리케이션 서버의 보안정책 -
하단의 [+ 추가하기] 버튼을 클릭한 뒤 인바운드 조건을 아래와 같이 설정하고 [적용] 버튼을 클릭합니다.
추가할 인바운드 규칙 항목 설정값 app inbound policy 프로토콜 TCP패킷 출발지 10.0.32.0/20포트 번호 8080정책 설명(선택) app inbound
보안 그룹: tutorial-mysql-sg
-
보안 그룹 이름과 설명을 아래와 같이 입력합니다.
이름 설명(선택) tutorial-mysql-sg MySQL 노드의 보안정책 -
하단의 [추가] 버튼을 클릭한 뒤 인바운드 조건을 아래와 같이 설정하고 [생성] 버튼을 클릭합니다.
추가할 인바운드 규칙 항목 설정값 MySQL inbound policy 프로토콜 TCP패킷 출발지 10.0.0.0/16포트 번호 3306정책 설명(선택) MySQL inbound
-
3. Bastion 인스턴스 생성
Bastion 호스트는 외부에서 내부 인스턴스로 접속할 때 사용하는 게이트웨이입니다. 내부 서버에 대한 직접 접근을 제한하고, 관리 트래픽을 Bastion 호스트로 집중해 보안 경계를 명확하게 구성합니다.
-
카카오클라우드 콘솔 > Compute > Beyond Compute Service > Virtual Machine 메뉴로 이동합니다.
-
인스턴스 탭에서 [인스턴스 생성] 버튼을 클릭한 후, 다음과 같이 인스턴스를 생성합니다.
구분 항목 설정/입력값 비고 기본 정보 이름 tutorial-bastion 개수 1 이미지 Ubuntu 20.04 인스턴스 유형 m2a.large 볼륨 루트 볼륨 20 키 페어 {USER_KEYPAIR}⚠️ 키 페어는 최초 1회 안전하게 보관해야 합니다.
잃어버린 키는 복구할 수 없으며, 재발급이 필요합니다.네트워크 서브넷 main (10.0.0.0/20) VPC - tutorial 보안 그룹 tutorial-bastion-sg
4. 웹 서버 인스턴스 생성
웹 서비스 구축을 위한 기반을 마련하기 위해, 인스턴스를 생성합니다.
-
카카오클라우드 콘솔 > Compute > Beyond Compute Service > Virtual Machine 메뉴로 이동합니다.
-
인스턴스 탭에서 [인스턴스 생성] 버튼을 클릭한 후, 다음과 같이 인스턴스를 생성합니다.
주의- 키 페어(Key Pair)는 최초 1회 생성하여 잘 저장해두세요. 잃어버린 키는 복구할 수 없습니다.
- 보안 그룹은 앞에서 생성한
tutorial-web-sg를 선택합니다.
구분 항목 설정/입력값 비고 기본 정보 이름 tutorial-web 개수 2 이미지 Ubuntu 20.04 인스턴스 유형 m2a.large 볼륨 루트 볼륨 20 키 페어 {USER_KEYPAIR}위에서 생성 또는 사용한 키 페어를 선택 네트워크 서브넷 {VPC_ID}_sn_2 (10.0.16.0/20)VPC - tutorial 보안 그룹 tutorial-web-sg
5. 애플리케이션 서버 인스턴스 생성
비즈니스 로직이 실행되는 애플리케이션 계층의 기반을 마련하기 위해, 인스턴스를 생성합니다.
-
카카오클라우드 콘솔 > Compute > Beyond Compute Service > Virtual Machine 메뉴로 이동합니다.
-
인스턴스 탭에서 [인스턴스 생성] 버튼을 클릭한 후, 다음과 같이 인스턴스를 생성합니다.
구분 항목 설정/입력값 비고 기본 정보 이름 tutorial-app 개수 2 이미지 Ubuntu 20.04 인스턴스 유형 m2a.large 볼륨 루트 볼륨 20 키 페어 {USER_KEYPAIR}위에서 생성 또는 사용한 키 페어를 선택 네트워크 서브넷 {VPC_ID}_sn_4 (10.0.48.0/20)VPC - tutorial 보안 그룹 tutorial-app-sg
시작하기
본격적인 웹 서비스 구성을 위한 세부 작업은 다음과 같습니다.
Step 1. Bastion 호스트 설정
Bastion 서버는 웹 서버와 애플리케이션 서버의 게이트웨이며, 외부에서 접근할 수 있도록 퍼블릭 IP를 부여해야 합니다.
키 파일 권한 문제로 bad permissions 오류가 발생할 경우, 아래 명령어처럼 키 파일 권한을 400으로 변경한 뒤 다시 접속합니다.
-
Virtual Machine > 인스턴스 탭에서 위에서 생성했던
Bastion인스턴스행을 우클릭하여 컨텍스트 메뉴에서 [퍼블릭 IP 연결] 버튼을 클릭합니다.- 연결된 퍼블릭 IP는 네트워크 탭에서 확인할 수 있습니다.
-
로컬 환경에서 터미널 실행 후,
cd명령어를 사용하여 키 파일을 다운로드받은 폴더로 이동합니다.- 키 파일을 최초 생성해서 사용했다면, 기본적으로 다운로드 폴더에 저장됩니다. (
cd ~/Downloads)
- 키 파일을 최초 생성해서 사용했다면, 기본적으로 다운로드 폴더에 저장됩니다. (
-
다음 명령어를 실행하여 SSH 접근합니다.
chmod 400 ${PRIVATE_KEY}.pem # 읽기 권한 부여
ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP}환경변수 설명 PRIVATE_KEY🖌︎ 키 파일 이름 BASTION_PUBLIC_IP🖌︎ Bastion 인스턴스의 퍼블릭 IP -
Nginx Proxy Manager를 실행하기 위해, 먼저 Bastion 호스트를 구성합니다. 다음의 명령어로 프로비저닝을 수행합니다.
sudo curl -o /tmp/install-bastion.sh https://raw.githubusercontent.com/kakaoenterprise/kakaocloud-tutorials/bastion-host/install-bastion.sh
bash /tmp/install-bastion.shNginx Proxy Manager(NPM)란?Nginx Proxy Manager(NPM)는 Nginx를 기반으로 한 웹 서버를 쉽게 설정하고 관리할 수 있도록 도와주는 오픈소스 프로젝트입니다. 이 도구를 사용하면 사용자는 웹 서버를 효과적으로 구성하고 여러 도메인을 관리할 수 있습니다.
-
사용자 로컬 환경에서 브라우저를 열고, 아래 주소를 입력하여 관리 페이지에 접속합니다.
http://${BASTION_PUBLIC_IP}:81/login
- ID :
admin@example.com - 비밀번호 :
changeme
항목 설명 {BASTION_PUBLIC_IP}Virtual Machine > 인스턴스 메뉴에서 생성해 둔 Bastion인스턴스를 클릭한 뒤 네트워크 탭에서 확인 -
Dashboard > Streams로 이동합니다.
-
다음과 같이 웹 및 애플리케이션 호스트의 정보를 각각 입력합니다.
구분 항목 설정값 tutorial-web-1 Incoming Port 10000Forward Host 생성해 둔 tutorial-web-1인스턴스의 프라이빗 IP
- Virtual Machine > 인스턴스 메뉴에서 생성해 둔tutorial-web-1인스턴스를 클릭한 뒤 네트워크 탭에서 확인Forward Port 22tutorial-web-2 Incoming Port 10001Forward Host 생성해 둔 tutorial-web-2인스턴스의 프라이빗 IP
- Virtual Machine > 인스턴스 메뉴에서 생성해 둔tutorial-web-2인스턴스를 클릭한 뒤 네트워크 탭에서 확인Forward Port 22tutorial-app-1 Incoming Port 10002Forward Host 생성해 둔 tutorial-app-1인스턴스의 프라이빗 IP
- Virtual Machine > 인스턴스 메뉴에서 생성해 둔tutorial-app-1인스턴스를 클릭한 뒤 네트워크 탭에서 확인Forward Port 22tutorial-app-2 Incoming Port 10003Forward Host 생성해 둔 tutorial-app-2인스턴스의 프라이빗 IP
- Virtual Machine > 인스턴스 메뉴에서 생성해 둔tutorial-app-2인스턴스를 클릭한 뒤 네트워크 탭에서 확인Forward Port 22 -
내부 호스트로 들어오는 트래픽은 Bastion을 통해 전달됩니다. 따라서 웹 및 애플리케이션 호스트가 Bastion에서 보낸 트래픽을 받을 수 있도록 보안 그룹을 다음과 같이 설정합니다.
웹 인스턴스
- Virtual Machine > 인스턴스 메뉴로 이동 후, 생성해 둔 웹 인스턴스를 클릭합니다.
- 보안 탭에서 하이퍼링크 처리된 tutorial-web-sg↗️를 클릭한 뒤 [인바운드 규칙 관리] 버튼을 클릭합니다.
- [추가하기] 버튼을 클릭하여, 다음과 같이 인바운드 규칙을 추가하고 [적용] 버튼을 클릭합니다.
주의[적용] 버튼을 클릭하지 않으면 저장되지 않습니다.
구분 항목 설정값 웹 프로토콜 TCP패킷 출발지 {BASTION_PRIVATE_IP}/32
- Virtual Machine > 인스턴스 메뉴에서 생성해 둔Bastion인스턴스를 클릭한 뒤 네트워크 탭에서 확인포트 번호 22정책 설명(선택) 웹 인바운드 정책 애플리케이션 인스턴스
-
Virtual Machine > 인스턴스 메뉴 > 생성해 둔 애플리케이션 인스턴스를 클릭합니다.
-
보안 탭에서 하이퍼링크 처리된 tutorial-app-sg↗️를 클릭한 뒤 [인바운드 규칙 관리] 버튼을 클릭합니다.
-
[추가하기] 버튼을 클릭하여, 다음과 같이 인바운드 규칙을 추가하고 [적용] 버튼을 클릭합니다.
주의[적용] 버튼을 클릭하지 않으면 저장되지 않습니다.
구분 항목 설정값 애플리케이션 프로토콜 TCP패킷 출발지 {BASTION_PRIVATE_IP}/32
- Virtual Machine > 인스턴스 메뉴에서 생성해 둔Bastion인스턴스를 클릭한 뒤 네트워크 탭에서 확인포트 번호 22정책 설명(선택) 애플리케이션 인바운드 정책
-
사용자 로컬 환경에서 각 호스트로 접근이 가능한지 확인합니다. 앞에서 진행한 포워딩 정보를 바탕으로 포트에 맞게 매핑해준 내부 호스트로 연결됩니다. 키 파일이 존재하는 폴더로 이동하여 실행합니다.
# tutorial-web-1
ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10000
# tutorial-web-2
ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10001
# tutorial-app-1
ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10002
# tutorial-app-2
ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10003환경 변수 설명 PRIVATE_KEY🖌︎ 키 파일 이름 BASTION_PUBLIC_IP🖌︎ Bastion 인스턴스의 퍼블릭 IP
Step 2. 관리형 MySQL 데이터베이스 생성
카카오클라우드의 MySQL은 완전 관리형 데이터베이스 서비스로 VPC 환경에서 제공됩니다. 이 서비스를 사용하면 복잡한 설치 과정 없이 콘솔에서 쉽게 MySQL 인스턴스를 프로비저닝할 수 있고, 논리적으로 분리된 네트워크에서 안전하게 사용할 수 있습니다.
-
카카오클라우드 콘솔 > Data Store > MySQL 메뉴로 이동합니다.
-
Instance Group 탭에서 [인스턴스 그룹 생성] 버튼을 클릭한 뒤 다음을 참고하여 인스턴스 그룹을 생성합니다.
구분 항목 설정/입력값 기본 설정 인스턴스 그룹 이름 tutorial-mysql 설명 선택 MySQL 설정 엔진 버전 지정된 값을 사용 MySQL 사용자 이름 admin MySQL 비밀번호 root1234 인스턴스 가용성/개수 단일 (Primary 인스턴스) 인스턴스 유형 m2a.large 스토리지 유형/크기 100 로그 스토리지 유형/크기 100 네트워크 설정 VPC tutorial 서브넷 {VPC_ID}_sn_5 (10.0.64.0/20)보안 그룹 tutorial-mysql-sg자동 백업 자동 백업 옵션 미사용
Step 3. 애플리케이션 서버 생성
애플리케이션 서버는 데이터베이스와 연동해 회원가입, 로그인, 댓글 등 동적 기능을 처리합니다.
-
Nginx Proxy Manager에서 설정한 포트에 맞게 매핑해 둔 인스턴스에 접속합니다.
# tutorial-app-1
ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10002
# tutorial-app-2
ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10003환경 변수 설명 PRIVATE_KEY🖌︎ 키 파일 이름 BASTION_PUBLIC_IP🖌︎ Bastion 인스턴스의 퍼블릭 IP -
예제 프로젝트를 설치합니다.
git clone -b kakaocloud-library https://github.com/kakaoenterprise/kakaocloud-tutorialsDockerfile 변경 사항 (2025년 11월 27일)예제 프로젝트의 Dockerfile(./server/deploy/Dockerfile)은 Eclipse Temurin OpenJDK 이미지로 변경되었습니다.
-
예제 프로젝트가 위치한 폴더로 이동합니다.
cd kakaocloud-tutorials -
예제 프로젝트를 빌드 및 실행하는데 필요한 패키지를 설치합니다.
bash install-requirements.sh -
환경변수를 입력한 뒤, 예제 애플리케이션을 실행합니다.
sudo docker run -it \
-e MYSQL_HOST=${MYSQL_HOST} \
-e DB_USERNAME=${DB_USERNAME} \
-e DB_PASSWORD=${DB_PASSWORD} \
-p 8080:8080 \
--name kakaocloud-library-server -d \
$(sudo docker build -q -f ./server/deploy/Dockerfile ./server)환경 변수 설정값 설명 MYSQL_HOST🖌︎ MYSQL_ENDPOINT MySQL 호스트의 주소, MySQL > Instance Group 탭에서 생성해 둔 `tutorial-mysql` 인스턴스 그룹을 클릭한 뒤 상단 엔드포인트에서 확인 DB_USERNAME🖌︎ admin 데이터베이스 유저 이름 DB_PASSWORD🖌︎ root1234 데이터베이스 유저 패스워드
Step 4. 애플리케이션 서버에 로드 밸런서 생성
-
카카오클라우드 콘솔 > Networking > Load Balancing 메뉴로 이동 후, [로드 밸런서 생성] 버튼을 클릭합니다.
-
생성할 로드 밸런서의 이름과 설명을 입력하고 매핑할 VPC와 서브넷을 설정합니다. 아래 정보를 참조하여 리스너 설정은 아래의 조건으로 진행하고 [생성] 버튼을 클릭합니다.
구분 항목 설정/입력값 유형 선택 Network Load Balancer (L4) 기본 정보 로드 밸런서 이름 tutorial-app-lb 네트워크 서브넷 {VPC_ID}_sn_3(10.0.32.0/20) (VPC - tutorial)리스너 프로토콜 TCP포트 번호 8080 -
생성한 로드 밸런서의 프로비저닝 상태가
Active가 될 때까지 대기합니다.- 1~3분 정도 시간이 소요됩니다.
-
좌측 사이드바에서 대상 그룹을 클릭한 뒤 [대상 그룹 생성] 버튼을 클릭합니다.
-
다음을 참고하여 정보를 설정 후, [다음] 버튼을 클릭합니다.
구분 항목 설정/입력값 로드 밸런서 가용 영역 kr-central-2-a 로드 밸런서 tutorial-app-lb 리스너 TCP:8080 기본 정보 대상 그룹 이름 tutorial-app-target-group 프로토콜 TCP알고리즘 Round Robin고정 세션 미사용 Health Check 사용유형 TCP체크 주기 10타임 아웃 5상태 전환 기준 (성공) 3상태 전환 기준 (실패) 3 -
목록에서 대상 그룹에 추가할 애플리케이션 인스턴스를 선택합니다.
-
다음과 같이 포트 정보를 입력하고, [대상 추가] 버튼을 클릭한 뒤 [다음] 버튼을 클릭합니다.
대상 인스턴스 포트 번호 tutorial-app-1 8080tutorial-app-2 8080 -
생성한 정보를 확인 후 [생성] 버튼을 클릭합니다.
-
로드 밸런서와 헬스체크는 연결한 대상인 애플리케이션 서버에 접근할 수 있어야 합니다. 이를 위해 애플리케이션 서버의 보안 그룹인
tutorial-app-sg에 아래와 같은 인바운드 규칙을 추가합니다.-
VPC > 보안 그룹 메뉴로 이동하여,
tutorial-app-sg를 선택합니다. -
[인바운드 규칙 관리] 버튼을 클릭하고 다음 정책을 추가합니다. 확인되는 상태 확인 IP를 모두 추가해야 합니다. 본 예시에서는 상태 확인 IP가 2개일 경우를 가정하였습니다.
인바운드 규칙 정책 설명 프로토콜 패킷 출발지 포트 번호 app inbound policy 1 로드 밸런서 접근 및 상태 확인 호스트의 접근 1 TCP{healthcheck-ip1}/32
- Load Balancing > 대상 그룹 > 대상 탭 > 서브넷별 상태 확인 IP에서 확인8080app inbound policy 2 로드 밸런서 접근 및 상태 확인 호스트의 접근 2 TCP{healthcheck-ip2}/32
- Load Balancing > 대상 그룹 > 대상 탭 > 서브넷별 상태 확인 IP에서 확인8080
-
Step 5. 웹 서버 생성
웹 서버는 인터넷 네트워크 위에서 HTTP 프로토콜을 이용해 HTML, CSS, JavaScript 코드와 같은 정적인 정보들을 웹 브라우저에 전송하는 역할을 합니다.
정적 데이터를 제공하기 위해 웹 서버 애플리케이션인 Nginx를 설치하고, 예제 React 프로젝트를 웹 서버 접속 시 정적 데이터로 제공되도록 설정합니다. /api 이하 경로로 들어오는 요청은 애플리케이션 서버로 포워딩합니다.
-
Nginx Proxy Manager에서 설정한 포트에 맞게 매핑해 둔 인스턴스에 접속합니다. 키 파일이 존재하는 폴더로 이동하여 실행합니다.
# tutorial-web-1
ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10000
# tutorial-web-2
ssh -i ${PRIVATE_KEY}.pem ubuntu@${BASTION_PUBLIC_IP} -p 10001환경 변수 설명 PRIVATE_KEY🖌︎ 키 파일 이름 BASTION_PUBLIC_IP🖌︎ Bastion 인스턴스의 퍼블릭 IP -
예제 프로젝트를 설치합니다.
git clone -b kakaocloud-library https://github.com/kakaoenterprise/kakaocloud-tutorials -
예제 프로젝트가 위치한 폴더로 이동합니다.
cd kakaocloud-tutorials -
예제 프로젝트를 빌드 및 실행하는데 필요한 패키지를 설치합니다.
bash install-requirements.sh -
환경변수를 입력한 뒤, 웹 서버를 실행합니다.
sudo docker run -it \
-e SERVER_ENDPOINT=${SERVER_ENDPOINT} \
-p 80:80 -p 443:443 \
--name kakaocloud-library-client -d \
$(sudo docker build -q -f ./client/deploy/Dockerfile ./client)환경 변수 설정값 설명 SERVER_ENDPOINT🖌︎ http://{APP_LB_PRIVATE_IP}:8080 생성한 애플리케이션 로드 밸런서의 프라이빗 IP를 `{APP_LB_PRIVATE_IP}`에 입력
Step 6. 웹 서버에 로드 밸런서 생성
이번 단계에서는 웹 서버에 클라이언트의 요청을 수신하고 받은 트래픽을 여러 개의 서버로 분산하는 로드 밸런서를 생성합니다.
-
카카오클라우드 콘솔 > Networking > Load Balancing으로 이동 후, [로드 밸런서 생성] 버튼을 클릭합니다.
-
생성할 로드 밸런서의 이름과 설명을 입력하고 매핑할 VPC와 서브넷을 설정합니다. 아래 정보를 참조하여 리스너 설정은 다음과 같은 조건으로 진행하고 [생성] 버튼을 클릭합니다.
구분 항목 설정/입력값 유형 선택 Application Load Balancer기본 정보 로드 밸런서 이름 tutorial-web-lb 네트워크 서브넷 main (VPC - tutorial) 리스너 프로토콜 HTTP포트 번호 80 -
생성한 로드 밸런서의 프로비저닝 상태가
Active가 될 때까지 대기합니다.- 1~3분 정도 시간이 소요됩니다.
-
좌측 사이드바에서 대상 그룹을 선택 후, [대상 그룹 생성] 버튼을 클릭합니다.
-
다음을 참고하여 설정 후, [다음] 버튼을 클릭합니다.
구분 항목 설정/입력값 로드 밸런서 가용 영역 kr-central-2-a 로드 밸런서 tutorial-web-lb 리스너 HTTP:80 기본 정보 대상 그룹 이름 tutorial-web-target-group 프로토콜 HTTP알고리즘 Round Robin 고정 세션 미사용 Health Check 사용유형 HTTPHTTP 메서드 GETHTTP 버전 1.1HTTP 상태 코드 200체크 경로 /체크 주기 10타임 아웃 5상태 전환 기준 (성공) 3상태 전환 기준 (실패) 3 -
목록에서 대상 그룹에 추가할 인스턴스를 선택합니다.
-
포트 입력란에 다음의 정보를 입력하고 [대상 추가] 버튼과 [다음] 버튼을 순차적으로 클릭합니다.
대상 인스턴스 포트 번호 tutorial-web-1 80tutorial-web-2 80 -
생성한 정보를 확인 후 [생성] 버튼을 클릭합니다.
-
로드 밸런서와 헬스체크는 연결한 대상인 웹 서버에 접근할 수 있어야 합니다. 이를 위해 웹 서버의 보안 그룹인
tutorial-web-sg에 아래와 같은 인바운드 규칙을 추가합니다.- VPC > 보안 그룹 메뉴로 이동하여,
tutorial-web-sg를 선택합니다. - [인바운드 규칙 관리] 버튼을 클릭하고 다음 정책을 추가합니다. 확인되는 상태 확인 IP를 모두 추가해야 합니다. 본 예시에서는 상태 확인 IP가 2개일 경우를 가정하였습니다.
인바운드 규칙 정책 설명 프로토콜 패킷 출발지 포트 번호 web inbound policy 1 로드 밸런서 접근 및 상태 확인 호스트의 접근 1 TCP{healthcheck-ip1}/32
- Load Balancing > 대상 그룹 > 대상 탭 > 서브넷별 상태 확인 IP에서 확인80web inbound policy 2 로드 밸런서 접근 및 상태 확인 호스트의 접근 2 TCP{healthcheck-ip2}/32
- Load Balancing > 대상 그룹 > 대상 탭 > 서브넷별 상태 확인 IP에서 확인80 - VPC > 보안 그룹 메뉴로 이동하여,
Step 7. 웹 서버 로드 밸런서에 퍼블릭 IP 연결
- Load Balancing > 로드 밸런서 메뉴로 이동 후, 생성해 둔 웹 로드 밸런서를 선택합니다.
- [퍼블릭 IP 연결]을 클릭합니다.
- 세부 정보 탭에서 퍼블릭 IP를 확인합니다.
Step 8. 서비스 접속 확인
브라우저에서 연결한 퍼블릭 IP로 접속하여 서비스를 확인합니다. 연결에 성공하면 다음과 같은 '카카오클라우드 도서관' 서비스 화면이 표시됩니다.
