본문 바로가기
GCP Associate Cloud Engineer

Google Computer Engine Fundamentals

by 이상한나라의개발자 2024. 11. 20.

Google Computer Engine(GCE)는 클라우드에서 가상 머신(VM)을 실행하고 관리하기 위한 GCP의 핵심 서비스 입니다. 물리적 서버 대신 가상 서버를 사용할 수 이쓴ㄴ 유연성과 확장성을 제공합니다.

Compute Engine의 주요 특징

  • 가상머신 인스턴스 생성 및 관리
    • 사용자는 CPU, 메모리, 디스크 등 가상 머신의 하드웨어 스펙을 설정하고, 이를 운영체제(OS)와 함께 실행할 수 있습니다.
  • 오토 스케일링 및 로드 밸런싱
    • 애플리케이션 부하에 따라 가상 머신 수를 자동으로 늘리거나 줄이는 기능
    • 트래픽을 여러 VM에 고르게 분산 시키는 로드 밸런싱 기능을 제공
  • 유연한 스토리지 옵션
    • Persistend Disk : 고속의 영구 스토리지를 VM에 연결하여 데이터를 저장
    • 로컬 디스크, SSD 또는 네트워크 기반 스토리지 제공
  • 네트워크 연결 및 관리
    • VM 인스턴스의 네트워크 설정, 방화벽 규칙, 고정 IP(Static IP) 주소를 관리할 수 있습니다.

 

머신유형(Machine Types)

  • 프리디파인드 머신 (Predefined Machine Types)
    • Google이 제공하는 기본 유형으로, 사용 사례에 따라 CPU 및 메모리가 사전 정의되어 있습니다.
    • 일반용도 (General Purpose) : 표준 작업에 적합
      • E2, N2, N2D, N1
      • 웹 애플리케이션, 소규모 데이터베이스, 개발 환경
      • 성능과 비용의 균형
    • 메모리 최적 (Memory-Optimized) : 고용량 메모리를 요구하는 작업에 적합
      • M2, M1
      • 대규모 인메모리 데이터베이스, 데이터 분석
      • 높은 메모리 용량 제공
    • 컴퓨팅 최적화 (Computer-Optimized) : CPU 집약적인 작업에 적합
      • C2
      • 과학 계산, 고성능 컴퓨팅, 게임 서버
      • CPU 집약적인 작업에 적합
    • 가속기 최적화 (Accelerator-Optimized)
      • A2
      • 머신러닝, GPU 활용 적합
      • GPU를 포함한 고성능 하드웨어
  • 커스텀 머신 ( Custom Machine Types)
    • 사용자가 CPU 및 메모리 요구 사항을 직접 정의하여 생성 

 

운영체제 및 이미지

  • Public Images
    • Google이 제공하는 운영체제 이미지 ( Ubuntu, CentOS, Red Hat, Windows Server 등)
    • 기본 OS 설치
    • 빠르게 VM을 배포할 때 적합
  • Custom Images
    • 사용자가 직접 생성한 이미지
    • VM 설정(운영 체제, 소프트웨어, 설정)을 저장하여 여러 인스턴스에서 재사용
    • 사용 사례
      • 표준화된 기업 환경 제공
      • 특정 애플리케이션과 설정이 사전 설치된 VM 생성
  • Premium Images (프리미엄 이미지)
    • Google or 파트너사가 제공하는 상용 이미지
    • Windows Server, SQL Server 등
  • Image Families (이미지 패밀리)
    • 동일한 유형의 이미지 그룹
    • 최신 버전의 이미지를 자동으로 선택 가능

 

Computer Engine의 주요 사용 사례

  • 애플리케이션 호스팅 
    • 웹 애플리케이션 및 API 서버를 클라우드에서 실행
  • 데이터 처리
    • 대규모 데이터 분석 작업에 적합
  • 백엔드 인프라 운영
    • 기업 시스템의 백엔드 서버로 활용

 

GCP Computer Engine 생성

