[GO] So erstellen Sie einen NEM-Knoten (aktuelle Version) (NIS1: NEM Infrastructure Server)

Die NEM-Blockchain wird derzeit im Testnetz auf den Start der nächsten Version von Symbol vorbereitet. Inmitten eines solchen Zeitpunkts gibt es meines Erachtens zahlreiche Dokumentationen und Referenzinformationen zum Erstellen von Testnetzknoten für die nächste Version von Symbol. Überraschenderweise fiel es mir jedoch schwer, Dokumentationen und Referenzinformationen zum Erstellen von Knoten für die aktuelle Version der NEM-Blockchain zu finden. (Möglicherweise liegt auch mein eigenes Problem mit der Googleabilität vor ...) Zu meiner eigenen Erinnerung werde ich in diesem Artikel zusammenfassen, wie ein Knoten für die aktuelle Version von NEM (NIS1 ... NEM Infrastructure Server) auf Google Cloud Ploatform erstellt wird. Wenn Sie Fehler oder bessere Möglichkeiten haben, lassen Sie es mich bitte wissen. Vielen Dank.

Überblick

  1. Erstellen Sie eine Firewall-Regel
  2. Erstellen Sie eine VM mit GCE und melden Sie sich mit SSH an
  3. Java-Installation
  4. Laden Sie den Hauptteil von NIS1 herunter und entpacken Sie ihn
  5. Ändern Sie das Knotenstart-Skript
  6. Starten Sie den Knoten
  7. Bestätigung nach dem Start

Verfahren

1. Erstellen Sie eine Firewall-Regel

NIS1 scheint Port 7890 für http und Port 7778 für WebSocket zu verwenden. Außerdem scheint es üblich zu sein, Port 7891 für https und Port 7779 für WebSocket (SSL) zu verwenden. Erstellen Sie eine Firewall-Regel wie im folgenden Beispiel gezeigt. Der Name und das Ziel-Tag sind kostenlos, das Ziel-Tag wird jedoch später in den VM-Einstellungen verwendet.

  1. Klicken Sie oben links auf das Navigationsmenü (dreizeiliges Symbol)
  2. Klicken Sie auf "VPC-Netzwerk" (scrollen Sie nach unten, um es anzuzeigen).
  3. Klicken Sie auf "Firewall"
  4. Klicken Sie auf "Firewall-Regel erstellen", um die folgenden beiden Firewall-Regeln zu "erstellen"

1. Firewall-Regel: für http

--Name: nem-http-allow

Zweite Firewall-Regel: für https

--Name: nem-https-allow

2. Erstellen Sie eine VM mit GCE

Als Ergebnis der Vorabuntersuchung und des Hörens von Gerüchten schien es, als würde eine schwere Verarbeitung so ablaufen, wie sie war, und so versuchte ich zunächst, sie auf eine höhere Spezifikation einzustellen. Wenn die Synchronisation zum Zeitpunkt der Ersteinstellung abgeschlossen ist und der Zustand stabil ist, ist es meiner Meinung nach besser, die Spezifikationen unter Berücksichtigung der Kosten einzugrenzen. Das Beispiel für die VM-Einstellung lautet wie folgt.

Beispiel für eine VM-Einstellung

--Name: nem-mainnet-1

SSH-Anmeldung bei VM

Nach einer Weile nach dem Erstellen der VM ist der Start der VM abgeschlossen, und Sie können auf die Auswahlliste "SSH" in der Spalte "Verbinden" in der Liste der VMs klicken. Wenn Sie darauf klicken, wird der Bildschirm für die SSH-Anmeldung bei der VM im Browser geöffnet. .. Nachfolgende Operationen werden hauptsächlich auf diesem Bildschirm ausgeführt.

3. Java-Installation

Java 8 ist erforderlich, um NIS1 auszuführen. Installieren Sie es daher. Lassen Sie uns auch andere Updates durchführen. Führen Sie den folgenden Befehl aus.

aktualisieren

sudo apt update

Java 8 installieren (OpenJDK 8 um genau zu sein)

sudo apt install -y openjdk-8-jdk

Bestätigen Sie die Java 8-Installation

Führen Sie den folgenden Befehl aus

java -version

Wenn Sie das folgende Ergebnis erhalten, ist die Installation erfolgreich.

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)

4. Laden Sie den Hauptteil von NIS1 herunter und entpacken Sie ihn

Das Tool zum Ausführen von NIS1 unter Linux wird in eine TGZ-Datei komprimiert und über die folgende URL verteilt. Laden Sie es herunter, dekomprimieren Sie es und verwenden Sie es. Neueste Version zum 30. Mai 2020: https://bob.nem.ninja/nis-0.6.97.tgz Seite mit Links zu anderen Versionen und verwandten Daten: https://bob.nem.ninja/

