728x90
Virtual Private Cloud (VPC) Network
- GCP를 자신만의 VPC를 설정하면서 시작하거나 default VPC를 선택해서 시작하곤 한다.
- VPC 네트워크는 GCP 리소스간의 연결과 인터넷과의 연결을 책임진다.
- 네트워크를 분리하고 방화벽을 설정해 인스턴스로의 접근을 차단시킬 수 있다.
- 정적 라우트를 만들어 특정 경로로 트래픽을 전달 할 수 있다.
- VPC 네트워크는 전역범위가 있는데 전세계 모든 GCP 리전의 서브넷을 보유 할 수 있고 서브넷은 리전까지 있을 수 있다.
- 이 아키텍쳐는 전역범위로 자신만의 네트워크 레이아웃을 정의 할 수 있게 해준다.
- 같은 서브넷의 다른 지역의 리소스를 가지게 설정 할 수 도 있다.
- 사용자 지정 네트워크에서 IP 주소의 범위를 넓힘으로써 동적으로 서브넷의 사이즈를 증가시킬 수 있다.
(이미 설정된 VM 들에게는 영향을 끼치지 않는다. - 예를 들어 VPC 가 하나의 네트워크가 있고 us-east1 리전에 하나의 서브넷만 정의되 있는 상태이다. 그리고 2개의 compute engine이 부착되어 있다. 그것들은 다른 zone에 있어도 같은 서브넷을 통해 이웃한 상태이다. 이런 capability를 통해 탄력적이면서 간단한 레이아웃을 가진 솔루션을 구축할 수 있다.
- GCP VPC에서 서브넷은 region 단위의 범위를 지원한다.
- GCP VPC에서 서브넷의 사이즈 증가는 이미 설정된 VM들에게 영향을 끼치지 않는다.
Compute Engine
- compute engine은 가상머신을 구글 인프라에 만들 수 있게 한다.
- 선행되는 투자 없이 몇백개의 가상 CPU들을 통해 빠르고 일정한 성능을 뽑아낼 수 있다.
- GCP 콘솔이나 CLI를 통해 만들 수 잇다.
- 만들어진 가상머신은 구글이 제공하는 리눅스나 윈도우 서버 이미지를 돌릴 수 있고 아니면 커스텀 버전이 이미지도 선택 할 수 있다.
- 실제 서버로 부터 이미지를 import 할 수 도 있다.
- VM 만들때 메모리 용량과 CPU 갯수를 고르는 type를 선택해야 한다.
- 이런 type들은 작은것 부터 큰것 까지 다양하다.
- 원하는게 없다면 커스텀 VM을 만들 수 도 있다.
- 머신러닝과 데이터 처리와 같은 GPU필요한 작업이 필요하면 GPU 가져다 쓸 수 있다.
- 스토리지는 standard와 ssd중 고를 수 있다.
- 빠른 성능을 원하면 local SSD를 붙여도 되는데 조심할 것은 VM이 terminate 되었을때 데이터가 last long 하지 못하기 때문에 백업이 필요하다.
- boot 이미지는 GCP가 제공하는 여러 버전의 리눅스와 윈도우 또는 너가 원하는 이미지 선택할 수 있다.
- 또한 대부분 사람들이 만드는 VM들은 비슷한 부분들이 많은데 GCP VM startup scripts 사용하면 편하다
- VM의 디스크 스냅샷을 찍어 백업할 수 있다.
- preempitible VM이라고 특이한게 있는데 일반적인 VM과 다른점은 해당 compute engin 자체가 다른곳에서 리소스가 필요하면 하던 작업을 끝내는 권한을 가진다. 대신에 가격이 싸다.
- auto scailing 이라고 기능이 있는데 작업량에 따라 인스턴스를 줄여준다.
- load balancer이라고 트래픽을 분산해 주는 기능이 있다.
- CLI 에서도 VM 만들 수 있다.
- Preemptible VMs의 장점은 싸다는 것이다.
Important VPC capabilities
- VPC도 라우팅 테이블이 있다.
- 라우팅 테이블을 통해 같은 네트워크에 있는 인스턴스 간에 트래픽을 넘긴다.
- 서브 네트워크와 GCP zone들 사이도 외부 IP 주소 없이 트래픽 분산이 가능하다.
- 라우팅 테이블은 내장되있어서 따로 만들 필요 없다.
- VPC는 global attributed 방화벽을 제공한다. 이걸 통해 접속 제한과 들어오고 나가는 트래픽에 대해 컨트롤 할 수 있다.
- compute engine instance 에 메타데이터 태그 방식으로 방화벽을 정의 할 수도 있다.
- 예를들어 웹 서버들을 "web"이라는 태그를 통해 이 태그를 가지는 서버들에게 방화벽에 80이나 443의 포트만 허용된다고 설정할 수 있다.
- VPC는 GCP프로젝트에 속해있지만 만약 프로젝트 단위로 연결이 필요하다면 VPC Peering쓰면 된다.
- IAM을 통해 누가 VPC를 설정할 수 있는지 정하고 싶으면 Shared VPC를 쓰면 된다.
- 클라우드 로드 밸런싱은 트레픽에 대한 software-defined managed service 이다.
- 로드 벨런서는 VM에서 돌아가지 않아서 관리에 신경 쓸 필요가 없다.
- 그냥 로드 밸런서를 트레픽의 앞부분(HTTP, HTTPS, TCP, SSL Traffic, UDP traffic)에 붙이기만 하면 된다.
- 리전간의 로드 벨런싱을 제공한다.
- 만약에 트레픽 몰릴게 예상되면 리전간의 로드벨런서를 준비해야되는데 HTTPS load balancing 을 사용해야 한다.
- Secure Sokets Layer traffic 을 위해서는 global ssl proxy load balancer를 사용하면 된다.
- 다른 TCP traffic 이 SSL쓰지 않으면 global TCP 프록시 로드 밸런서를 쓰면 된다.
- 이 두개의 프록시 서비스는 특정 포트넘버와 TCP에서만 동작한다.
- 만약 구글 네트워크 안에서의 로드 밸런싱이 필요하다면 internal load balancer를 사용하면 된다.
- DNS 서비스는 공짜다. (DNS : 인터넷 호스트 이름을 주소로 바꿔줌)
- 클라우드 DNS는 programmable 하다.
- 콘솔이나 CLI, API를 통해 publish 할 수 있다.
- Edge cahes를 통해 빠르게 컨텐츠 제공할 수 있는데 Google Cloud CDN이라고 한다.
- 로드 밸런서 구성한 다음 클라우드 CDN을 체크박스 한방으로 달 수 있다.
- CDN 사용하면 컨텐츠 부하도 줄어들어 돈도 아낄 수 있다.
- 쓰고있는 CDN이 있으면 interconnect partner program을 쓰면 된다.
- VPC 네트워크를 IPSEC 프로토콜을 통해 인터넷에 연결하는데 동적으로 만들려면 Cloud Router를 사용해야 한다.
- Cloud Router는 다른 네트워크와 구글 VPC는 route 정보를 더 넓은 게이트 웨이를 통해 VPN으로 exchange 한다.
- Direct peering을 통해 직접적으로 트래픽을 교환할 수 있다. 단점은 구글 service level agreement 로 커버되지 않는다.
Demonstration lab activity
https://googlecoursera.qwiklabs.com/focuses/17383
VM 하나 만든다.
클라우드 쉘에서도 VM 만들어 본다.
Your Cloud Platform project in this session is set to qwiklabs-gcp-04-06dd4065c785.
Use “gcloud config set project [PROJECT_ID]” to change to a different project.
student_04_d2ada0965f81@cloudshell:~ (qwiklabs-gcp-04-06dd4065c785)$ gcloud compute zones list | grep us-central1
us-central1-c us-central1 UP
us-central1-a us-central1 UP
us-central1-f us-central1 UP
us-central1-b us-central1 UP
student_04_d2ada0965f81@cloudshell:~ (qwiklabs-gcp-04-06dd4065c785)$ gcloud config set compute/zone us-central1-b
Updated property [compute/zone].
student_04_d2ada0965f81@cloudshell:~ (qwiklabs-gcp-04-06dd4065c785)$ gcloud compute instances create "my-vm-2" \
> --machine-type "n1-standard-1" \
> --image-project "debian-cloud" \
> --image "debian-9-stretch-v20190213" \
> --subnet "default"
Created [https://www.googleapis.com/compute/v1/projects/qwiklabs-gcp-04-06dd4065c785/zones/us-central1-b/instances/my-vm-2].
WARNING: Some requests generated warnings:
- The resource 'projects/debian-cloud/global/images/debian-9-stretch-v20190213' is deprecated. A suggested replacement is 'projects/debian-cloud/global/images/debian-9-stretch-v20190312'.
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
my-vm-2 us-central1-b n1-standard-1 10.128.0.3 35.232.204.72 RUNNING
student_04_d2ada0965f81@cloudshell:~ (qwiklabs-gcp-04-06dd4065c785)$
만든 2개의 VM 을 연결하기
Connected, host fingerprint: ssh-rsa 0 3D:F7:B3:A5:C7:15:92:A4:8D:27:08:96:46:CF
:42:C1:A1:AA:52:08:CD:61:4D:50:D4:5A:83:32:CE:E8:9C:4C
Linux my-vm-2 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Creating directory '/home/student-04-d2ada0965f81'.
student-04-d2ada0965f81@my-vm-2:~$ ping my-vm-1
PING my-vm-1.c.qwiklabs-gcp-04-06dd4065c785.internal (10.128.0.2) 56(84) bytes of data.
64 bytes from my-vm-1.c.qwiklabs-gcp-04-06dd4065c785.internal (10.128.0.2): icmp_seq=1 ttl=64 time=1.44 ms
64 bytes from my-vm-1.c.qwiklabs-gcp-04-06dd4065c785.internal (10.128.0.2): icmp_seq=2 ttl=64 time=0.283 ms
64 bytes from my-vm-1.c.qwiklabs-gcp-04-06dd4065c785.internal (10.128.0.2): icmp_seq=3 ttl=64 time=0.285 ms
64 bytes from my-vm-1.c.qwiklabs-gcp-04-06dd4065c785.internal (10.128.0.2): icmp_seq=4 ttl=64 time=0.270 ms
64 bytes from my-vm-1.c.qwiklabs-gcp-04-06dd4065c785.internal (10.128.0.2): icmp_seq=5 ttl=64 time=0.279 ms
^C
--- my-vm-1.c.qwiklabs-gcp-04-06dd4065c785.internal ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4062ms
rtt min/avg/max/mdev = 0.270/0.513/1.449/0.468 ms
student-04-d2ada0965f81@my-vm-2:~$ ssh my-vm-1
The authenticity of host 'my-vm-1 (10.128.0.2)' can't be established.
ECDSA key fingerprint is SHA256:eENuu+ZM6BGwFsY2YeRQ+QP01Ea7wVd/oIgOEa8Kv+A.
Are you sure you want to continue connecting (yes/no)? ssh my-vm-1
Please type 'yes' or 'no'yes ㄴ
Warning: Permanently added 'my-vm-1,10.128.0.2' (ECDSA) to the list of known hosts.
Linux my-vm-1 4.9.0-12-amd64 #1 SMP Debian 4.9.210-1 (2020-01-20) x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Creating directory '/home/student-04-d2ada0965f81'.
student-04-d2ada0965f81@my-vm-1:~$ sudo apt-get install nginx-light -y
- 구글 클라우드 로드밸런서는 여러 리전의 다수의 compute engine을 지원한다.
- 네트워크는 global 하고 서브넷은 reginal 하다
- 놓은 사양의 compute engine 에는 local ssd가 적합하다.
- Preemitible VM 은 언제나 멈추고 재시작 할 수 있는 batch 작업에 적합하다.
- 고성능의 CPU(in memory db와 같은)가 필요하면 고성능 VM을 쓰고 안정성과 확장성을 고려하면 여러 VM을 사용하는게 좋다.
- VPC 라우터 방화벽은 구글에 의해 내장된 기능이다.
- 백엔드 vm끼리 연결하고 싶으면 regional internal load balancer 사용하면 된다.
- peering연결은 service level agreement 지원하지 않는다.
728x90
'Cloud > Google Cloud Platform' 카테고리의 다른 글
GCP Fundamentals #6 - Storage in the Cloud (0) | 2020.05.21 |
---|---|
GCP Fundamentals #5 - Containers in the Cloud (0) | 2020.05.21 |
GCP Fundamentals #4 - Storage in the Cloud (0) | 2020.05.12 |
GCP Fundamentals #2 - Getting Started with GCP (0) | 2020.04.29 |
GCP Fundamentals #1 - Introducing GCP (0) | 2020.04.24 |
댓글