La blockchain NEM est actuellement en cours de préparation sur le testnet pour le lancement de la prochaine version de Symbol. Au milieu d'un tel timing, je pense qu'il existe une grande quantité de documentation et d'informations de référence sur la façon de construire des nœuds testnet pour la prochaine version de Symbol. Cependant, étonnamment, j'ai eu du mal à trouver de la documentation et des informations de référence sur la façon de créer des nœuds pour la version actuelle de la blockchain NEM. (Il peut aussi y avoir mon propre problème de googleability ...) Pour mon propre rappel, je vais résumer dans cet article comment créer un nœud pour la version actuelle de NEM (appelée NIS1 ... NEM Infrastructure Server) sur Google Cloud Ploatform. Si vous avez des erreurs ou de meilleurs moyens, veuillez me le faire savoir. Je vous remercie.
NIS1 semble utiliser le port 7890 pour http et le port 7778 pour WebSocket. De plus, il semble habituel d'utiliser le port 7891 pour https et le port 7779 pour WebSocket (SSL). Créez une règle de pare-feu comme indiqué dans l'exemple ci-dessous. Le nom et la balise cible sont gratuits, mais la balise cible sera utilisée plus tard dans les paramètres de la VM.
--Nom: nem-http-allow
nem-http-allow
--Plage IP source: 0.0.0.0 / 0
--Protocoles et ports: Cochez les boutons radio pour le protocole et le port spécifiés, cochez la case à gauche de "tcp", et entrez "7890, 7778" à droite de celui-ci.
--Cliquez sur "Créer"--Nom: nem-https-allow
nem-https-allow
--Plage IP source: 0.0.0.0 / 0
--Protocoles et ports: Cochez les boutons radio pour le protocole et le port spécifiés, cochez la case à gauche de "tcp", et mettez 7891, 7779
dans la zone de saisie à droite de celui-ci.
--Cliquez sur "Créer"Après avoir enquêté à l'avance et écouté les rumeurs, il semblait que le traitement intensif fonctionnerait tel quel, alors j'ai d'abord essayé de le régler sur une spécification plus élevée. Lorsque la synchronisation au moment du réglage initial est terminée et que l'état est stable, je pense qu'il vaut mieux envisager de réduire les spécifications compte tenu du coût. L'exemple de configuration de VM est le suivant.
--Nom: nem-mainnet-1 --Région: Asie-Nord-Est1 (Tokyo) --Zone: asie-nord-est1-b
nem-http-allow
et nem-https-allow
Après un certain temps après la création de la VM, le démarrage de la VM sera terminé, et vous pourrez cliquer sur la liste de sélection "SSH" dans la colonne "Connecter" dans la liste des VM. .. Les opérations suivantes sont principalement effectuées sur cet écran.
Java 8 est requis pour exécuter NIS1, alors installez-le. Faisons également d'autres mises à jour. Exécutez la commande suivante.
sudo apt update
sudo apt install -y openjdk-8-jdk
Exécutez la commande suivante
java -version
Si vous obtenez le résultat suivant, l'installation est réussie.
openjdk version "1.8.0_252"
OpenJDK Runtime Environment (build 1.8.0_252-8u252-b09-1ubuntu1-b09)
OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)
L'outil pour exécuter NIS1 sous Linux est compressé dans un fichier tgz et distribué à partir de l'URL suivante, alors téléchargez-le, décompressez-le et utilisez-le. Dernière version au 30 mai 2020: https://bob.nem.ninja/nis-0.6.97.tgz Page avec des liens vers d'autres versions et des données associées: https://bob.nem.ninja/
Vous pouvez le télécharger sous le nom de fichier nis1.tgz avec la commande suivante. Le nom de fichier de nis1.tgz peut être n'importe quoi tant qu'il a une extension de .tgz, mais veuillez lire la partie du nom de fichier de manière appropriée dans la commande de décompression suivante.
curl -o nis1.tgz https://bob.nem.ninja/nis-0.6.97.tgz
(Si vous l'avez téléchargé avec le nom de fichier nis1.tgz au moment du téléchargement) Vous pouvez le décompresser avec la commande suivante. Lorsque vous le décompressez, vous aurez un dossier appelé package.
tar -xzvf nis1.tgz
Accédez au dossier du package avec la commande suivante
cd package
Ouvrez le fichier nix.runNis.sh (script shell pour démarrer le nœud) avec la commande suivante et modifiez-le. Voici un exemple d'utilisation de nano comme éditeur, mais veuillez utiliser l'éditeur de votre choix.
nano nix.runNis.sh
Au minimum, les modifications que vous devez apporter sont:
Avec les paramètres par défaut, il semble qu'il n'y ait pas assez de mémoire pour démarrer normalement. Cette fois, je crée une VM avec 16 Go de mémoire, donc je vais franchir le pas et l'essayer comme un paramètre pouvant utiliser jusqu'à 14 Go de mémoire pour le processus NIS1. (Peut-être qu'une allocation de mémoire maximale légèrement plus conservatrice fonctionnera.)
nohup
au début de la commande de démarrage et &
à la fin de la commande de démarrageLorsque j'exécute le script shell de démarrage du nœud par défaut, NIS1 s'exécute au premier plan. Cela forcera NIS1 à se fermer lorsque vous vous déconnecterez. En ajoutant nohup
au début de la commande de démarrage et &
à la fin de la commande de démarrage, il semble qu'elle puisse être exécutée en arrière-plan même si vous n'êtes pas connecté.
変更前のnix.runNis.sh
#!/bin/bash
cd nis
java -Xms512M -Xmx1G -cp ".:./*:../libs/*" org.nem.deploy.CommonStarter
cd -
変更後のnix.runNis.sh
#!/bin/bash
cd nis
nohup java -Xms512M -Xmx14G -cp ".:./*:../libs/*" org.nem.deploy.CommonStarter &
cd -
Lorsque nano est utilisé comme éditeur, pour écraser et enregistrer, appuyez d'abord sur "Ctrl" + "X", puis sur "Y", et lorsque le nom du fichier est affiché, appuyez sur "Entrée".
Maintenant que vous êtes prêt à démarrer le nœud, démarrez le nœud avec la commande suivante.
./nix.runNis.sh
Comme il est configuré pour fonctionner en arrière-plan, aucun message spécial, etc. n'est affiché à l'écran même après le démarrage, alors appuyez sur l'API pour obtenir les informations de hauteur de bloc et de nœud de l'extérieur et une valeur appropriée sera renvoyée. Allons vérifier. Veuillez lire l'adresse IP comme votre propre environnement.
http://35.200.86.73:7890/chain/height
{"height":44967}
Comme c'est juste après le lancement, vous pouvez voir que la synchronisation n'est pas encore terminée et que la synchronisation n'est terminée qu'à un endroit bien inférieur à la dernière hauteur de bloc. Ce nombre augmentera petit à petit, et lorsqu'il rattrapera la dernière hauteur de bloc, la construction des nœuds sera séparée une fois.
À l'origine, afin de raccourcir le temps requis pour cette synchronisation, il est possible de télécharger et d'étendre séparément les informations de base de données de la blockchain jusqu'à un certain point, je voudrais donc ajouter cette méthode quelque part. Je suis.
http://35.200.86.73:7890/node/info
{
"metaData": {
"features": 1,
"application": null,
"networkId": 104,
"version": "0.6.97-BETA",
"platform": "Private Build (1.8.0_252) on Linux"
},
"endpoint": {
"protocol": "http",
"port": 7890,
"host": "35.200.86.73"
},
"identity": {
"name": "NBAKSE34ZOWCIZC4AUU2XXMNAANH7BSXMGV4AYEC",
"public-key": "79140632da5b00327bba8d5cb3b258d04843c10520cb757fde1a5a859f0ae567"
}
}
De plus, si vous accédez à l'API des informations de nœud, etc., vous approfondirez votre confiance dans vos propres paramètres. Vous pouvez voir que networkId 104 indique MAIN_NET, qui indique les versions NIS1 et Java, ainsi que le protocole API, le port et le nom d'hôte. De plus, ce que j'ai trouvé un peu intéressant, c'est qu'un compte NEM est automatiquement généré en tant qu'identité lorsque le nœud est démarré et utilisé comme identifiant. (Je me demande si ces comptes sont liés aux paramètres de récolte, etc.)
Après y avoir travaillé, je me suis dit: "Est-ce que c'est juste le script shell?" (Donc, il y a beaucoup de parties qui n'ont pas besoin d'être expliquées ... et vous ne pourrez peut-être pas trouver beaucoup d'informations comme une procédure solide ... Bien sûr, cela se fait en interne après le démarrage du script shell. J'ai l'impression qu'être là-bas est très compliqué ...)
Démarrez-le pour le moment et laissez-le tranquille! Si le niveau est bon (≒ ce niveau d'article), j'ai une impression simple.
Cependant, où est la correction de la valeur maximale de la mémoire, le point où elle sera exécutée au premier plan par défaut, et où mettre le programme principal NIS1? Je pense qu'il y a des "points de dépendance" à certains égards, donc j'ai senti que s'il n'y avait pas de tels éléments de dépendance par défaut, ce serait heureux pour les utilisateurs qui construiront NIS1 à l'avenir.
Je voudrais ajouter le contenu suivant en temps voulu.
J'ai évoqué les informations suivantes. Merci à tous les pionniers.
Recommended Posts