herunterladen

Sie können es mit dem folgenden Befehl als Dateinamen nis1.tgz herunterladen. Der Dateiname von nis1.tgz kann beliebig sein, solange er die Erweiterung .tgz hat. Lesen Sie jedoch im folgenden Dekomprimierungsbefehl den Teil des Dateinamens entsprechend.

curl -o nis1.tgz https://bob.nem.ninja/nis-0.6.97.tgz

Auftauen

(Wenn Sie es zum Zeitpunkt des Downloads mit dem Dateinamen nis1.tgz heruntergeladen haben) Sie können es mit dem folgenden Befehl entpacken. Wenn Sie es entpacken, haben Sie einen Ordner namens package.

tar -xzvf nis1.tgz

5. Knotenstart-Skript behoben

Wechseln Sie mit dem folgenden Befehl in den Paketordner

cd package

Öffnen Sie die Datei nix.runNis.sh (Shell-Skript zum Starten des Knotens) mit dem folgenden Befehl und ändern Sie sie. Hier ist ein Beispiel für die Verwendung von Nano als Editor. Verwenden Sie jedoch den Editor Ihrer Wahl.

nano nix.runNis.sh

Die Änderungen, die Sie mindestens vornehmen müssen, sind:

Entspannte maximale Speichernutzung

Bei den Standardeinstellungen scheint nicht genügend Speicher vorhanden zu sein, um normal zu starten. Dieses Mal erstelle ich eine VM mit 16 GB Arbeitsspeicher, daher werde ich den Sprung wagen und sie als Einstellung ausprobieren, die bis zu 14 GB Arbeitsspeicher für den NIS1-Prozess verwenden kann. (Möglicherweise funktioniert sogar eine etwas konservativere maximale Speicherzuweisung.)

Fügen Sie am Anfang des Startbefehls "nohup" und am Ende des Startbefehls "&" hinzu

Wenn ich das Knotenstart-Shell-Skript standardmäßig ausführe, wird NIS1 im Vordergrund ausgeführt. Dadurch wird NIS1 beim Abmelden zum Beenden gezwungen. Durch Hinzufügen von "nohup" am Anfang des Startbefehls und "&" am Ende des Startbefehls kann es im Hintergrund ausgeführt werden, auch wenn Sie nicht angemeldet sind.

変更前の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 -

Wenn Nano als Editor zum Überschreiben und Speichern verwendet wird, drücken Sie zuerst "Strg" + "X", dann "Y", und wenn der Dateiname angezeigt wird, drücken Sie "Enter".

6. Starten Sie den Knoten

Nachdem Sie den Knoten gestartet haben, starten Sie den Knoten mit dem folgenden Befehl.

./nix.runNis.sh

7. Bestätigung nach dem Start

Da es so eingestellt ist, dass es im Hintergrund arbeitet, wird auch nach dem Start keine spezielle Meldung usw. auf dem Bildschirm angezeigt. Drücken Sie daher die API, um Blockhöhen- und Knoteninformationen von außen abzurufen, und ein entsprechender Wert wird zurückgegeben. Lass uns nachsehen. Bitte lesen Sie die IP-Adresse als Ihre eigene Umgebung.

Blockhöhe

http://35.200.86.73:7890/chain/height

{"height":44967}

Da es kurz nach dem Start ist, können Sie sehen, dass die Synchronisation noch nicht abgeschlossen wurde und die Synchronisation nur an einer Stelle abgeschlossen wurde, die viel niedriger als die letzte Blockhöhe ist. Diese Zahl nimmt nach und nach zu, und wenn die neueste Blockhöhe erreicht wird, wird die Konstruktion der Knoten einmal getrennt.

Um die für diese Synchronisation erforderliche Zeit zu verkürzen, ist es ursprünglich möglich, die DB-Informationen der Blockchain bis zu einem gewissen Grad separat herunterzuladen und zu erweitern. Daher möchte ich diese Methode irgendwo hinzufügen. Ich bin.

Knoteninformationen

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"
	}
}

Wenn Sie außerdem auf die API für Knoteninformationen usw. klicken, vertiefen Sie Ihr Vertrauen in Ihre eigenen Einstellungen. Sie können sehen, dass die Netzwerk-ID 104 MAIN_NET angibt, das die NIS1- und Java-Versionen sowie das API-Protokoll, den Port und den Hostnamen angibt. Ein wenig interessant fand ich auch, dass ein NEM-Konto automatisch als Identität generiert wird, wenn der Knoten gestartet und als Kennung verwendet wird. (Ich frage mich, ob diese Konten mit den Ernteeinstellungen usw. zusammenhängen.)

Impressionen

