GCP 자습서 시도 '네트워크 부하 분산'
제목
표제의 튜토리얼을 시험해 보자.
【참조】
htps : // c ぉ d. 오, ぇ. 코 m/코 m 뿌테/도 cs/ぉ아 d바 센신 g/네토 ぉ rk/에아 mpぇ? hl = 그럼
전제
gcloud
명령이 설치되었습니다. 시도
1) GCE 인스턴스 생성
$ gcloud compute instances create www1 \
> --image-family debian-8 \
> --image-project debian-cloud \
> --zone us-central1-b \
> --tags network-lb-tag \
> --metadata startup-script="#! /bin/bash
> sudo apt-get update
> sudo apt-get install apache2 -y
> sudo service apache2 restart
> echo 'www1' | tee /var/www/html/index.html
> EOF"
ERROR: (gcloud.compute.instances.create) Could not fetch resource:
- The resource 'projects/debian-cloud/global/images/family/debian-8' was not found
갑자기 집착했다. 하지만 'debian-8'을 찾을 수 없다는 메시지에서 'debian-9'를 시도해보기로 한다.
$ gcloud compute instances create www1 \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-b \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart
echo '<!doctype html><html><body><h1>www1</h1></body></html>' | tee /var/www/html/index.html
EOF"
Created [https://www.googleapis.com/compute/v1/projects/fs-work-1978/zones/us-central1-b/instances/www1].
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
www1 us-central1-b n1-standard-1 10.128.0.2 xxx.xxx.xx.xxx RUNNING
성공했다. 같은 순서로, 이후 2 인스턴스 시작하면, 클라우드 콘솔에서 아래와 같이 되어 있다.
$ gcloud compute instances list
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
www1 us-central1-b n1-standard-1 10.128.0.2 xxx.xxx.xx.xxx RUNNING
www2 us-central1-b n1-standard-1 10.128.0.3 xx.xxx.x.xxx RUNNING
www3 us-central1-b n1-standard-1 10.128.0.4 xx.xxx.xxx.xxx RUNNING
curl로 액세스.
$ curl http://xx.xxx.x.xxx
curl: (7) Failed to connect to xx.xxx.x.xxx port 80: 接続がタイムアウトしました
연결되지 않는다. 핑은 통과하지만.
$ ping xxx.xxx.xx.xxx
PING xxx.xxx.xx.xxx (xxx.xxx.xx.xxx) 56(84) bytes of data.
64 bytes from xxx.xxx.xx.xxx: icmp_seq=1 ttl=55 time=167 ms
64 bytes from xxx.xxx.xx.xxx: icmp_seq=2 ttl=55 time=169 ms
64 bytes from xxx.xxx.xx.xxx: icmp_seq=3 ttl=55 time=139 ms
2) 방화벽 규칙 생성
튜토리얼 설명한 대로 외부 트래픽에서 GCE 인스턴스의 특정 포트로 연결됩니다.
$ gcloud compute firewall-rules create www-firewall-network-lb --target-tags network-lb-tag --allow tcp:80
Creating firewall...⠛Created [https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/global/firewalls/www-firewall-network-lb].
Creating firewall...done.
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED
www-firewall-network-lb default INGRESS 1000 tcp:80 False
그리고 curl 다시.
$ curl http://xxx.xxx.xx.xxx
<!doctype html><html><body><h1>www1</h1></body></html>
$
$ curl http://xx.xxx.x.xxx
<!doctype html><html><body><h1>www2</h1></body></html>
$
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www3</h1></body></html>
연결되었다. 하지만, 의문 여러가지.
만든 방화벽 규칙의 적용 범위는? 특히 인스턴스의 IP 등 지정하는 것도 아니었지만, GCP 프로젝트 전체?
문서 확인.
읽어 보면 VPC 네트워크도 얽힌다는 것을 알 수 있다.
VPC는 가상화 네트워크. 1 프로젝트에 복수의 VPC 네트워크를 설정 가능.
VPC에 대해서는 이전, 다른 튜토리얼 시도 로 해 보았다.
【특성】
・VPC는 방화벽도 포함해 “글로벌”되어 소스.
· GCE 인스턴스 간의 트래픽은 방화벽 규칙에 의해 제어됩니다.
과연. 덧붙여서 방화벽 작성에 사용한 gcloud 커멘드에 대해서는 하기 참조.
3) 부하 분산에 사용할 정적 외부 IP 주소 만들기
$ gcloud compute addresses create network-lb-ip-1 --region us-central1
Created [https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/regions/us-central1/addresses/network-lb-ip-1].
정적 외부 IP 주소는 리전 자원인 것 같다.
【참고】 h tps : // c ぉ d. 오, ぇ. 코 m / sdk / gc ぉ d / 레후 렌세 / 코 m 뿌테 / 아 d 드레 s / c 어? hl = 그럼
문득, 「네트워크 계층」이라는 란의 「프리미엄」이라고 하는 것이 신경이 쓰였다. gcloud에서는, 그런 지정하고 있지 않기 때문에.
h tps : // c ぉ d. 오, ぇ. 이 m / 네토 ぉ rk-치에 rs /? hl = 그럼
「네트워크 계층」에는 「프리미엄」과 「스탠다드」가 있다.
"프리미엄"은 "Google의 글로벌 네트워크를 사용하여 매우 높은 네트워크 성능을 사용자에게 제공합니다."에서 "기본"계층입니다.
"스탠다드"는 "다른 클라우드 공급자와 동등한 성능을 제공하면서 네트워크 비용을 줄입니다."
4) HTTP 헬스 체크 추가
$ gcloud compute http-health-checks create basic-check
Created [https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/global/httpHealthChecks/basic-check].
NAME HOST PORT REQUEST_PATH
basic-check 80 /
헬스 체크 오브젝트는 글로벌 자원인 것 같다.
5) 대상 풀 생성 및 GCE 인스턴스 추가
$ gcloud compute target-pools create www-pool --region us-central1 --http-health-check basic-check
Created [https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/regions/us-central1/targetPools/www-pool].
NAME REGION SESSION_AFFINITY BACKUP HEALTH_CHECKS
www-pool us-central1 NONE basic-check
대상 풀은 지역 리소스입니다. 작성시에 헬스 체크의 지정이 필수라는 것.
그리고, 처음에 작성한 GCE 인스턴스군을 타겟 풀에 추가.
$ gcloud compute target-pools add-instances www-pool --instances www1,www2,www3 --instances-zone us-central1-b
Updated [https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/regions/us-central1/targetPools/www-pool].
6) 전송 규칙 생성
$ gcloud compute forwarding-rules create www-rule --region us-central1 --ports 80 --address network-lb-ip-1 --target-pool www-pool
Created [https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/regions/us-central1/forwardingRules/www-rule].
7) 전달 규칙의 외부 IP 검색
$ gcloud compute forwarding-rules describe www-rule --region us-central1
IPAddress: xx.xxx.xxx.xxx
IPProtocol: TCP
creationTimestamp: '2018-09-18T07:52:11.124-07:00'
description: ''
id: '6314926843158638580'
kind: compute#forwardingRule
loadBalancingScheme: EXTERNAL
name: www-rule
networkTier: PREMIUM
portRange: 80-80
region: https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/regions/us-central1/forwardingRules/www-rule
target: https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/regions/us-central1/targetPools/www-pool
8) curl로 확인
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www3</h1></body></html>
$
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www3</h1></body></html>
$
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www3</h1></body></html>
$
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www1</h1></body></html>
$
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www1</h1></body></html>
$
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www1</h1></body></html>
$
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www1</h1></body></html>
$
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www2</h1></body></html>
일정 비율로 www1~www3이 랜덤으로 액세스된다.
Reference
이 문제에 관하여(GCP 자습서 시도 '네트워크 부하 분산'), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sky0621/items/1361974d510c92669801
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ gcloud compute instances create www1 \
> --image-family debian-8 \
> --image-project debian-cloud \
> --zone us-central1-b \
> --tags network-lb-tag \
> --metadata startup-script="#! /bin/bash
> sudo apt-get update
> sudo apt-get install apache2 -y
> sudo service apache2 restart
> echo 'www1' | tee /var/www/html/index.html
> EOF"
ERROR: (gcloud.compute.instances.create) Could not fetch resource:
- The resource 'projects/debian-cloud/global/images/family/debian-8' was not found
$ gcloud compute instances create www1 \
--image-family debian-9 \
--image-project debian-cloud \
--zone us-central1-b \
--tags network-lb-tag \
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo service apache2 restart
echo '<!doctype html><html><body><h1>www1</h1></body></html>' | tee /var/www/html/index.html
EOF"
Created [https://www.googleapis.com/compute/v1/projects/fs-work-1978/zones/us-central1-b/instances/www1].
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
www1 us-central1-b n1-standard-1 10.128.0.2 xxx.xxx.xx.xxx RUNNING
$ gcloud compute instances list
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
www1 us-central1-b n1-standard-1 10.128.0.2 xxx.xxx.xx.xxx RUNNING
www2 us-central1-b n1-standard-1 10.128.0.3 xx.xxx.x.xxx RUNNING
www3 us-central1-b n1-standard-1 10.128.0.4 xx.xxx.xxx.xxx RUNNING
$ curl http://xx.xxx.x.xxx
curl: (7) Failed to connect to xx.xxx.x.xxx port 80: 接続がタイムアウトしました
$ ping xxx.xxx.xx.xxx
PING xxx.xxx.xx.xxx (xxx.xxx.xx.xxx) 56(84) bytes of data.
64 bytes from xxx.xxx.xx.xxx: icmp_seq=1 ttl=55 time=167 ms
64 bytes from xxx.xxx.xx.xxx: icmp_seq=2 ttl=55 time=169 ms
64 bytes from xxx.xxx.xx.xxx: icmp_seq=3 ttl=55 time=139 ms
$ gcloud compute firewall-rules create www-firewall-network-lb --target-tags network-lb-tag --allow tcp:80
Creating firewall...⠛Created [https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/global/firewalls/www-firewall-network-lb].
Creating firewall...done.
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED
www-firewall-network-lb default INGRESS 1000 tcp:80 False
$ curl http://xxx.xxx.xx.xxx
<!doctype html><html><body><h1>www1</h1></body></html>
$
$ curl http://xx.xxx.x.xxx
<!doctype html><html><body><h1>www2</h1></body></html>
$
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www3</h1></body></html>
$ gcloud compute addresses create network-lb-ip-1 --region us-central1
Created [https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/regions/us-central1/addresses/network-lb-ip-1].
$ gcloud compute http-health-checks create basic-check
Created [https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/global/httpHealthChecks/basic-check].
NAME HOST PORT REQUEST_PATH
basic-check 80 /
$ gcloud compute target-pools create www-pool --region us-central1 --http-health-check basic-check
Created [https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/regions/us-central1/targetPools/www-pool].
NAME REGION SESSION_AFFINITY BACKUP HEALTH_CHECKS
www-pool us-central1 NONE basic-check
$ gcloud compute target-pools add-instances www-pool --instances www1,www2,www3 --instances-zone us-central1-b
Updated [https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/regions/us-central1/targetPools/www-pool].
$ gcloud compute forwarding-rules create www-rule --region us-central1 --ports 80 --address network-lb-ip-1 --target-pool www-pool
Created [https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/regions/us-central1/forwardingRules/www-rule].
$ gcloud compute forwarding-rules describe www-rule --region us-central1
IPAddress: xx.xxx.xxx.xxx
IPProtocol: TCP
creationTimestamp: '2018-09-18T07:52:11.124-07:00'
description: ''
id: '6314926843158638580'
kind: compute#forwardingRule
loadBalancingScheme: EXTERNAL
name: www-rule
networkTier: PREMIUM
portRange: 80-80
region: https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/regions/us-central1
selfLink: https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/regions/us-central1/forwardingRules/www-rule
target: https://www.googleapis.com/compute/v1/projects/【プロジェクトID】/regions/us-central1/targetPools/www-pool
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www3</h1></body></html>
$
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www3</h1></body></html>
$
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www3</h1></body></html>
$
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www1</h1></body></html>
$
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www1</h1></body></html>
$
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www1</h1></body></html>
$
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www1</h1></body></html>
$
$ curl http://xx.xxx.xxx.xxx
<!doctype html><html><body><h1>www2</h1></body></html>
Reference
이 문제에 관하여(GCP 자습서 시도 '네트워크 부하 분산'), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sky0621/items/1361974d510c92669801텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)