Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

JINIers

[Qwiklabs] HTTP Load Balancer with Cloud Armor 본문

GCP/Qwiklabs

[Qwiklabs] HTTP Load Balancer with Cloud Armor

JINIers 2022. 3. 2. 14:14

Cloud Armor가 포함된 http 부하분산기

 

cloud armor ip allow list / deny list를 사용하면 google cloud 엣지에서 사용자 및 악성 트래픽에 대해 최대한 가까운 http(s) 로드밸런서에 대한 액세스를 제한하거나 허용할 수 있음

→ 이러면 악의적인 사용자나 트래픽이 리소스를 소비하거나 VPC 네트워크에 들어가는 것을 방지할 수 있음

 

 

이거라는데 어.... 그래요... 해보라니까 해볼게...

[목표]

  • http 및 상태 확인 방화벽 규칙 만들기
  • 두 개의 인스턴스 템플릿 구성
  • 관리형 인스턴스 그룹 2개 만들기
  • IPv4 및 IPv6을 사용하여 http 로드밸런서 구성
  • http 로드밸런서 스트레스 테스트
  • http 로드밸런서에 대한 액세스를 제한하기 위해 ip 주소 거부

 


[체크포인트]

1. http 및 상태 확인 방화벽 규칙 구성
2. 인스턴스 템플릿 및 인스턴스 그룹 구성
3. http 로드 밸런서 구성
4. siege-vm 블랙리스트


1. http 및 상태 확인 방화벽 규칙 구성

[http 방화벽 규칙 만들기]

gcloud compute firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server

[상태 확인 방화벽 규칙 만들기]

gcloud compute firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=default --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16 --target-tags=http-server

2. 인스턴스 템플릿 구성 및 인스턴스 그룹 생성

[인스턴스 템플릿 구성]

compute engine > instance templates > create

조건

  • name : us-east1-template
  • metadata=startup-script-url=gs://cloud-training/gcpnet/httplb/startup.sh
  • machine-type=n1-standard-1
  • network interface > subnetwork : us-east1
  • tags=http-server


* network-tags 'http-server'는  HTTP and Health Check 방화벽 규칙이 인스턴스에 적용되도록 한다.

> create similar > create

 

  • name : europe-west1-template
  • network interface > subnetwork : default(europe-west1)


[관리형 인스턴스 그룹 만들기]

1. us.ver

 

조건

  • Name : us-east1-mig
  • Location : Multiple zones
  • Region : us-east1
  • Instance template : us-east1-template
  • Autoscaling > Autoscaling metrics > Click dropdown > Metric type CPU utilization
  • Target CPU : utilization 80, click Done.
  • Cool-down period : 45
  • Minimum number of instances : 1
  • Maximum number of instances : 5


shell > 

gcloud beta compute instance-groups managed create us-east1-mig --project=qwiklabs-gcp-01-6225c9b339d2 --base-instance-name=us-east1-mig --size=1 --template=us-east1-template --zones=us-east1-b,us-east1-c,us-east1-d --target-distribution-shape=EVEN

gcloud beta compute instance-groups managed set-autoscaling us-east1-mig --project=qwiklabs-gcp-01-6225c9b339d2 --region=us-east1 --cool-down-period=45 --max-num-replicas=5 --min-num-replicas=1 --mode=on --target-cpu-utilization=0.8



2. eu.ver

조건

  • Name : europe-west1-mig
  • Location : Multiple zones
  • Region : europe-west1
  • Instance template : europe-west1-template
  • Autoscaling > Autoscaling metrics > Click dropdown > Metric type CPU utilization
  • Target CPU : utilization 80, click Done.
  • Cool-down period : 45
  • Minimum number of instances : 1
  • Maximum number of instances : 5

 

shell >

gcloud beta compute instance-groups managed create europe-west1-mig --project=qwiklabs-gcp-01-6225c9b339d2 --base-instance-name=europe-west1-mig --size=1 --template=europe-west1-template --zones=europe-west1-b,europe-west1-d,europe-west1-c --target-distribution-shape=EVEN

gcloud beta compute instance-groups managed set-autoscaling europe-west1-mig --project=qwiklabs-gcp-01-6225c9b339d2 --region=europe-west1 --cool-down-period=45 --max-num-replicas=5 --min-num-replicas=1 --mode=on --target-cpu-utilization=0.8


[백엔드 확인]

us-east1-mig external ip 클릭
클라이언트 ip, host name, server location이 표시되어야한다.

2. 백엔드 확인


3. http 로드밸런서 구성


network service > load balancing > create load balancer > http load balancing 선택 > From Internet to my VMs or serverless services 선택 후 컨티뉴


[백엔드 구성]

backend configuration > create a backend service

조건

  • Name : http-backend
  • Instance group : us-east1-mig
  • Port numbers : 80
  • Balancing mode : Rate
  • Maximum RPS : 50
  • Capacity : 100


done > add backend

조건

  • Instance group : europe-west1-mig
  • Port numbers : 80
  • Balancing mode : Utilization
  • Maximum backend utilization : 80
  • Capacity : 100


done > health check > create health check > save

조건

  • name : http-health-check
  • Protocol : TCP
  • Port : 80

enable logging 체크 > rate : 1 > create 

 

[프런트엔드 구성]

조건

  • Protocol HTTP
  • IP version IPv4
  • IP address Ephemeral
  • Port 80

done > add fronted ip and port

조건

  • Protocol HTTP
  • IP version IPv6
  • IP address Ephemeral
  • Port 80


done > 검토 > create

lb 4 : 34.117.176.134:80

 

3-1. 로드밸런서 확인

 

3-2. 로드밸런서 확인


4. http 로드밸런서 테스트

[http 로드 밸런서에 액세스]

http://34.117.176.134:80

 

4. http 로드밸런서에 액세스(IPv4)

 

 


[HTTP 로드 밸런서 스트레스 테스트]

 

조건

  • Name siege-vm
  • Region us-west1
  • Zone us-west1-c
  • Series N1


siege-vm ssh > 

sudo apt-get -y install siege
export LB_IP=34.111.194.53:80
siege -c 250 http://$LB_IP



network service > LB > http-lb 눌러 > 모니터링 탭 확인

4. 모니터링 확인


5. siege-vm 거부

SIEGE_IP : 34.127.52.153

network security > cloud armor > create policy

조건

  • Name denylist-siege
  • Default rule action : Allow

next step > add rule > 

  • Condition : Enter the SIEGE_IP
  • Action : Deny
  • Deny status : 403 (Forbidden)
  • Priority : 1000


next step > target

  • type : Load balancer backend service
  • target : http-backend

생성!!


[보안정책 확인]

siege-vm ssh >

curl http://$LB_IP


<!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden
이 떠야함!! 좀 걸린다!! 

siege -c 250 http://$LB_IP


network security > cloud armor > denylist-siege 클릭 > log 클릭 > view policy logs 

쿼리 > 

resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:(denylist-siege)
resource.type="http_load_balancer"
resource.labels.forwarding_rule_name="http-lb-forwarding-rule"
resource.labels.url_map_name="http-lb"



후 run query 

뒤에 httpRequest를 확장하고 어쩌고 있는데 찾지도 못했고 siege가 계속되어 이상현상 발생으로 인해 꺼짐
하지만 그 전에 체크포인트를 전부 완성해서 실습은 완료로 표시되었다.

Comments