이 튜토리얼에서는 서비스 프로듀서가 내부 패스 스루 네트워크 부하 분산기를 사용하는 간단한 서비스를 만드는 방법을 보여줍니다. 기본적으로 내부 패스 스루 네트워크 부하 분산기는 호스팅하는 VPC 네트워크 내에서만 사용할 수 있습니다.
이 튜토리얼은 클라우드 설계자, 네트워크 설계자, 네트워크 관리자, IT 관리자를 대상으로 합니다.
목표
- 서비스 프로듀서 리소스의 네트워킹 구성
- 부하 분산기 백엔드의 VM 리소스 만들기
- 부하 분산기 구성요소 구성
- 부하 분산기 액세스 테스트
비용
이 문서에서는 비용이 청구될 수 있는 Google Cloud구성요소를 사용합니다.
프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요.
이 문서에 설명된 태스크를 완료했으면 만든 리소스를 삭제하여 청구가 계속되는 것을 방지할 수 있습니다. 자세한 내용은 삭제를 참조하세요.
시작하기 전에
- 서비스 프로듀서 리소스에 사용할 프로젝트를 만들거나 선택합니다.
이 프로젝트는 이후 튜토리얼에서
PRODUCER_PROJECT로 참조됩니다. -
Google Cloud 콘솔에서 프로젝트 선택기 페이지로 이동합니다.
-
Google Cloud 프로젝트를 선택하거나 만듭니다.
프로젝트를 선택하거나 만드는 데 필요한 역할
- 프로젝트 선택: 프로젝트를 선택하는 데는 특정 IAM 역할이 필요하지 않습니다. 역할이 부여된 프로젝트를 선택하면 됩니다.
-
프로젝트 만들기: 프로젝트를 만들려면
resourcemanager.projects.create권한이 포함된 프로젝트 생성자 역할(roles/resourcemanager.projectCreator)이 필요합니다. 역할 부여 방법 알아보기
Compute Engine API를 사용 설정합니다.
API 사용 설정에 필요한 역할
API를 사용 설정하려면
serviceusage.services.enable권한이 필요합니다. 프로젝트를 만든 경우 소유자 역할 (roles/owner)을 통해 이 권한이 이미 있을 수 있습니다. 그렇지 않으면 서비스 사용량 관리자 역할 (roles/serviceusage.serviceUsageAdmin)을 통해 이 권한을 얻을 수 있습니다. 역할을 부여하는 방법 알아보기-
프로젝트에 다음 역할이 있는지 확인하세요. Compute Engine > Compute 네트워크 관리자, Compute Engine > Compute 보안 관리자, Compute Engine > Compute 인스턴스 관리자
역할 확인
-
Google Cloud 콘솔에서 IAM 페이지로 이동합니다.
IAM으로 이동 - 프로젝트를 선택합니다.
-
주 구성원 열에서 나 또는 내가 속한 그룹을 식별하는 모든 행을 찾습니다. 내가 속한 그룹을 알아보려면 관리자에게 문의하세요.
- 나를 지정하거나 포함하는 모든 행의 역할 열을 확인하여 역할 목록에 필요한 역할이 포함되어 있는지 확인합니다.
역할 부여
-
Google Cloud 콘솔에서 IAM 페이지로 이동합니다.
IAM으로 이동 - 프로젝트를 선택합니다.
- 액세스 권한 부여를 클릭합니다.
-
새 주 구성원 필드에 사용자 식별자를 입력합니다. 일반적으로 Google 계정의 이메일 주소입니다.
- 역할 선택을 클릭한 후 역할을 검색합니다.
- 역할을 추가로 부여하려면 다른 역할 추가를 클릭하고 각 역할을 추가합니다.
- 저장을 클릭합니다.
-
네트워킹 구성
다음 섹션에서는 서비스의 네트워크, 서브넷, 방화벽 규칙을 만드는 방법을 설명합니다.
네트워크 및 서브넷 구성
부하 분산기의 서비스 네트워크와 서브넷을 만들려면 다음 섹션의 단계를 완료하세요.
콘솔
Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.
VPC 네트워크 만들기를 클릭합니다.
이름에
service-network를 입력합니다.서브넷 생성 모드에 커스텀을 선택합니다.
새 서브넷 섹션에 다음 정보를 입력합니다.
- 이름에
service-subnet를 입력합니다. - 리전에서 사용할 리전을 선택합니다.
- IP 스택 유형에 IPv4(단일 스택)를 선택합니다.
- IPv4 범위에
10.10.10.0/24를 입력합니다. - 완료를 클릭합니다.
- 이름에
만들기를 클릭합니다.
gcloud
커스텀 모드 VPC 네트워크를 만듭니다.
gcloud compute networks create service-network --subnet-mode=custom
service-network네트워크에서 서브넷을 만듭니다.gcloud compute networks subnets create service-subnet \ --network=service-network \ --range=10.10.10.0/24 \ --region=REGIONREGION을 사용하려는 리전으로 바꿉니다.
방화벽 규칙 구성
다음 트래픽을 허용하도록 방화벽 규칙을 만듭니다.
fw-allow-subnet:10.10.10.0/24의 트래픽이10.10.10.0/24의 다른 리소스에 도달하도록 허용합니다.fw-allow-ssh:0.0.0.0/0의 SSH 트래픽이allow-ssh네트워크 태그가 있는 VM에 도달하도록 허용합니다.fw-allow-healthcheck: Google Cloud상태 점검 시스템의 트래픽이allow-healthcheck네트워크 태그가 있는 VM에 도달하도록 허용합니다.
콘솔
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
서브넷 트래픽을 허용하려면 방화벽 규칙 만들기를 클릭하고 다음 설정을 사용합니다.
- 이름에
fw-allow-subnet를 입력합니다. - 네트워크에서
service-network를 선택합니다. - 우선순위에
1000을 입력합니다. - 트래픽 방향으로 수신을 선택합니다.
- 일치 시 작업으로 허용을 선택합니다.
- 대상으로 네트워크의 모든 인스턴스를 선택합니다.
- 소스 필터에 대해 IPv4 범위를 선택합니다.
- 소스 IPv4 범위에
10.10.10.0/24을 입력합니다. - 프로토콜 및 포트에서 모두 허용을 선택합니다.
- 이름에
만들기를 클릭합니다.
수신 SSH 연결을 허용하려면 방화벽 규칙 만들기를 클릭하고 다음 설정을 사용하세요.
- 이름에
fw-allow-ssh를 입력합니다. - 네트워크에서
service-network를 선택합니다. - 우선순위에
1000을 입력합니다. - 트래픽 방향으로 수신을 선택합니다.
- 일치 시 작업으로 허용을 선택합니다.
- 대상으로 지정된 대상 태그를 선택합니다.
- 대상 태그에
allow-ssh를 입력합니다. - 소스 필터에 대해 IPv4 범위를 선택합니다.
- 소스 IPv4 범위에
0.0.0.0/0을 입력합니다. - 프로토콜 및 포트에서 지정된 프로토콜 및 포트를 선택하고 TCP 체크박스를 선택합니다. 포트에
22을 입력합니다.
- 이름에
만들기를 클릭합니다.
Google Cloud 상태 점검을 허용하려면 방화벽 규칙 만들기를 클릭하고 다음 설정을 사용합니다.
- 이름에
fw-allow-healthcheck를 입력합니다. - 네트워크에서
service-network를 선택합니다. - 우선순위에
1000을 입력합니다. - 트래픽 방향으로 수신을 선택합니다.
- 일치 시 작업으로 허용을 선택합니다.
- 대상으로 지정된 대상 태그를 선택합니다.
- 대상 태그에
allow-healthcheck를 입력합니다. - 소스 필터에 대해 IPv4 범위를 선택합니다.
- 소스 IPv4 범위에
130.211.0.0/22및35.191.0.0/16을 입력합니다. - 프로토콜 및 포트에서 모두 허용을 선택합니다.
- 이름에
만들기를 클릭합니다.
gcloud
fw-allow-subnet방화벽 규칙을 만들어 서브넷 내의 통신을 허용합니다.gcloud compute firewall-rules create fw-allow-subnet \ --network=service-network \ --action=allow \ --direction=ingress \ --source-ranges=10.10.10.0/24 \ --rules=tcp,udp,icmp
allow-ssh네트워크 태그를 사용해 VM으로 가는 SSH 연결을 허용하는fw-allow-ssh방화벽 규칙을 만듭니다.gcloud compute firewall-rules create fw-allow-ssh \ --network=service-network \ --action=allow \ --direction=ingress \ --source-ranges=0.0.0.0/0 \ --target-tags=allow-ssh \ --rules=tcp:22
Google Cloud상태 점검을 허용하는
fw-allow-healthcheck규칙을 만듭니다.gcloud compute firewall-rules create fw-allow-healthcheck \ --network=service-network \ --action=allow \ --direction=ingress \ --target-tags=allow-healthcheck \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --rules=tcp,udp,icmp
부하 분산기 백엔드의 VM 리소스 만들기
부하 분산기와 함께 사용할 VM과 인스턴스 그룹을 만듭니다.
백엔드 VM 만들기
만들려는 서비스는 가용성을 높이기 위해 vm-1 및 vm-2의 두 VM에서 실행됩니다. VM은 동일한 영역에 있지만 프로덕션 환경에서는 여러 영역을 사용하는 것이 좋습니다.
VM을 만드는 것 외에도 다음 단계를 따르면 다음 작업을 수행할 수 있습니다.
- 방화벽 규칙에서 타겟으로 구성한 네트워크 태그와 나중에 사용되는 추가 네트워크 태그 (
allow-nat)를 사용하도록 VM을 구성합니다. Apache 서비스를 설치, 구성, 시작합니다.
콘솔
Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
인스턴스 만들기를 클릭합니다.
이름에
vm-1를 입력합니다.리전 및 영역에서 리전과 해당 리전 내의 영역을 선택합니다.
탐색 메뉴에서 OS 및 스토리지로 이동합니다.
운영체제 및 스토리지 창에서 부팅 디스크로 Debian GNU/Linux 12 (bookworm)이 선택되어 있는지 확인합니다. 다른 이미지를 선택해야 하는 경우 변경을 클릭합니다.
탐색 메뉴에서 네트워킹으로 이동합니다.
네트워크 태그에
allow-ssh,allow-healthcheck,allow-nat을 입력합니다.네트워크 인터페이스에 다음을 선택합니다.
- 네트워크에서
service-network를 선택합니다. - 서브넷으로
service-subnet을 선택합니다. - IP 스택 유형에 IPv4(단일 스택)를 선택합니다.
- 기본 내부 IPv4 주소에 임시 (자동)을 선택합니다.
- 외부 IPv4 주소에 임시를 선택합니다.
- 네트워크에서
탐색 메뉴에서 고급으로 이동합니다.
자동화 섹션의 시작 스크립트 필드에 다음 스크립트를 입력합니다.
#! /bin/bash if [ -f /etc/startup_script_completed ]; then exit 0 fi apt-get update apt-get install apache2 -y a2ensite default-ssl a2enmod ssl file_ports="/etc/apache2/ports.conf" file_http_site="/etc/apache2/sites-available/000-default.conf" file_https_site="/etc/apache2/sites-available/default-ssl.conf" http_listen_prts="Listen 80\nListen 8008\nListen 8080\nListen 8088" http_vh_prts="*:80 *:8008 *:8080 *:8088" https_listen_prts="Listen 443\nListen 8443" https_vh_prts="*:443 *:8443" vm_hostname="$(curl -H "Metadata-Flavor:Google" \ http://metadata.google.internal/computeMetadata/v1/instance/name)" echo "Page served from: $vm_hostname" | \ tee /var/www/html/index.html prt_conf="$(cat "$file_ports")" prt_conf_2="$(echo "$prt_conf" | sed "s|Listen 80|${http_listen_prts}|")" prt_conf="$(echo "$prt_conf_2" | sed "s|Listen 443|${https_listen_prts}|")" echo "$prt_conf" | tee "$file_ports" http_site_conf="$(cat "$file_http_site")" http_site_conf_2="$(echo "$http_site_conf" | sed "s|*:80|${http_vh_prts}|")" echo "$http_site_conf_2" | tee "$file_http_site" https_site_conf="$(cat "$file_https_site")" https_site_conf_2="$(echo "$https_site_conf" | sed "s|_default_:443|${https_vh_prts}|")" echo "$https_site_conf_2" | tee "$file_https_site" systemctl restart apache2 touch /etc/startup_script_completed만들기를 클릭합니다.
이 단계를 반복하여
vm-1과 동일한 리전 및 영역에vm-2라는 다른 VM을 만듭니다.
gcloud
다음 명령어를 실행하여 VM 두 개를 만듭니다.
gcloud compute instances create vm-1 \ --zone=