Nachdem ich es durchgearbeitet hatte, dachte ich: "Läuft nur das Shell-Skript?" (Daher gibt es viele Teile, die nicht erklärt werden müssen ... und Sie können möglicherweise nicht viele Informationen finden, wie z. B. eine solide Prozedur ... Natürlich erfolgt dies intern nach dem Starten des Shell-Skripts. Ich habe den Eindruck, dass es sehr kompliziert ist, dort zu sein ...)

Starten Sie es vorerst und lassen Sie es in Ruhe! Wenn das Niveau gut ist (≒ dieses Artikellevel), habe ich einen einfachen Eindruck bekommen.

Wo ist jedoch die Korrektur des Maximalwerts des Speichers, der Punkt, an dem standardmäßig der Vordergrund ausgeführt wird, und der Speicherort des NIS1-Hauptprogramms? Ich habe das Gefühl, dass es einige "Suchtpunkte" gibt, daher habe ich mich für Benutzer gefreut, die in Zukunft NIS1 erstellen werden, wenn es standardmäßig keine solchen Suchtelemente gibt.

Hinzufügende Inhalte (möchten)

Ich möchte zu gegebener Zeit die folgenden Inhalte hinzufügen.

Referenzinformationen

Ich bezog mich auf die folgenden Informationen. Vielen Dank an alle Pioniere.

--NIS1-Knotenkonstruktion des offiziellen NEM-Blogs: https://blog.nem.io/ubuntu-installation-guide-standalone/ --NIS 1-Knoten-SSL-Konvertierung des offiziellen NEM-Blogs: https://blog.nem.io/https-nis-node/ --NIS1-Knotenaufbau von Testnetz: https://blog.44uk.net/2018/02/12/up-nem-testnet-node/ --Mainnet NIS1-Knotenaufbau: https://mizunashi-rin.hatenablog.jp/entry/2017/02/15/002342 --NIS 1-Knoten-SSL: https://blog.44uk.net/2017/10/31/nis-with-https-by-dehydrated/

Recommended Posts

So erstellen Sie einen NEM-Knoten (aktuelle Version) (NIS1: NEM Infrastructure Server)
Wie baue ich meinen eigenen Linux-Server?
So richten Sie einen lokalen Entwicklungsserver ein
[PyTorch] Beispiel ⑧ ~ So erstellen Sie ein komplexes Modell ~
So erstellen Sie eine Django (Python) -Umgebung auf Docker
CTF-Anfänger haben versucht, einen Problemserver (Web) zu erstellen [Problem]
So erstellen Sie eine Entwicklungsumgebung für TensorFlow (1.0.0) (Mac)
So erstellen Sie ein einfaches TCP-Server / Client-Skript
So führen Sie Django unter IIS auf einem Windows-Server aus
So erstellen Sie eine Python-Umgebung unter Amazon Linux 2
So erstellen Sie eine neue virtuelle Python-Umgebung unter Ubuntu
So geben Sie das öffentliche Verzeichnis Python Simple HTTP Server an
Erstellen Sie eine Python-Umgebung und übertragen Sie Daten auf den Server
Erstellen einer Entwicklungsumgebung für die Python2.7-Serie mit Vagrant
So installieren Sie Tabpy 1.0 (Version 2020-01)
So rufen Sie eine Funktion auf
Wie man ein Terminal hackt
So ändern Sie die Python-Version
Hinweise zum Erstellen einer LAMP-Umgebung mit Vagrant und VirtulBox
Übersicht über das Erstellen eines Server-Sockets und das Einrichten eines Client-Sockets
Ein Hinweis zum Überprüfen der Verbindung zum Lizenzserver-Port
So erstellen Sie eine Python-Umgebung mit Virtualenv unter Ubuntu 18.04 LTS
So setzen Sie die Verarbeitung fort, nachdem Sie eine Antwort auf aiohttp Server zurückgegeben haben
Wie erstelle ich eine japanisch-englische Übersetzung?
So setzen Sie einen symbolischen Link
Wie man einen lockeren Bot macht
So erstellen Sie ein Conda-Paket
Wie erstelle ich einen Crawler?
So erhalten Sie die Python-Version
So erstellen Sie eine rekursive Funktion
So erstellen Sie eine virtuelle Brücke
Wie erstelle ich eine Docker-Datei?
[Blender] So erstellen Sie ein Blender-Plug-In
So löschen Sie einen Docker-Container
Wie erstelle ich einen Crawler?
So erstellen Sie den MongoDB C-Sprachtreiber
So überprüfen Sie die Linux-Betriebssystemversion
So erstellen Sie eine Konfigurationsdatei
Zusammenfassung zum Erstellen einer LAMP + Wordpress-Umgebung mit Sakura VPS
Ich werde die Infrastruktur weiterhin meiden, weil es schwierig erscheint ... Der Programmierer hat sich bemüht, einen Server zu bauen, um sie zu überwinden. WebAP Server Edition