개요
이 실습에서는 게임 애플리케이션인 Minecraft 서버를 설정합니다.
Minecraft 서버 소프트웨어는 Compute Engine 인스턴스에서 실행됩니다.
10GB 부팅 디스크, 가상 CPU(vCPU) 2개, 4GB RAM이 포함된 e2-medium 머신 유형을 사용합니다. 이 머신 유형은 Debian Linux를 기본으로 실행합니다.
Minecraft 서버의 월드 데이터를 위한 공간을 충분히 확보하기 위해 고성능 50GB 영구 솔리드 스테이트 드라이브(SSD)도 인스턴스에 연결합니다. 이 전용 Minecraft 서버는 최대 50명의 플레이어를 지원할 수 있습니다.
목표
이번 실습에서는 다음 작업의 실행 방법을 알아봅니다.
- 애플리케이션 서버 맞춤설정
- 필요한 소프트웨어 설치 및 구성
- 네트워크 액세스 구성
- 정기 백업 예약
설정 및 요구사항
각 실습에서는 정해진 기간 동안 새 Google Cloud 프로젝트와 리소스 집합이 무료로 제공됩니다.
-
실습 시작 버튼을 클릭합니다. 실습 비용을 결제해야 하는 경우 결제 수단을 선택할 수 있는 팝업이 열립니다.
왼쪽에는 다음과 같은 항목이 포함된 실습 세부정보 패널이 있습니다.
-
Google Cloud 콘솔 열기 버튼
- 남은 시간
- 이 실습에 사용해야 하는 임시 사용자 인증 정보
- 필요한 경우 실습 진행을 위한 기타 정보
-
Google Cloud 콘솔 열기를 클릭합니다(Chrome 브라우저를 실행 중인 경우 마우스 오른쪽 버튼으로 클릭하고 시크릿 창에서 링크 열기를 선택합니다).
실습에서 리소스가 가동되면 다른 탭이 열리고 로그인 페이지가 표시됩니다.
팁: 두 개의 탭을 각각 별도의 창으로 나란히 정렬하세요.
참고: 계정 선택 대화상자가 표시되면 다른 계정 사용을 클릭합니다.
-
필요한 경우 아래의 사용자 이름을 복사하여 로그인 대화상자에 붙여넣습니다.
{{{user_0.username | "Username"}}}
실습 세부정보 패널에서도 사용자 이름을 확인할 수 있습니다.
-
다음을 클릭합니다.
-
아래의 비밀번호를 복사하여 시작하기 대화상자에 붙여넣습니다.
{{{user_0.password | "Password"}}}
실습 세부정보 패널에서도 비밀번호를 확인할 수 있습니다.
-
다음을 클릭합니다.
중요: 실습에서 제공하는 사용자 인증 정보를 사용해야 합니다. Google Cloud 계정 사용자 인증 정보를 사용하지 마세요.
참고: 이 실습에 자신의 Google Cloud 계정을 사용하면 추가 요금이 발생할 수 있습니다.
-
이후에 표시되는 페이지를 클릭하여 넘깁니다.
- 이용약관에 동의합니다.
- 임시 계정이므로 복구 옵션이나 2단계 인증을 추가하지 않습니다.
- 무료 체험판을 신청하지 않습니다.
잠시 후 Google Cloud 콘솔이 이 탭에서 열립니다.
참고: Google Cloud 제품 및 서비스 목록이 있는 메뉴를 보려면 왼쪽 상단의 탐색 메뉴를 클릭하거나 검색창에 제품 또는 서비스 이름을 입력합니다.
작업 1. VM 만들기
이 작업에서는 Minecraft 서버를 호스팅하고 소프트웨어를 설치할 VM을 만듭니다.
고급 옵션을 사용하여 VM 정의
- Google Cloud 콘솔의 탐색 메뉴(
)에서 Compute Engine > VM 인스턴스를 클릭합니다.
-
인스턴스 만들기를 클릭합니다.
- 다음을 지정하고 나머지 설정은 기본값으로 둡니다.
속성 |
값(지정된 대로 값 입력 또는 옵션 선택) |
이름 |
mc-server |
리전 |
|
영역 |
|
-
OS 및 스토리지를 클릭합니다.
-
부팅 디스크 이미지가 Debian GNU/Linux 12(bookworm)로 표시되는지 확인합니다. 표시되지 않으면 변경을 클릭하고 버전 드롭다운 목록에서 해당 옵션을 선택한 다음 선택을 클릭합니다.
-
새 디스크 추가를 클릭합니다.
-
다음을 지정하고 나머지 설정은 기본값으로 둡니다.
속성 |
값(지정된 대로 값 입력 또는 옵션 선택) |
이름 |
minecraft-disk |
디스크 소스 유형 |
빈 디스크 |
디스크 설정 |
SSD 영구 디스크 |
크기(GB) |
50 |
암호화 |
Google 관리 암호화 키 |
-
저장을 클릭합니다. 이렇게 하면 디스크가 생성되고 VM이 생성될 때 자동으로 VM에 연결됩니다.
-
네트워킹을 클릭합니다.
-
다음을 지정하고 나머지 설정은 기본값으로 둡니다.
속성 |
값(지정된 대로 값 입력 또는 옵션 선택) |
네트워크 태그 |
minecraft-server |
네트워크 인터페이스 |
인터페이스를 수정하려면 기본값을 클릭합니다. |
외부 IPv4 주소 |
고정 외부 IP 주소 예약 |
이름 |
mc-server-ip |
-
예약을 클릭한 다음 완료를 클릭합니다.
-
보안을 클릭합니다.
-
다음을 지정하고 나머지 설정은 기본값으로 둡니다.
속성 |
값(지정된 대로 값 입력 또는 옵션 선택) |
ID 및 API 액세스 > 액세스 범위 |
각 API에 액세스 설정 |
스토리지 |
읽기 쓰기 |
-
만들기를 클릭합니다.
작업 2. 데이터 디스크 준비
이 작업에서는 Minecraft 디스크를 포맷하고 마운트합니다.
디렉터리 생성과 디스크 포맷 및 마운트
디스크가 인스턴스에 연결되어 있지만 아직 마운트되거나 포맷되지 않았습니다.
-
mc-server의 경우 SSH를 클릭하여 터미널을 열고 연결합니다.
- 데이터 디스크의 마운트 지점 역할을 하는 디렉터리를 만들려면 다음 명령어를 실행합니다.
sudo mkdir -p /home/minecraft
- 디스크를 포맷하려면 다음 명령어를 실행합니다.
sudo mkfs.ext4 -F -E lazy_itable_init=0,\
lazy_journal_init=0,discard \
/dev/disk/by-id/google-minecraft-disk
결과(출력 예시):
mke2fs 1.47.0 (5-Feb-2023)
Discarding device blocks: done
Creating filesystem with 13107200 4k blocks and 3276800 inodes
Filesystem UUID: 3d5b0563-f29e-4107-ad1a-ba7bf11dcf7c
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
- 다음 명령어를 실행하여 디스크를 마운트합니다.
sudo mount -o discard,defaults /dev/disk/by-id/google-minecraft-disk /home/minecraft
디스크가 마운트된 후에는 출력이 표시되지 않습니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
VM 만들기 및 데이터 디스크 준비
작업 3. 애플리케이션 설치 및 실행
이 작업에서는 Minecraft 애플리케이션을 설치하고 실행합니다. Minecraft 서버는 Java 가상 머신(JVM)을 기반으로 실행되므로 Java 런타임 환경(JRE)이 실행되어야 합니다. 서버에는 그래픽 사용자 인터페이스가 필요 없으므로 헤드리스 버전의 JRE를 사용합니다.
이렇게 하면 머신에서 JRE의 리소스 사용량이 줄어, 필요한 경우 Minecraft 서버에 자체 리소스 사용량을 확장할 수 있는 공간이 충분히 있는지 확인할 수 있습니다.
Java 런타임 환경(JRE)과 Minecraft 서버 설치
-
mc-server용 SSH 터미널에서 VM의 Debian 저장소를 업데이트하려면 다음 명령어를 실행합니다.
sudo apt-get update
- 저장소가 업데이트된 후 헤드리스 JRE를 설치하려면 다음 명령어를 실행합니다.
sudo apt-get install -y default-jre-headless
- 영구 디스크가 마운트된 디렉터리로 이동하려면 다음 명령어를 실행합니다.
cd /home/minecraft
-
wget을 설치하려면 다음 명령어를 실행합니다.
sudo apt-get install wget
-
계속 진행할지 묻는 메시지가 나타나면 Y를 입력합니다.
-
현재 Minecraft 서버 JAR 파일(1.11.2 JAR)을 다운로드하려면 다음 명령어를 실행합니다.
sudo wget https://launcher.mojang.com/v1/objects/d0d0fe2b1dc6ab4c65554cb734270872b72dadd6/server.jar
Minecraft 서버 초기화
- Minecraft 서버를 초기화하려면 다음 명령어를 실행합니다.
sudo java -Xmx1024M -Xms1024M -jar server.jar nogui
결과(예시 출력):
[21:01:54] [main/ERROR]: Failed to load properties from file: server.properties
[21:01:54] [main/WARN]: Failed to load eula.txt
[21:01:54] [main/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.
참고: 최종 사용자 라이선스 계약(EULA) 약관에 동의해야만 Minecraft 서버가 실행됩니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
Java 런타임 환경(JRE)과 Minecraft 서버 설치
- Minecraft 서버의 첫 번째 초기화에서 생성된 파일을 보려면 다음 명령어를 실행합니다.
sudo ls -l
참고: server.properties
파일을 수정하여 Minecraft 서버의 기본 동작을 변경할 수 있습니다.
- EULA를 편집하려면 다음 명령어를 실행합니다.
sudo nano eula.txt
- 파일의 마지막 줄을
eula=false
에서 eula=true
로 변경합니다.
-
Ctrl+O와 ENTER 키를 눌러 파일을 저장한 다음 Ctrl+X를 눌러 nano를 종료합니다.
참고: 아직 Minecraft 서버를 다시 시작하지 마세요. 다음 절차에서는 다른 기술을 사용합니다.
Minecraft 서버를 시작하기 위한 가상 터미널 화면 만들기
지금 Minecraft 서버를 다시 시작하면 SSH 세션의 수명과 연결됩니다. 즉, SSH 터미널을 닫으면 서버도 종료됩니다. 이 문제를 방지하기 위해 가상 터미널을 만들 수 있는 애플리케이션인 screen
을 사용하여 가상 터미널을 '분리된' 백그라운드 프로세스로 만들거나 '다시 연결된' 포그라운드 프로세스로 만들 수 있습니다. 가상 터미널이 백그라운드로 분리되면 로그인 여부와 상관없이 실행됩니다.
-
screen
을 설치하려면 다음 명령어를 실행합니다.
sudo apt-get install -y screen
-
screen
가상 터미널에서 Minecraft 서버를 시작하려면 다음 명령어를 실행합니다(-S
플래그를 사용하여 터미널 이름을 mcs
로 지정).
sudo screen -S mcs java -Xmx1024M -Xms1024M -jar server.jar nogui
결과(예시 출력):
...
[21:06:06] [Server-Worker-1/INFO]: Preparing spawn area: 83%
[21:06:07] [Server-Worker-1/INFO]: Preparing spawn area: 85%
[21:06:07] [Server-Worker-1/INFO]: Preparing spawn area: 86%
[21:06:08] [Server-Worker-1/INFO]: Preparing spawn area: 88%
[21:06:08] [Server-Worker-1/INFO]: Preparing spawn area: 89%
[21:06:09] [Server-Worker-1/INFO]: Preparing spawn area: 91%
[21:06:09] [Server-Worker-1/INFO]: Preparing spawn area: 93%
[21:06:10] [Server-Worker-1/INFO]: Preparing spawn area: 95%
[21:06:10] [Server-Worker-1/INFO]: Preparing spawn area: 98%
[21:06:11] [Server-Worker-1/INFO]: Preparing spawn area: 99%
[21:06:11] [Server thread/INFO]: Time elapsed: 55512 ms
[21:06:11] [Server thread/INFO]: Done (102.484s)! For help, type "help"
screen에서 분리 및 SSH 세션 닫기
- screen 터미널을 분리하려면 Ctrl+A와 Ctrl+D를 차례로 누릅니다. 터미널은 백그라운드에서 계속 실행됩니다. 터미널을 다시 연결하려면 다음 명령어를 실행합니다.
sudo screen -r mcs
- 필요한 경우 Ctrl+A와 Ctrl+D를 차례로 눌러 screen 터미널을 종료합니다.
- SSH 터미널을 종료하려면 다음 명령어를 실행하세요.
exit
수고하셨습니다. VM을 설정 및 맞춤설정하고 애플리케이션 소프트웨어인 Minecraft 서버를 설치 및 구성했습니다.
작업 4. 클라이언트 트래픽 허용
이 작업에서는 Minecraft 서버에 대한 클라이언트 연결을 허용하도록 방화벽 규칙을 구성합니다. 지금까지는 서버에 외부 고정 IP 주소가 있지만 방화벽 규칙이 설정되어 있지 않아 트래픽을 수신할 수 없습니다.
Minecraft 서버는 기본적으로 TCP 포트 25565를 사용합니다.
방화벽 규칙 만들기
- Google Cloud 콘솔의 탐색 메뉴(
)에서 VPC 네트워크 > 방화벽을 클릭합니다.
-
방화벽 규칙 만들기를 클릭합니다.
- 다음을 지정하고 나머지 설정은 기본값으로 둡니다.
속성 |
값(지정된 대로 값 입력 또는 옵션 선택) |
이름 |
minecraft-rule |
대상 |
지정된 대상 태그 |
대상 태그 |
minecraft-server |
소스 필터 |
IPv4 범위 |
소스 IPv4 범위 |
0.0.0.0/0 |
프로토콜 및 포트 |
지정된 프로토콜 및 포트 |
-
tcp의 경우 포트 25565를 지정합니다.
-
만들기를 클릭합니다.
이제 사용자는 자체 Minecraft 클라이언트에서 서버에 액세스할 수 있습니다.
서버 가용성 확인
- Cloud 콘솔의 탐색 메뉴(
)에서 VPC 네트워크를 클릭합니다.
- 왼쪽 창에서 IP 주소를 클릭합니다.
-
mc-server VM의 외부 IP 주소를 찾아 복사합니다.
-
Minecraft Server Status(Minecraft 서버 상태)를 사용하여 Minecraft 서버를 테스트합니다.
참고: 위의 웹사이트가 작동하지 않으면 다른 사이트나 Chrome 확장 프로그램을 사용할 수 있습니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
클라이언트 트래픽 허용
작업 5. 정기 백업 예약
이 작업에서는 Minecraft 월드 데이터를 Cloud Storage에 백업하도록 시스템을 구성합니다. 애플리케이션 데이터 백업은 일반적인 활동입니다.
Cloud Storage 버킷 만들기
- Google Cloud 콘솔의 탐색 메뉴(
)에서 Compute Engine > VM 인스턴스를 클릭합니다.
-
mc-server의 경우 SSH를 클릭합니다.
- 전역적으로 고유한 버킷 이름을 만들고 환경 변수 YOUR_BUCKET_NAME에 저장합니다. 고유한 이름을 만들기 위해 프로젝트 ID를 사용할 수 있습니다. 다음 명령어를 실행합니다.
export YOUR_BUCKET_NAME=<Enter your bucket name here>
- echo를 사용하여 확인합니다.
echo $YOUR_BUCKET_NAME
- Cloud SDK의 일부인 gcloud storage 도구를 사용하여 버킷을 만들려면 다음 명령어를 실행합니다.
gcloud storage buckets create gs://$YOUR_BUCKET_NAME-minecraft-backup
참고: 이 명령어가 실패했다면 고유한 버킷 이름을 만들지 않았기 때문일 수 있습니다. 명령어가 실패한 경우, 다른 버킷 이름을 선택하고 환경 변수를 업데이트한 다음 버킷을 다시 만들어 보세요.
참고: 이 환경 변수를 영구적으로 만들려면 다음 명령어를 실행하여 루트의 .profile에 추가할 수 있습니다.
echo YOUR_BUCKET_NAME=$YOUR_BUCKET_NAME >> ~/.profile
백업 스크립트 만들기
- mc-server SSH 터미널에서 홈 디렉터리로 이동합니다.
cd /home/minecraft
- 스크립트를 만들려면 다음 명령어를 실행합니다.
sudo nano /home/minecraft/backup.sh
- 다음 스크립트를 복사하여 파일에 붙여넣습니다.
#!/bin/bash
screen -r mcs -X stuff '/save-all\n/save-off\n'
/usr/bin/gcloud storage cp -R ${BASH_SOURCE%/*}/world gs://${YOUR_BUCKET_NAME}-minecraft-backup/$(date "+%Y%m%d-%H%M%S")-world
screen -r mcs -X stuff '/save-on\n'
-
Ctrl+O와 ENTER 키를 눌러 파일을 저장하고 Ctrl+X를 눌러 nano를 종료합니다.
참고: 스크립트는 서버 월드 데이터의 현재 상태를 저장하고 서버의 자동 저장 기능을 일시중지합니다. 그런 다음 서버의 월드 데이터 디렉터리(world)를 백업하고 해당 콘텐츠를 Cloud Storage 버킷의 타임스탬프 지정 디렉터리(<timestamp>-world)에 배치합니다. 스크립트가 데이터 백업을 완료하면 Minecraft 서버에서 자동 저장이 다시 시작합니다.
- 스크립트를 실행 가능하게 만들려면 다음 명령어를 실행합니다.
sudo chmod 755 /home/minecraft/backup.sh
백업 스크립트 테스트 및 크론 작업 예약
- mc-server SSH 터미널에서 백업 스크립트를 실행합니다.
. /home/minecraft/backup.sh
- 스크립트가 완료되면 Cloud 콘솔로 돌아갑니다.
- 백업 파일이 작성되었는지 확인하려면 탐색 메뉴(
)에서 Cloud Storage > 버킷을 클릭합니다.
- 백업 버킷 이름을 클릭합니다. 날짜-시간 스탬프 이름이 있는 폴더가 표시됩니다. 백업이 작동하고 있는 것을 확인했으므로 크론 작업을 예약하여 작업을 자동화할 수 있습니다.
- mc-server SSH 터미널에서 편집할 수 있도록 크론 테이블을 엽니다.
sudo crontab -e
- 편집기를 선택하라는 메시지가 표시되면 nano에 해당하는 숫자를 입력하고 ENTER를 누릅니다.
- 크론 테이블의 하단에 다음 줄을 붙여넣습니다.
0 */4 * * * /home/minecraft/backup.sh
참고: 이 줄은 크론이 4시간마다 백업을 실행하도록 지시합니다.
-
Ctrl+O와 ENTER를 눌러 크론 테이블을 저장하고 Ctrl+X를 눌러 nano를 종료합니다.
참고: 이렇게 하면 Cloud Storage에서 한 달에 약 300개의 백업이 생성되므로 요금이 부과되지 않도록 정기적으로 삭제하는 것이 좋습니다. Cloud Storage는 비용 관리에 도움이 되도록 객체의 TTL(수명) 설정, 객체의 이전 버전 보관, 객체의 스토리지 클래스 '다운그레이드'를 위한 객체 수명 주기 관리 기능을 제공합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
정기 백업 예약
작업 6. 서버 유지관리
이 작업에서는 서버 유지관리를 위해 서버에 연결하고 종료합니다.
SSH를 통해 서버에 연결하고 중지한 후 VM을 종료합니다.
- mc-server SSH 터미널에서 다음 명령어를 실행합니다.
sudo screen -r -X stuff '/stop\n'
- Google Cloud 콘솔의 탐색 메뉴(
)에서 Compute Engine > VM 인스턴스를 클릭합니다.
-
mc-server를 선택합니다.
-
중지를 클릭합니다.
- 확인 대화상자에서 중지를 클릭하여 확인합니다.
SSH 세션에서 로그아웃됩니다.
참고: 인스턴스를 다시 시작하려면 인스턴스 페이지를 방문한 후 시작을 클릭합니다. Minecraft 서버를 다시 시작하려면 이전과 마찬가지로 인스턴스와 SSH 연결을 설정하고 영구 디스크를 다시 마운트한 후 새로운 screen 터미널에서 Minecraft 서버를 시작합니다.
시작 및 종료 스크립트로 서버 유지관리 자동화
영구 디스크를 마운트하고 화면에서 서버 애플리케이션을 실행하는 수동 프로세스를 따르는 대신 메타데이터 스크립트를 사용하여 시작 스크립트와 종료 스크립트를 만들어 이를 수행할 수 있습니다.
-
mc-server를 클릭합니다.
-
수정을 클릭합니다.
-
메타데이터에서 + 항목 추가를 클릭하고 다음과 같이 지정합니다.
키 |
값 |
startup-script-url |
https://storage.googleapis.com/cloud-training/archinfra/mcserver/startup.sh |
shutdown-script-url |
https://storage.googleapis.com/cloud-training/archinfra/mcserver/shutdown.sh |
참고: shutdown-script-url을 추가하려면 항목 추가를 클릭해야 합니다. 인스턴스를 다시 시작하면 시작 스크립트가 자동으로 Minecraft 디스크를 적절한 디렉터리에 마운트하고, screen 세션에서 Minecraft 서버를 시작하고, 세션을 분리합니다. 인스턴스를 중지하면 인스턴스가 종료되기 전에 종료 스크립트가 Minecraft 서버를 종료합니다. 이 스크립트를 Cloud Storage에 저장하는 것이 좋습니다.
-
저장을 클릭합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
서버 유지관리
작업 7. 복습
이 실습에서는 기본 소프트웨어(헤드리스 JRE) 및 애플리케이션 소프트웨어(Minecraft 게임 서버)를 설치하여 맞춤형 가상 머신 인스턴스를 생성했습니다. 고속 SSD 데이터 디스크를 연결하고 준비하여 VM을 맞춤설정하고, 주소의 일관성 유지를 위해 고정 외부 IP를 예약했습니다. 그런 다음 온라인으로 게임 서버의 가용성을 확인했습니다.
서버의 데이터를 Cloud Storage 버킷에 백업하도록 백업 시스템을 설정한 후 백업 시스템을 테스트했습니다. 그런 다음 크론을 사용하여 백업을 자동화했습니다. 마지막으로 서버의 정상적인 시작 및 종료를 위해 메타데이터를 사용하여 유지관리 스크립트를 설정했습니다.
실습 종료하기
실습을 완료하면 실습 종료를 클릭합니다. Google Cloud Skills Boost에서 사용된 리소스를 자동으로 삭제하고 계정을 지웁니다.
실습 경험을 평가할 수 있습니다. 해당하는 별표 수를 선택하고 의견을 입력한 후 제출을 클릭합니다.
별점의 의미는 다음과 같습니다.
- 별표 1개 = 매우 불만족
- 별표 2개 = 불만족
- 별표 3개 = 중간
- 별표 4개 = 만족
- 별표 5개 = 매우 만족
의견을 제공하고 싶지 않다면 대화상자를 닫으면 됩니다.
의견이나 제안 또는 수정할 사항이 있다면 지원 탭을 사용하세요.
Copyright 2025 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.