Compute Engine 사용에 대한 일반적인 팁


이 페이지에서는 Compute Engine을 사용하면서 발생하는 문제에 도움이 될 수 있는 팁을 설명합니다.

특정 문제를 해결하는 데 도움이 필요하면 다음 섹션 중 하나를 참조하세요.

다양한 응답 형식 보기

Google Cloud CLI는 REST API를 호출하여 대부분의 작업을 수행합니다. 쉽게 읽을 수 있는 형식의 결과는 특정 명령어가 반환한 가장 중요한 정보만 표시합니다. 다양한 응답 형식을 보려면 응답을 json, yaml, text와 같은 서로 다른 출력 형식으로 표시하는 --format 플래그를 사용합니다. 예를 들어 JSON으로 된 인스턴스 목록을 보려면 --format json을 사용합니다.

gcloud compute instances list --format json

gcloud compute 로그 보기

gcloud CLI는 $HOME/.config/gcloud/logs에 있는 쿼리 가능한 로그 파일에 로그를 만들고 저장합니다. Linux 기반 운영체제에서 최신 로그 파일을 보려면 다음을 실행하세요.

$ less $(find ~/.config/gcloud/logs | sort | tail -n 1)

로그 파일에는 gcloud CLI 도구를 사용하여 수행된 모든 요청과 응답에 대한 정보가 포함됩니다.

gcloud CLI에서 만든 로그 파일을 자동으로 영구 삭제하려면 삭제 전에 로그 파일을 보관할 최대 일수를 설정하는 max_log_days 속성을 사용합니다. 기본 설정은 30일입니다. 이 속성 값을 0으로 설정하면 로그 가비지 컬렉션이 사용 중지되고 로그 파일이 삭제되지 않습니다.

 gcloud config set core/max_log_days DAYS_TO_RETAIN_LOGS

gcloud CLI 파일 로깅을 사용 중지합니다.

$HOME/.config/gcloud/logs 파일은 로컬 파일 시스템의 공간을 소비합니다. 생성된 로그 양은 로컬 파일 시스템의 용량을 초과할 수 있으므로 다음과 같은 문제가 발생할 수 있습니다.

  • 인스턴스에서 공간 사용률이 100%에 도달합니다.
  • 로컬 파일 시스템에 새 파일을 만들 공간이 없으므로 gcloud CLI 로깅 명령어를 실행할 수 없습니다.

gcloud CLI 동작을 변경하고 파일 로깅을 사용 중지하려면 disable_file_logging 속성을 사용합니다.

 gcloud config set core/disable_file_logging True

리소스 이름 선택

리소스 이름을 선택할 때는 Compute Engine의 지원 및 운영 대시보드에서 이러한 친숙한 이름을 볼 수 있다는 사실에 유의해야 합니다. 따라서 민감한 정보를 노출하지 않는 리소스 이름을 사용하는 것이 좋습니다.

인터넷으로 통신

인스턴스는 다음 두 조건이 모두 충족되는 경우에만 인터넷에 직접 액세스할 수 있습니다.

Cloud NAT 또는 인스턴스 기반 프록시를 통해 연결하여 간접적으로 인터넷에 액세스할 수도 있습니다. 방화벽 규칙 구성을 포함한 추가 고려사항은 인터넷 액세스 요구사항을 참조하세요.

유휴 연결

Google Cloud VPC 네트워크는 연결 개념(예: TCP)에 해당하는 IP 프로토콜에 대해 10분 연결 추적을 구현합니다. 즉, 설정된 연결과 연결된 인바운드 패킷은 지난 10분 동안 연결에 대해 하나 이상의 패킷이 전송되거나 수신되는 한 허용됩니다. 연결에 대해 패킷이 10분 이상 전송되거나 수신되지 않으면 유휴 연결의 추적 항목이 삭제됩니다. 연결의 추적 항목이 삭제된 후에는 하나 이상의 새 아웃바운드 패킷이 전송될 때까지 Google Cloud에서 추가 인바운드 패킷을 허용하지 않습니다. 이 연결 추적은 모든 소스 및 대상(내부 및 외부 IP 주소)에 적용됩니다.

