Google Cloud HTTP(S) 부하 분산은 전 세계 Google 접속 지점(POP)의 Google 네트워크 에지에서 구현됩니다. HTTP(S) 부하 분산기로 전달된 사용자 트래픽은 사용자에게 가장 가까운 POP로 유입되고, 이어서 Google의 글로벌 네트워크를 통해 사용 가능한 용량이 충분한 가장 가까운 백엔드로 부하가 분산됩니다.
이 실습에서는 아래 다이어그램과 같이 HTTP 부하 분산기를 구성합니다. 그런 다음 부하 분산기에 부하 테스트를 실행하여 전역 부하 분산과 자동 확장을 시연합니다.
목표
이 실습에서는 다음 작업을 수행하는 방법을 알아봅니다.
상태 점검 방화벽 규칙 만들기
Cloud Router를 사용하여 NAT 구성 만들기
웹 서버의 커스텀 이미지 만들기
커스텀 이미지 기반으로 인스턴스 템플릿 만들기
관리형 인스턴스 그룹 2개 만들기
IPv4 및 IPv6로 HTTP 부하 분산기 구성하기
HTTP 부하 분산기 부하 테스트하기
각 실습에서는 정해진 기간 동안 새 Google Cloud 프로젝트와 리소스 집합이 무료로 제공됩니다.
시크릿 창을 사용하여 Qwiklabs에 로그인합니다.
실습 사용 가능 시간(예:1:15:00)을 참고하여 해당 시간 내에 완료합니다. 일시중지 기능은 없습니다. 필요한 경우 다시 시작할 수 있지만 처음부터 시작해야 합니다.
준비가 되면실습 시작을 클릭합니다.
실습 사용자 인증 정보(사용자 이름및비밀번호)를 기록해 두세요. Google Cloud Console에 로그인합니다.
Google Console 열기를 클릭합니다.
다른 계정 사용을 클릭한 다음, 안내 메시지에이실습에 대한 사용자 인증 정보를 복사하여 붙여넣습니다. 다른 사용자 인증 정보를 사용하는 경우 오류가 발생하거나요금이 부과됩니다.
약관에 동의하고 리소스 복구 페이지를 건너뜁니다.
참고:실습을 완료했거나 다시 시작하려고 하는 경우가 아니면실습 종료를 클릭하지 마세요. 클릭하면 작업이 지워지고 프로젝트가 삭제됩니다.
작업 1. 상태 점검 방화벽 규칙 구성
상태 점검을 통해 새 연결을 수신할 수 있는 부하 분산기 인스턴스를 판별합니다. HTTP 부하 분산의 경우130.211.0.0/22및35.191.0.0/16범위 내의 주소에서 부하 분산 인스턴스의 상태 점검 프로브를 가져옵니다. 방화벽 규칙에서 이 연결을 허용해야 합니다.
상태 점검 규칙 만들기
상태 점검을 허용하는 방화벽 규칙을 만듭니다.
Cloud 콘솔의탐색 메뉴()에서VPC 네트워크>방화벽을 클릭합니다. 기존ICMP,내부,RDP,SSH방화벽 규칙을 확인합니다.
각 Google Cloud 프로젝트는기본네트워크와 이러한 방화벽 규칙으로 시작합니다.
방화벽 규칙 만들기를 클릭합니다.
다음을 지정하고 나머지 설정은 기본값으로 둡니다.속성값(지정된 대로 값 입력 또는 옵션 선택)
이름
fw-allow-health-checks
네트워크
기본값
대상
지정된 대상 태그
대상 태그
allow-health-checks
소스 필터
IPv4 범위
소스 IPv4 범위
130.211.0.0/22 및 35.191.0.0/16
프로토콜 및 포트
지정된 프로토콜 및 포트
참고:소스 IP 범위에/22및/16을 포함해야 합니다.
tcp를 선택하고 포트80을 지정합니다.
만들기를 클릭합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
상태 점검 방화벽 규칙 구성
내 진행 상황 확인하기
작업 2. Cloud Router를 사용하여 NAT 구성 만들기
작업 3에서 설정하는 Google Cloud VM 백엔드 인스턴스는 외부 IP 주소로 구성되지 않습니다.
대신 Cloud NAT 서비스를 설정하여 이러한 VM 인스턴스에서 아웃바운드 트래픽은 Cloud NAT를 통해서만 전송하고 인바운드 트래픽은 부하 분산기를 통해 수신할 수 있도록 합니다.
Cloud Router 인스턴스 만들기
Cloud 콘솔의탐색 메뉴()에서네트워크 서비스>Cloud NAT를 클릭합니다.
시작하기를 클릭합니다.
다음을 지정하고 나머지 설정은 기본값으로 둡니다.속성값(지정된 대로 값 입력 또는 옵션 선택)
게이트웨이 이름
nat-config
네트워크
기본값
리전
us-central1
Cloud Router를 클릭하고새 라우터 만들기를 선택합니다.
이름에nat-router-us-central1을 입력합니다.
만들기를 클릭합니다.
NAT 게이트웨이 만들기에서만들기를 클릭합니다.
참고:NAT 게이트웨이 상태가 '실행 중'으로 변경되면 다음 작업으로 넘어갑니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
Cloud Router를 사용하여 NAT 구성 만들기
내 진행 상황 확인하기
작업 3. 웹 서버의 커스텀 이미지 만들기
부하 분산기 백엔드를 위한 웹 서버 커스텀 이미지를 만듭니다.
VM 만들기
Cloud 콘솔의탐색 메뉴()에서Compute Engine>VM 인스턴스를 클릭합니다.
인스턴스 만들기를 클릭합니다.
다음을 지정하고 나머지 설정은 기본값으로 둡니다.속성값(지정된 대로 값 입력 또는 옵션 선택)
이름
webserver
리전
us-central1
영역
us-central1-a
부팅 디스크
Debian GNU/Linux 10(buster)
부팅 디스크에서변경>고급 구성 표시를 클릭합니다.
삭제 규칙에서부팅 디스크 유지를 선택합니다.
선택을 클릭합니다.
네트워킹, 디스크, 보안, 관리, 단독 테넌시를 클릭합니다.
네트워킹을 클릭합니다.
네트워크 태그에allow-health-checks를 입력합니다.
네트워크 인터페이스에서기본값을 클릭합니다.
외부 IPv4 주소드롭다운에서없음을 선택합니다.
완료를 클릭합니다.
만들기를 클릭합니다.
VM 맞춤설정
webserver의 경우SSH를 클릭하여 터미널을 실행하고 연결합니다.
Cloud Identity-Aware Proxy를 통한 연결 실패팝업이 표시되면다시 시도를 클릭합니다.
소프트웨어 설치가 완료되었습니다. 그러나 이 이미지를 사용하여 새 VM을 만들면 새로 부팅된 VM에서 실행 중인 Apache 웹 서버가 없습니다. 다음 명령어를 사용하여 Apache 서비스가 부팅 시 자동으로 시작되도록 설정합니다. 그런 다음 제대로 작동하는지 테스트합니다.
webserver SSH 터미널에서 서비스가 부팅 시 시작되도록 설정합니다.
sudo update-rc.d apache2 enable
복사되었습니다.
content_copy
Cloud 콘솔에서webserver를 선택한 후작업 더보기를 클릭합니다.
재설정을 클릭합니다.
확인 대화상자에서재설정을 클릭합니다.
참고:재설정하면 머신이 중지되었다가 재부팅됩니다. IP와 영구 부팅 디스크는 동일하게 유지되지만 메모리는 완전 삭제됩니다. 따라서 재설정 후 Apache 서비스를 사용할 수 있다면update-rc명령어가 제대로 실행된 것입니다.
SSH를 통해 VM에 연결하고 다음 명령어를 입력하여 서버 상태를 점검합니다.
sudo service apache2 status
복사되었습니다.
content_copy
참고:Cloud Identity-Aware Proxy 연결 실패함팝업이 표시되면다시 시도를 클릭합니다.
결과에Apache HTTP 서버 시작됨이 표시됩니다.
커스텀 이미지를 만들 디스크 준비
인스턴스가 삭제될 때 부팅 디스크도 삭제되지 않는지 확인합니다.
VM 인스턴스 페이지에서webserver를 클릭하여 VM 인스턴스 세부정보를 확인합니다.
스토리지>부팅 디스크에서인스턴스 삭제 시가디스크 유지로 설정되어 있는지 확인합니다.
VM 인스턴스 페이지로 돌아가webserver를 선택한 후작업 더보기를 클릭합니다.
삭제를 클릭합니다.
확인 대화상자에서삭제를 클릭합니다.
왼쪽 창에서디스크를 클릭하고webserver디스크가 있는지 확인합니다.
커스텀 이미지 만들기
왼쪽 창에서이미지를 클릭합니다.
이미지 만들기를 클릭합니다.
다음을 지정하고 나머지 설정은 기본값으로 둡니다.속성값(지정된 대로 값 입력 또는 옵션 선택)
이름
mywebserver
소스
디스크
소스 디스크
webserver
만들기를 클릭합니다.
참고:같은 webserver가 여러 개 시작될 수 있는 커스텀 이미지를 만들었습니다. 이제webserver디스크를 삭제해도 됩니다.
다음 단계에서는 이 이미지를 사용하여 관리형 인스턴스 그룹에서 사용할 수 있는 인스턴스 템플릿을 정의합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
웹 서버의 커스텀 이미지 만들기
내 진행 상황 확인하기
작업 4. 인스턴스 템플릿 구성 및 인스턴스 그룹 만들기
관리형 인스턴스 그룹에서는 인스턴스 템플릿을 사용하여 동일한 인스턴스 그룹을 만들 수 있습니다. 이를 사용하여 HTTP 부하 분산기의 백엔드를 만듭니다.
인스턴스 템플릿 구성
인스턴스 템플릿은 VM 인스턴스 및 관리형 인스턴스 그룹을 만드는 데 사용할 수 있는 API 리소스입니다. 인스턴스 템플릿은 머신 유형과 부팅 디스크 이미지, 서브넷, 라벨, 기타 인스턴스 속성을 정의합니다.
Cloud 콘솔의탐색 메뉴()에서Compute Engine>인스턴스 템플릿을 클릭합니다.
인스턴스 템플릿 만들기를 클릭합니다.
이름에mywebserver-template을 입력합니다.
시리즈에서N1을 선택합니다.
머신 유형에서f1-micro(1 vCPU)를 선택합니다.
부팅 디스크에서변경을 클릭합니다.
커스텀 이미지>프로젝트 선택을 클릭합니다.
프로젝트 선택대화상자에서Project_ID를 클릭합니다.
이미지에서mywebserver를 선택합니다.
선택을 클릭합니다.
네트워킹, 디스크, 보안, 관리, 단독 테넌시를 클릭합니다.
네트워킹을 클릭합니다.
네트워크 태그에allow-health-checks를 입력합니다.
네트워크 인터페이스에서기본값을 클릭합니다.
외부 IPv4 주소드롭다운에서없음을 선택합니다.
완료를 클릭합니다.
만들기를 클릭합니다.
관리형 인스턴스 그룹의 상태 점검 만들기
탐색 메뉴에서Compute Engine>상태 점검을 클릭합니다.
상태 점검 만들기를 클릭합니다.
다음을 지정하고 나머지 설정은 기본값으로 둡니다.속성값(지정된 대로 옵션 선택)
이름
http-health-check
프로토콜
TCP
포트
80
만들기를 클릭합니다.
관리형 인스턴스 그룹 상태 점검은 비정상 상태가 된 인스턴스를 삭제하고 다시 만들라는 신호를 선제적으로 보냅니다.
관리형 인스턴스 그룹 만들기
us-central1과europe-west1에 각각 관리형 인스턴스 그룹을 만듭니다.
탐색 메뉴에서Compute Engine>인스턴스 그룹을 클릭합니다.
인스턴스 그룹 만들기를 클릭합니다.
다음을 지정하고 나머지 설정은 기본값으로 둡니다.속성값(지정된 대로 값 입력 또는 옵션 선택)
이름
us-central1-mig
인스턴스 템플릿
mywebserver-template
위치
다중 영역
리전
us-central1
자동 확장에서 최대 인스턴스 수로1, 최대 인스턴스 수로2를 입력합니다.
자동 확장 측정항목을 클릭하고CPU 사용률을 클릭합니다.
측정항목 유형에서HTTP 부하 분산 사용률을 선택합니다.
목표 HTTP 부하 분산 사용률을80으로 입력합니다.
완료를 클릭합니다.
대기 기간드롭다운을 클릭하고60초로 설정합니다.
참고:관리형 인스턴스 그룹은 부하가 증가하거나 감소함에 따라 관리형 인스턴스 그룹에서 인스턴스를 자동으로 추가하거나 삭제할 수 있는자동 확장기능을 제공합니다.자동 확장을 사용하면 애플리케이션은 증가한 트래픽을 원활하게 처리할 수 있게 되며 리소스 수요가 적을 때 비용을 절감할 수 있습니다. 자동 확장 정책을 정의하기만 하면 됩니다. 그러면 측정된 부하에 따라 자동 확장 처리에서 자동 확장을 실행합니다.
자동 복구의상태 점검에http-health-check를 입력합니다.
http-health-check(TCP)를 선택합니다.
초기 지연에60을 입력합니다.
이는 VM 부팅을 초기화한 후 인스턴스 그룹이 상태 점검을 시도할 때까지 기다리는 시간입니다. 실습 중에 이를 위해 5분을 기다리지 않아도 되도록 1분으로 설정합니다.
만들기를 클릭합니다.
대화상자 창에서확인을 클릭합니다.
참고:europe-west1의 europe-west1-mig에 대해 동일한 절차를 반복하기 전에 인스턴스 그룹이 생성될 때까지 몇 분간 기다리세요.상태가변환 중으로 변경될 때까지새로 고침을 클릭합니다.참고:인스턴스 그룹에 연결된 백엔드 서비스가 없습니다라는 경고 창이 표시되거나 생성된 인스턴스 그룹 왼쪽에 빨간색 느낌표가 표시되면 무시하세요. 다음 실습 섹션에서 백엔드 서비스로 부하 분산기를 구성합니다.
인스턴스 그룹 만들기를 클릭합니다.
다음을 지정하고 나머지 설정은 기본값으로 둡니다.속성값(지정된 대로 값 입력 또는 옵션 선택)
이름
europe-west1-mig
인스턴스 템플릿
mywebserver-template
위치
다중 영역
리전
europe-west1
자동 확장 > 최소 인스턴스 수
1
자동 확장 > 최대 인스턴스 수
2
자동 확장 측정항목 > 측정항목 유형
HTTP 부하 분산 사용률
목표 HTTP 부하 분산 사용률
80
대기 기간
60
상태 점검에서http-health-check(TCP)를 선택합니다.
초기 지연에60을 입력합니다.
만들기를 클릭합니다.
대화상자 창에서확인을 클릭합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
인스턴스 템플릿 구성 및 인스턴스 그룹 만들기
내 진행 상황 확인하기
백엔드 확인
VM 인스턴스가 두 리전에서 모두 만들어지고 있는지 확인합니다.
탐색 메뉴에서Compute Engine>VM 인스턴스를 클릭합니다.
us-central1-mig와europe-west1-mig로 시작하는 인스턴스를 확인합니다. 이러한 인스턴스는 관리형 인스턴스 그룹의 일부입니다.
작업 5. HTTP 부하 분산기 구성
네트워크 다이어그램에서 보여주듯이 두 백엔드(us-central1의us-central1-mig와 europe-west1의europe-west1-mig) 간에 트래픽을 분산하도록 HTTP 부하 분산기를 구성합니다.
구성 시작
탐색 메뉴에서네트워크 서비스>부하 분산을 클릭합니다.
부하 분산기 만들기를 클릭합니다.
HTTP(S) 부하 분산아래에서구성 시작을 클릭합니다.
인터넷 연결 또는 내부 전용에서인터넷에서 VM 또는 서버리스 서비스로를 선택합니다.
전역 또는 리전에서전역 HTTP(S) 부하 분산기(기본)를 선택합니다.
계속을 클릭합니다.
이름에http-lb를 입력합니다.
프런트엔드 구성
호스트 및 경로 규칙은 트래픽의 전달 방식을 결정합니다. 예를 들어 동영상 트래픽을 한 백엔드에 전달하고 정적 트래픽을 다른 백엔드에 전달할 수 있습니다. 그러나 이 실습에서는 호스트 및 경로 규칙을 구성하지 않습니다.
프런트엔드 구성을 클릭합니다.
다음을 지정하고 나머지 설정은 기본값으로 둡니다.속성값(지정된 대로 값 입력 또는 옵션 선택)
프로토콜
HTTP
IP 버전
IPv4
IP 주소
임시
포트
80
완료를 클릭합니다.
프런트엔드 IP 및 포트 추가를 클릭합니다.
다음을 지정하고 나머지 설정은 기본값으로 둡니다.속성값(지정된 대로 값 입력 또는 옵션 선택)
프로토콜
HTTP
IP 버전
IPv6
IP 주소
임시
포트
80
완료를 클릭합니다.
HTTP(S) 부하 분산은 클라이언트 트래픽에 IPv4 및 IPv6 주소를 모두 지원합니다. 클라이언트 IPv6 요청은 전역 부하 분산 레이어에서 종료된 후 IPv4를 통해 백엔드로 프록시 처리됩니다.
백엔드 구성
백엔드 서비스는 들어오는 트래픽을 하나 이상의 연결된 백엔드에 전달합니다. 각 백엔드는 인스턴스 그룹과 추가 제공 용량 메타데이터로 구성됩니다.
백엔드 구성을 클릭합니다.
백엔드 서비스 및 백엔드 버킷>백엔드 서비스 만들기를 클릭합니다.
다음을 지정하고 나머지 설정은 기본값으로 둡니다.속성값(지정된 대로 옵션 선택)
이름
http-backend
백엔드 유형
인스턴스 그룹
인스턴스 그룹
us-central1-mig
포트 번호
80
분산 모드
요율
최대 RPS
50
용량
100
참고:이 구성은 부하 분산기가us-central1-mig의 각 인스턴스를 초당 요청수(RPS) 50 이하로 유지하려고 함을 의미합니다.
완료를 클릭합니다.
백엔드 추가를 클릭합니다.
다음을 지정하고 나머지 설정은 기본값으로 둡니다.속성값(지정된 대로 옵션 선택)
인스턴스 그룹
europe-west1-mig
포트 번호
80
분산 모드
사용률
최대 백엔드 사용률
80
용량
100
참고:이 구성은 부하 분산기가europe-west1-mig의 각 인스턴스를 CPU 사용률 80% 이하로 유지하려고 함을 의미합니다.
완료를 클릭합니다.
상태 점검에서http-health-check를 선택합니다.
로깅 사용 설정체크박스를 클릭하여 선택합니다.
샘플링 레이트를1로 지정합니다.
만들기를 클릭합니다.
확인을 클릭합니다.
HTTP 부하 분산기 검토 및 만들기
검토 및 완료를 클릭합니다.
백엔드 서비스와프런트엔드를 검토합니다.
만들기를 클릭합니다. 부하 분산기가 만들어질 때까지 기다립니다.
부하 분산기 이름(http-lb)을 클릭합니다.
다음 작업을 위해 부하 분산기의 IPv4 및 IPv6 주소를 확인합니다. 각각[LB_IP_v4]와[LB_IP_v6]라고 합니다.
참고:IPv6 주소는 16진수 형식입니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
HTTP 부하 분산기 구성
내 진행 상황 확인하기
작업 6. HTTP 부하 분산기 부하 테스트
백엔드의 HTTP 부하 분산기를 만들었으므로 이제 트래픽이 백엔드 서비스로 전달되는지 확인합니다.
The HTTP load balancer should forward traffic to the region that is closest to you.
check참
거짓
HTTP 부하 분산기에 액세스
Google Cloud 콘솔 제목 표시줄에서Cloud Shell 활성화()를 클릭합니다.
메시지가 표시되면계속을 클릭합니다.
부하 분산기의 상태를 확인하려면[LB_IP_v4]를 부하 분산기의 IPv4 주소로 바꿔서 다음 명령어를 실행합니다.
LB_IP=[LB_IP_v4]
while [ -z "$RESULT" ] ;
do
echo "Waiting for Load Balancer";
sleep 5;
RESULT=$(curl -m1 -s $LB_IP | grep Apache);
done
복사되었습니다.
content_copy
참고:부하 분산기가 준비되면 명령어가 종료됩니다.
브라우저에서 새 탭을 열고http://[LB_IP_v4]로 이동합니다.[LB_IP_v4]를 부하 분산기의 IPv4 주소로 바꿔야 합니다.
HTTP 부하 분산기 부하 테스트
HTTP 부하 분산기에서 부하를 시뮬레이션할 새 VM을 만듭니다. 그런 다음 부하가 클 때 두 백엔드에서 모두 트래픽이 분산되는지 확인합니다.
Cloud 콘솔의탐색 메뉴()에서Compute Engine>VM 인스턴스를 클릭합니다.
인스턴스 만들기를 클릭합니다.
다음을 지정하고 나머지 설정은 기본값으로 둡니다.속성값(지정된 대로 값 입력 또는 옵션 선택)
이름
stress-test
리전
us-west1
영역
us-west1-c
시리즈
N1
머신 유형
f1-micro(1 vCPU)
참고:us-west1은europe-west1보다us-central1에 더 가까우므로 트래픽은us-central1-mig로만 전달되어야 합니다(단, 부하가 너무 클 때는 예외).
부팅 디스크에서변경을 클릭합니다.
커스텀 이미지>프로젝트 선택을 클릭합니다.
프로젝트 선택대화상자에서Project_ID를 클릭합니다.
이미지에서mywebserver를 선택합니다.
선택을 클릭합니다.
만들기를 클릭합니다. stress-test인스턴스가 만들어질 때까지 기다립니다.
stress-test에서SSH를 클릭하여 터미널 및 연결을 실행합니다.
부하 분산기 IP 주소의 환경 변수를 만들려면 다음 명령어를 실행합니다.
export LB_IP=<Enter your [LB_IP_v4] here>
복사되었습니다.
content_copy
echo를 사용하여 확인합니다.
echo $LB_IP
복사되었습니다.
content_copy
부하 분산기에 부하를 가하려면 다음 명령어를 실행합니다.
ab -n 500000 -c 1000 http://$LB_IP/
복사되었습니다.
content_copy
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
HTTP 부하 분산기 부하 테스트
내 진행 상황 확인하기
Cloud 콘솔의탐색 메뉴(
)에서네트워크 서비스>부하 분산을 클릭합니다.
http-lb를 클릭합니다.
Monitoring을 클릭합니다.
북미와 두 백엔드 간의프런트엔드 위치(총 인바운드 트래픽)를 몇 분 동안 모니터링합니다.
참고:처음에는 트래픽이us-central1-mig로만 전달되지만 RPS가 증가함에 따라 트래픽은europe-west1-mig로도 전달됩니다. 이를 통해 기본적으로 트래픽은 가장 가까운 백엔드로 전달되지만 부하가 매우 크면 백엔드 간에 트래픽이 분산되기도 함을 알 수 있습니다.
Cloud 콘솔의탐색 메뉴(
)에서Compute Engine>인스턴스 그룹을 클릭합니다.
us-central1-mig를 클릭하여 인스턴스 그룹 페이지를 엽니다.
모니터링을 클릭하여 인스턴스 수와 LB 용량을 모니터링합니다.
europe-west1-mig인스턴스 그룹에도 같은 작업을 반복합니다.
참고:부하에 따라, 부하를 수용하도록 백엔드가 확장되는 것을 확인할 수 있습니다.
작업 7. 검토
이 실습에서는 us-central1과 europe-west1에 백엔드가 있는 HTTP 부하 분산기를 구성했습니다. 그런 다음 VM으로 부하 분산기에 부하 테스트를 실행하여 전역 부하 분산과 자동 확장을 시연했습니다.