GCP 웹 사이트에 접속하여 계정 생성 -> 활성화 -> 검색(Computer Engine) -> 생성 ( 생성 단계에서 수 분이 걸릴수 있음 )

 

Computer Engine 생성 후 모습

 

VM 인스턴스 생성

인스턴스 만들기 클릭하여 VM 인스턴스 생성 화면으로 넘어 갑니다.

 

VM 인스턴스 생성 화면

 

VM 인스턴스를 생성하기 위해서는 제공해야 할 세부 사항이 많습니다. 하나씩 내용을 채워 나가면 됩니다. 

먼저 이름을 작성하고 이에 따른 라벨을 작성할 수 있습니다. 라벨을 예로 들면 환경이 됩니다. (dev, cbt, prod) 

라벨 설정

 

그 다음 구역과 지역을 선택하고 진행합니다. ( 구역과 지역은 기본 제공되는 값을 추천합니다. ) 

구역과 지역에 대한 개념은 아래에서 다루도록 하겠습니다. 

구역과 지역 설정 기본값

 

다음으로 머신 구성을 진행합니다. 머신 구성으로는 위에서 언급한 여러가지 타입이 있습니다.

  • 하드웨어 : 범용 General Purpose E2 구성(기본값)
  • 소프트웨어 : (기본 값 사용 : Debian GNU/Linux 12) 
  • 방화벽 설정 : HTTP 허용

하드웨어 설정

 

소프트웨어 부팅 디스크 및 방화벽 설정

 

 

인스턴스 생성 화면

 

 

SSH 접속 화면

 

생성된 인스턴스 row 오른쪽에 SSH 연결 버튼을 클릭하면 위와 같이 SSH 연결 팝업 창이 띄워진다.

 

Setting up a HTTP Server 

SSH 연결을 통해 콘솔에 접속하여 현제 소프트웨어를 업데이트 합니다.

/) sudo su -> 현재 사용자를 루트 사용자(관리자 권한)로 전환합니다.

  • 리눅스 시스템에서 일반 사용자는 관리자 권한 없이 시스템 변경 작업 (예:소프트웨어 설치, 시스템 설정 변경)을 수행할 수 없습니다.
  • sudo su 명령어는 루트 계정으로 전환하여 관리 작업을 수행할 수 있도록 합니다.
  • sudo 는 일시적으로 루트 권한을 부여하고, su는 사용자를 루트 계정으로 전환합니다.

/) apt update -> 시스템 패키지 목록을 최신으로 업데이트 합니다.

  • apt는 Advanced Package Tool의 약자로, Ubuntu 및 Debian 계열 리눅스 시스템에서 패키지 관리에 사용됩니다.
  • apt update는 패키지 목록(소프트웨어 저장소에 있는 프로그램과 버전 정보)을 새로고침하여 최신 상태로 유지합니다.
  • 새로 추가된 소프트웨어, 업데이트 버전, 보안 패치 등을 확인할 수 있습니다.
  • apt update는 패키지를 설치하거나 업그레이드 하지는 않습니다. 단순히 목록만 갱신합니다.

 

 

/) apt install apache2 -> 명령어를 통해 apache2 웹 서버를 설치합니다.

  • apach2는 전 세계적으로 가장 널리 사용되는 오픈 소스 웹 서버 입니다.
  • apt install은 지정된 패키지를 다운로드 하고 설치하는 명령어 입니다.
  • 설치가 완료되면 웹 서버가 동작할 준비를 합니다.
  • apache2 웹 서버는 /var/www/html/ 디렉토리를 기본 웹 페이지 경로로 사용합니다.
  • 설치후 브라우저에서 서버의 IP 주소를 입력하면 기본 apache2 페이지가 표시됩니다.

 

HTTP 서버는 웹에서 클라이언트(브라우저)와 서버 간의 데이터 통신에 사용되는 프로토콜로 HTTP 요청(GET, POST, DELETE, PUT 등) 과 HTTP 응답을 통해 클라이언트와 서버 간의 데이터를 주고받습니다. HTTP 서버는 클라이언트가 요청한 웹 페이지 (ex:index.html ) 또는 리소스(이미지, 스크립트, image, script 등) 를 제공하고, 서버 측에서 처리된 데이터를 클라이언트에게 반환 합니다.

 