유휴 연결을 방지하려면 다음 안내를 따르세요.

  • 운영체제 TCP 연결 유지 매개변수를 10분 미만 시간으로 설정합니다. 이렇게 하면 해당 기간 내에 하나 이상의 패킷이 전송됩니다.

  • TCP 연결을 여는 애플리케이션이 SO_KEEPALIVE 옵션을 사용 설정한 상태로 TCP 연결을 여는지 확인합니다.

다음 예시에서는 간격 값을 1분으로 하여 운영체제 TCP 연결 유지 매개변수를 설정하는 방법을 보여줍니다. SO_KEEPALIVE를 사용하도록 구성하는 방법은 애플리케이션 또는 소프트웨어 라이브러리의 문서를 참조하세요.

Linux


다음 명령어를 실행합니다.

$ sudo /sbin/sysctl -w net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_intvl=60 net.ipv4.tcp_keepalive_probes=5
재부팅 후에도 설정을 유지하려면 설정을 /etc/sysctl.conf 파일에 추가합니다.

추가 정보는 Linux TCP 연결 유지 방법을 참조하세요.

macOS


다음 명령어를 실행합니다.

$ sudo sysctl -w net.inet.tcp.always_keepalive=1 net.inet.tcp.keepidle=60000 net.inet.tcp.keepinit=60000 net.inet.tcp.keepintvl=60000

Windows


레지스트리 경로 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\에서 다음 설정을 DWORD 데이터 형식으로 추가하거나 이 설정이 이미 있으면 값을 수정합니다.

KeepAliveInterval: 1000
KeepAliveTime: 60000
TcpMaxDataRetransmissions: 10

다른 SSH 사용자로 Compute Engine에 액세스

기본적으로 gcloud compute 명령줄 도구는 SSH를 통해 가상 머신 인스턴스에 연결할 수 있도록 $USER 변수를 사용하여 사용자를 /etc/passwd 파일에 추가합니다. gcloud compute ssh 명령어를 실행할 때 --ssh-key-file PRIVATE_KEY_FILE 플래그를 사용하여 다른 사용자를 지정할 수 있습니다. 예를 들면 다음과 같습니다.

gcloud compute ssh example-instance --ssh-key-file my-private-key-file

자세한 내용은 gcloud 참고 문서를 확인하세요.

직렬 콘솔과 상호작용

인스턴스의 직렬 콘솔에 대한 양방향 액세스를 사용 설정하면 직렬 콘솔을 통해 인스턴스에 연결하고 인스턴스 문제를 해결할 수 있습니다.

자세한 내용은 직렬 콘솔과 상호작용을 참조하세요.

커스텀 이미지로 빌드한 인스턴스의 패킷 파편화 방지

VPC 네트워크에서 Linux 이미지와 Windows Server 이미지의 기본 최대 전송 단위(MTU)는 1460바이트입니다. 하지만 네트워크 MTU를 변경할 수 있습니다. 자세한 내용은 VPC 문서의 최대 전송 단위 개요를 참조하세요.

UDP 소켓을 통해 Compute Engine 인스턴스와 통신하는 클라이언트 애플리케이션을 만들 때 UDP 데이터그램 데이터의 최대 크기를 네트워크 MTU보다 28바이트 작게 설정하면 파편화를 방지할 수 있습니다. 예를 들어 네트워크의 MTU가 1,460바이트인 경우, 패킷당 최대 1,432바이트의 UDP 데이터를 파편화 없이 전송할 수 있습니다. 네트워크의 MTU가 1,500바이트인 경우 최대 1,472바이트의 UDP 데이터를 파편화 없이 전송할 수 있습니다. 이 28바이트는 IPv4 패킷 헤더(20바이트)와 UDP 데이터그램 헤더(8바이트)에 사용됩니다. 네트워크 MTU를 최대 8,896바이트로 설정할 수 있습니다.