Terriermon - Digimon

11. Setting Up Network and HTTP Load Balancers [ACE]

2024. 11. 19. 08:07클라우드/GCP

Task 1. Set the default region and zone for all resources

gcloud config set compute/zone us-central1-a
gcloud config set compute/region us-central1

 

Task 2. Create multiple web server instances

gcloud compute instance-templates create nginx-template \
         --metadata-from-file startup-script=startup.sh

 

gcloud compute target-pools create nginx-pool

 

 

 

gcloud compute instance-groups managed create nginx-group \
         --base-instance-name nginx \
         --size 2 \
         --template nginx-template \
         --target-pool nginx-pool

인스턴스 그룹 생성: "nginx-group"이라는 이름의 관리형 인스턴스 그룹이 생성

인스턴스 생성: --size 2로 설정했기 때문에, 이 그룹 내에 두 개의 인스턴스가 생성. 인스턴스의 이름은 --base-instance-name nginx로 설정된 기본 이름에 숫자가 추가된 형식(: nginx-0, nginx-1)으로 지정

인스턴스 템플릿 적용: --template nginx-template에 지정된 인스턴스 템플릿을 사용하여 각 인스턴스가 생성. 이 템플릿에는 머신 유형, 운영 체제 이미지, 부팅 디스크 및 네트워크 설정 등이 포함되어 있음.

타겟 풀 연결: --target-pool nginx-pool로 설정된 타겟 풀에 인스턴스가 자동으로 추가되어 로드 밸런싱이 가능.

 

생성된 인스턴스 확인

 

 

gcloud compute instances list

gcloud compute firewall-rules create www-firewall --allow tcp:80

방화벽에서 tcp 80 허용

 

 

해당 ip로 다른 창에서 들어가면 접속되는 모습 둘 다 확인

 

Task 3. Create a network load balancer

gcloud compute forwarding-rules create nginx-lb \
         --region us-central1 \
         --ports=80 \
         --target-pool nginx-pool

 

 

gcloud compute forwarding-rules list  

 

 

Task 4. Create a HTTP(s) load balancer

gcloud compute http-health-checks create http-basic-check

 

 

gcloud compute instance-groups managed \
       set-named-ports nginx-group \
       --named-ports http:80

"nginx-group" 인스턴스 그룹의 인스턴스에서 HTTP 트래픽을 수신하기 위한 80번 포트를 설정하여, 이후 로드 밸런서와 통합할 때 유용하게 사용

 

 

 

gcloud compute backend-services create nginx-backend \
      --protocol HTTP --http-health-checks http-basic-check --global

HTTP 프로토콜을 사용하는 백엔드 서비스를 생성하고, 헬스 체크를 통해 인스턴스의 상태를 모니터링하여 신뢰성 높은 서비스 제공이 가능

 

 

gcloud compute backend-services add-backend nginx-backend \
    --instance-group nginx-group \
    --instance-group-zone us-central1-a \
    --global

"nginx-backend" 백엔드 서비스에 "nginx-group" 인스턴스 그룹이 추가됩니다. 이를 통해 이 백엔드 서비스가 클라이언트 요청을 처리하는 인스턴스 그룹을 포함하게 되어, 로드 밸런서가 요청을 이 그룹의 인스턴스에 분산

 

 

gcloud compute url-maps create web-map \
    --default-service nginx-backend

"web-map"이라는 이름의 URL 맵이 생성되고, 클라이언트의 요청이 기본적으로 "nginx-backend" 백엔드 서비스로 라우팅됨. 이를 통해 요청 처리 방식이 정의되며, 필요에 따라 추가적인 경로 규칙을 설정하여 다양한 요청을 처리할 수 있음

 

gcloud compute target-http-proxies create http-lb-proxy \
    --url-map web-map

"http-lb-proxy"라는 HTTP 타겟 프록시가 생성되고, 이 프록시는 "web-map" URL 맵을 사용하여 클라이언트의 HTTP 요청을 라우팅함. 이를 통해 로드 밸런싱을 구현하고, 요청이 올바른 백엔드 서비스로 전달되도록 설정할 수 있음

 

 

gcloud compute forwarding-rules create http-content-rule \
        --global \
        --target-http-proxy http-lb-proxy \
        --ports 80

"http-content-rule"이라는 포워딩 규칙이 생성되며, 이 규칙은 클라이언트의 HTTP 요청을 80번 포트에서 수신하고, 이를 "http-lb-proxy" 타겟 HTTP 프록시로 전달함. 이를 통해 로드 밸런서가 HTTP 요청을 적절한 백엔드 서비스로 라우팅할 수 있도록 함

 

 

gcloud compute forwarding-rules list

포워딩 규칙 조회: 현재 프로젝트에 설정된 모든 포워딩 규칙의 정보를 반환함. 포워딩 규칙은 클라이언트의 요청을 적절한 타겟 프록시 또는 백엔드 서비스로 전달하는 역할.

세부 정보: 각 포워딩 규칙에 대한 정보를 포함하여, 이름, 위치(글로벌 또는 지역), 연결된 타겟 프록시, 사용 중인 포트 등 다양한 정보를 확인할 수 있음.

이 명령어는 GCP에서 설정된 포워딩 규칙을 리스트로 출력하여, 현재 설정된 트래픽 라우팅 규칙을 쉽게 확인할 수 있도록 함.

 

 

참고:

https://partner.cloudskillsboost.google/focuses/12746?parent=catalog

파트너계정만 가능

 

 

https://www.youtube.com/watch?v=-6wu8PR0dyc

 

반응형