모든 웹 서버는 HTTP 서버이지만, 모든 HTTP 서버가 반드시 웹 서버인 것은 아닙니다.

  • 예르 들어, HTTP 서버는 API 요청을 처리하거나 데이터 전송만 담당할 수 있습니다.
  • 웹 서버는 HTML 문서와 정적 파일뿐 아니라, 동적 콘텐츠(api, database와 연동)도 제공할 수 있습니다.

Apache2는 HTTP 프로토콜을 사용하여 클라이언트의 요청을 처리하는 대표적인 웨 서버 소프트웨어 입니다.

  • 정적 콘텐츠(html, css, image, script)와 동적 콘텐츠(php) 모두 처리 가능
  • http(s) 프로토콜을 지원하며 안전한 데이터 통신 가능

 

웹 서버 실행 상태를 확인 : sudo service apache2 status 입력 

웹 서버 재시작 : sudo service apache2 restart

웹 서버 중지 : sudo service apache2 stop

포트 확인 : sudo netstat -tuln | grep :80 -> 기본적으로 HTTP 요청 포트를 80에서 처리

 

에러 로그 확인 : sudo tail -f /var/log/apache2/error.log

[Wed Nov 20 10:15:12.123456 2024] [core:error] [pid 1234] [client 127.0.0.1:12345] File does not exist: /var/www/html/favicon.ico

 

접속 로그 확인 : suto tail -f /var/log/apache2/access.log

127.0.0.1 - - [20/Nov/2024:10:15:12 +0000] "GET /index.html HTTP/1.1" 200 2326

 

웹 서버 실행 상태 확인

 

위 처럼 apache2 서버를 실행했고 웹 서버 페이지를 보고 싶다면 GCP 화면에서 외부 IP를 클릭하면 화면이 띄워집니다.

또는 http://외부IP

 

External IP ( Public IP )

Public IP는 인터넷 상에서 장치 또는 서버를 식별하기 위해 사용되는 공용 IP 주소 입니다.

  • 인터넷 접근 가능 : 외부 네트워크(인터넷)에서 서버나 장치에 직접 접근할 수 있습니다.
  • 전 세계적으로 고유한 IP 주소 입니다.
  • GCP에서의 사용
    • 클라우드 리소스(VM 인스턴스)가 인터넷을 통해 액세스 가능하도록 설정할 때 사용
  • 사용 사례
    • 웹 서버 : 인터넷 사용자가 접속할 수 있도록 외부 IP가 필요
    • API 서버 : 클라이언트 애플리케이션이 인터넷을 통해 서버와 통신
    • SSH 접근 : 원격에서 서버에 접속하려면 외부 IP 사용
  • 외부에서 쉽게 접근할 수 있으므로 방화벽 규칙이나 IP 제한 설정이 필요

Internal IP ( Private IP )

Private IP는 로컬 네트워크 내에서 장치 간 통신에 사용되는 사설 IP 주소 입니다. 

  • 로컬 네트워크 전용으로 외부 네트워크에서는 사용되지 않으며, 같은 네트워크에서만 통신 가능
  • 동일한 VPC(Virtual Private Cloud) 내의 리소스 간 통신에 사용
  • 사용 사례
    • 백엔드 통신 : 같은 망에 있는 애플리케이션의 서버와 데이터베이스 간의 통신
    • 외부 IP를 사용하지 않아 인터넷 비용 절감
    • 외부로 노출되지 않으므로 공격 노출 면적이 줄어듦
    • 특정 기업 네트워크에만 적용
    • 인터넷에서는 사용할 수 없다

 

External IP (Public) & Internal IP (Private)

