[PYTHON] Une histoire sur un débutant de GCP essayant de créer un serveur Micra avec GCE

introduction

C'est une histoire qu'un débutant âgé de moins d'un an et demi pour la première fois dans GCP a construit un serveur Micra pour étudier.

Cible

--Construire un serveur Micra avec GCE --Contrôler l'instance depuis Discord

Constitution

--VM instance 1 (serveur Micra) --VM instance 2 (discord bot)

Diagramme

マイクラサーバ構成図.png

procédure

1. Créez une instance pour le serveur Micra

Quoi qu'il en soit, rien ne démarrera à moins que vous ne créiez une instance pour le serveur Micra. En gros, nous le créerons en nous référant aux documents officiels suivants. La documentation officielle de GCP était assez facile à comprendre, ce qui était d'une grande aide pour les débutants.

Configurer le serveur Minecraft sur Compute Engine (https://cloud.google.com/solutions/gaming/minecraft-server?hl=ja#automate_start_up_and_shutdown_procedures)

Pour l'instance, je l'ai créée avec ce paramètre.

article Contenu
Nom de l'instance mineserver
Région us-central1
zone us-central1-f
séries N1
Type de machine n1-standard-2
Disque de démarrage CentOS 7
Préemptif Efficacité
IP externe de l'interface réseau Créer une adresse IP

** Limites d'instances préemptives ** L'avantage de l'activation des instances préemptives est simplement que le coût de l'instance est un tiers du coût normal. Concernant le serveur Micra cette fois, je pensais qu'il n'y avait presque pas de situation où je restais connecté, j'ai donc choisi une instance préemptive avec la priorité de réduire considérablement le coût. Comme mentionné dans l'objectif, je pense qu'il n'y a pas beaucoup d'obstacle car l'instance est lancée uniquement lorsque vous jouez au jeu depuis Discord et s'arrête lorsqu'elle est terminée.

Veuillez vous référer au document officiel pour plus de détails sur les inconvénients.

Limiter les instances préemptives (https://cloud.google.com/compute/docs/instances/preemptible#understanding_the_preemption_process)

** Ajouter un disque persistant ** Créez des disques supplémentaires comme suit.

article Contenu
Nom du disque minecraft-disk
Type de disque Type persistant SSD
Type de Source Type vide
Taille 50GB

2. Installez et exécutez le serveur Micra

Fondamentalement, nous procéderons sur la base du document officiel décrit ci-dessus, mais Officiellement, le système d'exploitation utilise Debian et j'utilise CentOS, donc certaines commandes sont différentes. Puisque les différences sont décrites, nous vous serions reconnaissants de bien vouloir le lire avec le document officiel.

** Configurer Java Runtime Environment (JRE) **

#Tout d'abord, mettez à jour vers la dernière version du package existant
$ yum update

#Installation JRE
$ yum install -y default-jre-headless

** Téléchargez et installez le serveur Micra ** Officiellement, il est téléchargé en utilisant wget, mais centOS n'a pas wget par défaut, alors installez-le. Pour le lien de téléchargement du serveur Micra, copiez le dernier lien de la page de téléchargement de minecraft et remplacez-le.

#Installez wget
$ yum install wget

#Installation du serveur Micra
$ wget https://launcher.mojang.com/v1/objects/f1a0073671057f01aa843443fef34330281333ce/server.jar

** Premier démarrage du serveur ** La commande ci-dessous dit "-Xms1G -Xmx3G", mais c'est celle qui alloue la mémoire. Il peut être ajusté selon les spécifications de la machine.


#Exécutez le serveur Micra
$ java -Xms1G -Xmx3G -d64 -jar server.jar nogui

** Conditions générales d'utilisation du serveur Micra ** Après le premier démarrage, plusieurs fichiers seront créés dans le même répertoire, et il y a un fichier appelé ʻeula.txt` dedans, alors ouvrez-le avec la commande suivante et éditez-le. Si vous acceptez les termes du CLUF, changez la valeur de «eula» de «false» à «true», enregistrez et quittez.


$ vi eula.txt

#Ci-dessous eula.Contenu du txt

#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula).
#Thu Nov 21 18:02:54 UTC 2019
eula=true  <--Changer ici de "faux" à "vrai"

À ce stade, la configuration minimale requise est terminée. Cependant, si vous laissez ceci tel quel, si vous vous déconnectez du serveur, la session sera coupée et le serveur Micra s'arrêtera. Utilisez screen pour résoudre ce problème. Tout d'abord, installez screen.

#installation d'écran
$ yum install screen

Exécutez le serveur Micra en utilisant l'écran installé. Veuillez vous référer à la page suivante pour savoir comment utiliser les commandes d'écran.

Comment utiliser la commande d'écran Linux

#Exécutez le serveur Micra à l'aide de screen
$ screen -S mcs java -Xms1G -Xmx3G -d64 -jar server.jar nogui

** Autoriser les clients à se connecter au serveur Micra **

Comme indiqué dans la documentation officielle, le serveur Micra utilise 25565 comme port d'écoute par défaut, créez donc une règle de pare-feu pour l'autoriser. Si vous voulez changer le port, vous pouvez le changer en éditant server.properties dans le même répertoire. De plus, server.properties vous permet de modifier divers autres paramètres du serveur Micra.

Fichier de configuration du serveur (server.properties)

** Automatisez le démarrage et l'arrêt de l'instance ** Si vous prévoyez d'arrêter le serveur régulièrement, ajoutez des scripts de démarrage et d'arrêt à votre instance pour automatiser les démarrages et les arrêts fréquemment utilisés.

Cela est nécessaire lors du contrôle ultérieur de l'instance depuis Discord, alors définissez-le maintenant.

Dans la section Instance de VM-> Cliquez sur Nom de l'instance-> Modifier-> Métadonnées personnalisées de la console GCP, ajoutez une nouvelle clé nommée startup-script et ajoutez le script suivant à la valeur ] Copiez sur le terrain.


#!/bin/bash
mount /dev/disk/by-id/google-minecraft-disk /home/minecraft
(crontab -l | grep -v -F "/home/minecraft/backup.sh" ; echo "0 */4 * * * /home/minecraft/backup.sh")| crontab -
cd /home/minecraft
screen -d -m -S mcs java -Xms1G -Xmx3G -d64 -jar server.jar nogui

Pour automatiser la procédure d'arrêt, ajoutez une autre clé, shutdown-script, et copiez le script suivant dans son champ Valeur.

#!/bin/bash
/home/minecraft/backup.sh
sudo screen -r mcs -X stuff '/stop\n'

3. Configurer et exécuter une sauvegarde régulière

Je jouais à Micra et je me suis soudainement écrasé et les données se sont envolées. Quelle triste chose j'ai eu plusieurs fois. Il est essentiel de faire des sauvegardes régulières pour un tel cas.

Fondamentalement, procédez selon l'élément «Planifier une sauvegarde régulière» dans le document officiel.

Tout d'abord, créez un nouveau bucket régional Cloud Storage conformément à la documentation officielle. Remplacez la région où vous créez le seau si vous le souhaitez. Je l'ai créé dans ʻasia-northest1 (Tokyo) `.

Créez un script de sauvegarde et exécutez-le régulièrement en utilisant cron.

#Créer un script de sauvegarde
$ vi /home/minecraft/backup.sh

#Sous la sauvegarde.contenu de sh

#!/bin/bash
screen -r mcs -X stuff '/save-all\n/save-off\n'
/usr/bin/gsutil cp -R ${BASH_SOURCE%/*}/world gs://[BUCKET_NAME]/$(date "+%Y%m%d-%H%M%S")-world
screen -r mcs -X stuff '/save-on\n'

#Modifier les autorisations du script créé
$ chmod 755 /home/minecraft/backup.sh

Pour planifier un travail cron, vous devez écrire dans crontab.


$ crontab -e

#Ci-dessous le contenu de crontab
0 */4 * * * /home/minecraft/backup.sh

Avec les paramètres ci-dessus, backup.sh sera exécuté toutes les 4 heures. Selon le document officiel, cela prend 4 heures, mais quand je m'écrase et que je récupère, il est mentalement difficile de revenir à l'état précédent jusqu'à 4 heures, alors je l'ai fait toutes les heures (rires).

** Enregistrez des sauvegardes pour des générations ** Si vous continuez à sauvegarder, les fichiers deviendront énormes, donc configuré pour ne conserver qu'un certain nombre de générations. «Cloud Storage» a une fonction appelée gestion du cycle de vie des objets. En termes simples, il supprime automatiquement les anciennes sauvegardes.

Pour les paramètres, procédez selon l'élément «Supprimer automatiquement les anciennes sauvegardes» dans le document officiel. Articles avec des paramètres différents du document officiel en 1 point Dans la section Sélectionner la condition de l'objet, sélectionnez Âge. J'ai changé mon âge à 3 jours au lieu de 7 jours. Dans mon cas, je fais des sauvegardes toutes les heures, donc si je pars 24 fois par jour, et si je pars pendant 7 jours, 168 sauvegardes resteront. Comme prévu, il a été fixé à 3 jours en tenant compte du coût.

Résumé

Comment ça s'est passé? C'est la fin de la construction du serveur Micra. La prochaine fois, nous rendrons possible le contrôle du serveur Micra créé cette fois à partir de Discord.

La prochaine fois-> Une histoire sur l'exploitation d'une instance GCP à partir de Discord

Recommended Posts

Une histoire sur un débutant de GCP essayant de créer un serveur Micra avec GCE
Une histoire sur un débutant Linux mettant Linux sur une tablette Windows
Exécutez un serveur Linux avec GCP
Une histoire sur l'exploitation d'une instance GCP à partir de Discord
Une histoire sur l'exécution de Python sur PHP sur Heroku
Construire un environnement Python sur le serveur Sakura VPS
Une histoire sur la création d'un environnement IDE avec WinPython sur un ancien système d'exploitation Windows.
L'histoire du lancement d'un serveur Minecraft depuis Discord
[Partie 1] Configurons un serveur Micra sur Linux
Une histoire sur un ingénieur venu uniquement du côté serveur a créé un portfolio
L'histoire de la construction d'un serveur de cache PyPI (avec Docker) et de me rendre un peu heureux à nouveau
[Introduction à AWS] Mémorandum de création d'un serveur Web sur AWS
Une histoire à propos d'un débutant en python coincé avec aucun module nommé'ttp.server '
Une histoire sur le passage d'un service Web développé personnellement d'un serveur de location à GCP (Google Cloud Platform)
[Windows] L'histoire d'un débutant qui tombe sur le décor de PATH d'Anaconda.
Une histoire sur le fait de vouloir penser à des personnages déformés dans GAE / P
Une histoire rafraîchissante sur Slice en Python
Construire un environnement Python sur Ubuntu
Une histoire de mauvaise humeur sur Slice en Python
Exécutez TensorFlow2 sur le serveur VPS
L'histoire de l'utilisation de la réduction de Python
Une histoire d'essayer d'exécuter JavaScripthon sur Windows et d'abandonner.
Une histoire sur la création d'une chaîne anonyme avec Slack à partir de zéro connaissance
L'histoire d'un débutant en apprentissage profond essayant de classer les guitares avec CNN
Une histoire sur un débutant essayant de configurer CentOS 8 (mémo de procédure)
Construire un serveur de cache Pypi sur QNAP
Une histoire sur un remodelage magique qui met Lubuntu dans un Chromebook
Création d'un environnement LaTeX sur Chrome OS
Construire un serveur Samba sur Arch Linux
Configurons un serveur WEB avec Chromebook
Une histoire sur Python pop and append
Une histoire d'essayer d'installer uwsgi sur une instance EC2 et d'échouer
Une histoire que moi, un débutant en programmation, j'ai créé une application de cartographie d'efficacité commerciale avec GeoDjango
Zakuzaku automatique, Bitcoin. Une histoire sur un débutant en Python faisant un tableau de contrôle de pièces en 1 minute