범위 전 세계 어디서나 접근 가능 로컬 네트워크 내에서만 접근 가능
고유성 전 세계적으로 고유 동일 네트워크 내에서만 고유
보안 방화벽 및 접근 제한 필요 기본적으로 외부에 노출되지 않음
비용 사용 시 추가 비용 발생 가능 일반적으로 무료
사용 사례 웹 서버, API 서버 백엔드 서버, 데이터베이스 서버

 

 

공통 사용 예시 

  1. 웹 서버는 External IP를 사용하여 인터넷 사용자 요청 처리.
  2. 데이터베이스는 Internal IP를 사용하여 웹 서버와 통신.

 

웹 서버 페이지 오픈 화면

 

Debian Default Page Custom

Default Page에 제일 아래에 나오는 경로를 확인 ( /var/www/html )

아래 처럼 index.html을 변경하고 Default Page 새로고침을 하게되면 바뀐걸 확인할 수 있습니다.

/)echo "Hello World from $(hostname)" > /var/www/html/index.html

Default 페이지 수정

 

Default 화면

 

위 Http 서버 설치처럼 GCP 가상 환경에서는 아주 쉽게 필요한 소프트웨어를 설치하고 사용할 수 있습니다.

 

GCP 중지 및 외부 아이피 변경

VM 인스턴스를 중지하게 되면 내부 IP는 그대로 남아있지만, 외부 IP의 경우 없어지고 새로 시작할 때 새로운 IP를 부여 받게 됩니다. 이때, 인터넷을 통해 접근하기 위해서는 바뀐 외부 IP로 접속을 해야 하며, apache2 웹 서버를 실행 해야 합니다.

중시 시 외부 IP
시작 시 외부 IP

 

새로 할당 받은 외부 IP를 통해 웹 서버 페이지 접근 

/) sudo service apache2 start -> 웹 서버 시작 

 

Static IP Address

Static IP Address는 고정된 IP 주소로, 네트워크 장치나 서버에 할당되며 변경되지 않는 IP 입니다. 이는 반대로 네트워크 재연결 시마다 새로운 IP가 할당되는 동적 IP 주소 (Dynamic IP Address)와 대비 됩니다.

  • 한번 설정된 IP 주소는 변경되지 않고 지속적으로 유지됩니다.
  • 항상 동일한 IP를 사용하므로 외부 장치나 서버가 안정적으로 연결할 수 있습니다.
  • 네트워크 관리자는 특정 장치에 고유한 IP를 지정해 통신과 관리를 용이하게 할 수 있습니다.
  • DNS와도 쉽게 매핑되어 도메인 이름으로 접근 가능
  • 고정 IP를 사용하면 라우터에서 포트 포워딩이나 NAT 설정을 쉽게 적용

GCP 에서 Static IP Address ( 고정 IP )

GCP 에서는 정적 IP를 할당하여 클라우드 리소스 (VM 인스턴스, 로드 밸런서 등)에 고정된 외부 IP 또는 내부 IP를 부여할 수 있습니다.

 

Static External IP

  • 클라우드 리소스가 인터넷에서 항상 동일한 공용 IP 주소를 사용하도록 설정
  • 웹 서버, API 서버, DNS 레코드 설정에 적합 ( www.example.com -> 203.0.113.5 )

Static Internal IP

  • VPC 네트워크 내에서 고정된 사설 IP를 리소스에 할당
  • 백엔드 서버, 데이터베이스 서버 간의 안정적인 통신에 사용

정적 IP ( Static IP, 고정 IP ) & 동적 IP ( Dynamic IP )

특징 Static IP ( 고정 IP ) Dynamic IP ( 동적 IP )
IP 주소 변경 변경되지 않음 네트워크 재연결 시 변경 가능
할당 방법 관리자가 수동으로 설정 DHCP 서버가 자동으로 할당
비용 추가 비용 발생 가능 일반적으로 무료
사용 사례 서버, DNS, 고정 장치 일반적인 개인 사용 인터넷

 

GCP 에서의  Static IP 사용 방법

외부 IP 주소에 Static IP를 할당 하겠습니다.