IPFS-Serie 03 – Aufbau eines privaten IPFS-Netzwerks

In diesem Artikel wird beschrieben, wie Sie mit IPFS Ihr eigenes privates Speichernetzwerk aufbauen. Wenn Sie noch etwas über IPFS wissen, empfehle ich Ihnen, zuerst die folgenden beiden Artikel zu lesen

1. Installieren Sie IPFS

Es gibt zwei Installationsmethoden: Eine besteht darin, den Klon- Quellcode zu kompilieren und zu installieren (vorausgesetzt, Sie haben die Go-Sprachbetriebsumgebung installiert):

git clone https://github.com/ipfs/go-ipfs.git 

cd go-ipfs
make install

Der Quellcode des Projekts hängt stark davon ab und die Kompilierung wird eine gewisse Zeit in Anspruch nehmen. Bitte warten Sie geduldig. Eine andere Methode ist sehr einfach: Laden Sie direkt die offizielle kompilierte ausführbare Datei und die Download-Adresse der neuesten stabilen Version herunter

Ich biete offiziell Download-Pakete für verschiedene Systemdistributionen an und habe die 64-Bit-Version von Linux heruntergeladen

Entpacken und direkt nach dem Download installieren

tar xzf go-ipfs_v0.4.19_linux-amd64.tar.gz

cd go-ipfs
sudo ./install.sh

2. Starten Sie den IPFS-Knoten

Initialisieren Sie zuerst den Knoten

ipfs init

initializing IPFS node at /home/rock/.ipfs
generating 2048-bit RSA keypair...done
peer identity: QmTrA1w1ux7jW55eqC8Vu7DCRyTMqdpHA5iAZUTRt7snuN
to get started, enter:

	ipfs cat /ipfs/QmS4ustL54uo8FzR9455qaxZwuMiUhyvMcX9Ba8nUH4uVv/readme

Die Initialisierung dient hauptsächlich der Generierung von Knoten-IDs sowie der Generierung von Erstkonfigurationsdokumenten und Knotendaten

Als nächstes starten Sie den Daemon

ipfs daemon 

Initializing daemon...
go-ipfs version: 0.4.19-
Repo version: 7
System version: amd64/linux
Golang version: go1.11.5
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/172.17.0.1/tcp/4001
Swarm listening on /ip4/192.168.0.110/tcp/4001
Swarm listening on /ip4/192.168.56.1/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip4/172.17.0.1/tcp/4001
Swarm announcing /ip4/192.168.0.110/tcp/4001
Swarm announcing /ip4/192.168.56.1/tcp/4001
Swarm announcing /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

Nach dem Starten des Daemon-Prozesses wird standardmäßig ein .ipfsOrdner
und einige Konfigurationsinformationen Ihrer Knoten ausgegeben, z. B. Knotenverbindungsadresse, Dateizugriffs-Gateway und ein integriertes WebUI-Verwaltungssystem. Sie können die Verwaltungsoberfläche anzeigen , indem Sie
über einen Browser http://127.0.0.1:5001/webui aufrufen.

Jetzt können Sie die Befehlszeilentools des IPFS-Clients verwenden, um Ihre Knoten zu verwalten. Sie können beispielsweise den folgenden Befehl verwenden, um READMEdie Datei

ipfs cat /ipfs/QmTrA1w1ux7jW55eqC8Vu7DCRyTMqdpHA5iAZUTRt7snuN/readme

Ein weiteres Beispiel ist das Hinzufügen von Dateien

echo "hello world" > hello.txt
ipfs add hello.txt
added QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o hello.txt
 12 B / 12 B [===========================================================================================================================] 100.00%

3. Bauen Sie ein privates Netzwerk auf

Standardmäßig ist IPFS über einige Seeds mit dem globalen Netzwerk verbunden, aber wir bauen jetzt ein privates Netzwerk auf, daher müssen wir zuerst die Verbindungsinformationen der Seed-Knoten löschen.

Es gibt zwei Möglichkeiten, die Verbindungsinformationen des Startknotens zu löschen: Eine davon ist eine Standardoperation, bei der der Befehl direkt ausgeführt wird:

ipfs bootstrap rm --all

Der andere ist ein gewaltsamer Vorgang. Löschen Sie die Bootstrap-Verbindungsinformationen direkt aus der Konfigurationsdatei und vim ~/.ipfs/configsuchen Sie siebootstrap

"Bootstrap": [
	"/dnsaddr/bootstrap.libp2p.io/ipfs/QmNnooDu7bfjPFoTZYxMNLWUQJyrVwtbZg5gBMjTezGAJN",
	"/dnsaddr/bootstrap.libp2p.io/ipfs/QmQCU2EcMqAqQPR2i9bChDtGNJchTbq5TbXJJ16u19uLTa",
	"/dnsaddr/bootstrap.libp2p.io/ipfs/QmbLHAnMoJPWSCR5Zhtx6BHJX9KiKNN6tpvbUcqanj75Nb",
	"/dnsaddr/bootstrap.libp2p.io/ipfs/QmcZf59bWwK5XFi76CZX8cbJ4BhTzzA3gU1ZjYZcYW3dwt",
	"/ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ",
	"/ip4/104.236.179.241/tcp/4001/ipfs/QmSoLPppuBtQSGwKDZT2M73ULpjvfd3aZ6ha4oFGL1KrGM",
	"/ip4/128.199.219.111/tcp/4001/ipfs/QmSoLSafTMBsPKadTEgaXctDQVcqN88CNLHXMkTNwMKPnu",
	"/ip4/104.236.76.40/tcp/4001/ipfs/QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64",
	"/ip4/178.62.158.247/tcp/4001/ipfs/QmSoLer265NRgSp2LA3dPaeykiS1J6DifTC88f5uVQKNAd",
	"/ip6/2604:a880:1:20::203:d001/tcp/4001/ipfs/QmSoLPppuBtQSGwKDZT2M73ULpjvfd3aZ6ha4oFGL1KrGM",
	"/ip6/2400:6180:0:d0::151:6001/tcp/4001/ipfs/QmSoLSafTMBsPKadTEgaXctDQVcqN88CNLHXMkTNwMKPnu",
	"/ip6/2604:a880:800:10::4a:5001/tcp/4001/ipfs/QmSoLV4Bbm51jM9C4gDYZQ9Cy3U6aXMJDAbzgu2fzaDs64",
	"/ip6/2a03:b0c0:0:1010::23:1001/tcp/4001/ipfs/QmSoLer265NRgSp2LA3dPaeykiS1J6DifTC88f5uVQKNAd"
],

Löschen Sie einfach alle darin enthaltenen Knoten. Auf diese Weise sind Sie nach dem Neustart des Knotens ein isolierter Knoten.

Als nächstes beginnen wir mit dem Aufbau eines privaten Netzwerks. Wir müssen drei Knoten starten, unabhängig davon, ob Sie drei physische Maschinen oder virtuelle Maschinen verwenden oder drei neue Container erstellen .

Angenommen, die Namen lauten ipfs-master, ipfs-node1 und ipfs-node2, wobei master der Masterknoten (Seed-Knoten) und node1 und node2 gewöhnliche Knoten sind.

Hinweis: Bei den folgenden Vorgängen wird davon ausgegangen, dass Sie drei Knoten initialisiert und deren Bootstrap-Seed-Knoten gelöscht haben.

Im ersten Schritt müssen wir auf dem Master-Knoten einen gemeinsamen Schlüssel für das private Netzwerk als Zugangszertifikat für den Beitritt anderer Knoten zum privaten Netzwerk generieren. Knoten ohne gemeinsamen Schlüssel dürfen dem privaten Netzwerk nicht beitreten.

Wir müssen das Tool go-ipfs-swarm-key-gen verwenden , um einen gemeinsamen Schlüssel zu erstellen. Die Installationsmethode ist sehr einfach:

go get -u github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen

Der zweite Schritt besteht darin, einen gemeinsamen Schlüssel auf dem Masterknoten zu generieren

ipfs-swarm-key-gen > ~/.ipfs/swarm.key

Der dritte Teil besteht darin, sie swarm.keyin ~/.ipfs/ . Anschließend müssen Sie die Verbindungsadresse des Masterknotens ermitteln:

~$ ipfs id
{
    
    
	"ID": "QmeXkxzGxUrChcYJbuQQfw34Ze5bmQhmegTNDLtANKHWLP",
	"PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCxNWcsgcNlD6DrYHLLNLeJt2y0x0mqaruSse6hhM11tcPocdJq7z03WL9Elu/sPoBZ0SfG6SKgS9xrXewNrJKIGR85qlJcv43c7/6xjP41liOpY5Gtw4UWQlEZ4gV40OZceILQFD5bnpym+bQh/3zDduvASwDOBOpNS+3liIDXpR4fDh8EWoIi4pFBqDinsIs6lkd0dJBchHnUgPT83ZKpTj1pWf+52MxNDMQq8bmI7ZioojhncZb+Qp5yrgD80XR21WtbUIfVrZyF9e5Yo+DUV1WTEWG+955Cl+3FmXP0IEkZBPZL0g5DGibS+p0XQFXqJd4rcPPw1J0Gq0fWv9VrAgMBAAE=",
	"Addresses": [
		"/ip4/127.0.0.1/tcp/4001/ipfs/QmeXkxzGxUrChcYJbuQQfw34Ze5bmQhmegTNDLtANKHWLP",
		"/ip4/192.168.1.5/tcp/4001/ipfs/QmeXkxzGxUrChcYJbuQQfw34Ze5bmQhmegTNDLtANKHWLP",
		"/ip4/192.168.1.2/tcp/4001/ipfs/QmeXkxzGxUrChcYJbuQQfw34Ze5bmQhmegTNDLtANKHWLP",
		"/ip4/172.17.0.1/tcp/4001/ipfs/QmeXkxzGxUrChcYJbuQQfw34Ze5bmQhmegTNDLtANKHWLP",
		"/ip6/::1/tcp/4001/ipfs/QmeXkxzGxUrChcYJbuQQfw34Ze5bmQhmegTNDLtANKHWLP",
		"/ip6/240e:fa:ff02:6900:dea:2285:6549:3ce0/tcp/4001/ipfs/QmeXkxzGxUrChcYJbuQQfw34Ze5bmQhmegTNDLtANKHWLP",
		"/ip6/240e:fa:ff02:6900:9bbf:20ba:9f76:5a1/tcp/4001/ipfs/QmeXkxzGxUrChcYJbuQQfw34Ze5bmQhmegTNDLtANKHWLP",
		"/ip6/240e:fa:ff85:a100::1/tcp/4001/ipfs/QmeXkxzGxUrChcYJbuQQfw34Ze5bmQhmegTNDLtANKHWLP",
		"/ip6/240e:fa:fffc:2500:dea:2285:6549:3ce0/tcp/4001/ipfs/QmeXkxzGxUrChcYJbuQQfw34Ze5bmQhmegTNDLtANKHWLP",
		"/ip6/240e:fa:fffc:2500:1702:d952:9dec:84fa/tcp/4001/ipfs/QmeXkxzGxUrChcYJbuQQfw34Ze5bmQhmegTNDLtANKHWLP",
		"/ip6/240e:fa:ff02:6900:45ce:6b27:8eae:62fb/tcp/4001/ipfs/QmeXkxzGxUrChcYJbuQQfw34Ze5bmQhmegTNDLtANKHWLP",
		"/ip6/240e:fa:ff02:6900:6ea2:555d:866e:4445/tcp/4001/ipfs/QmeXkxzGxUrChcYJbuQQfw34Ze5bmQhmegTNDLtANKHWLP"
	],
	"AgentVersion": "go-ipfs/0.4.20/",
	"ProtocolVersion": "ipfs/0.1.0"
}

Hier müssen Sie die Verbindungsadresse des LAN auswählen, die normalerweise 192.168mit beginnt , da auf meinem Computer zwei Netzwerkkarten vorhanden sind und ich hier also zwei IPs habe. Sie können einfach eine auswählen.

Nehmen wir an, wir wählen"/ip4/192.168.1.5/tcp/4001/ipfs/QmeXkxzGxUrChcYJbuQQfw34Ze5bmQhmegTNDLtANKHWLP"

Wir haben zuvor die Seed-Knoten von Knoten1 und Knoten2 gelöscht, sodass sie jetzt isolierte Knoten sind. Daher müssen wir unseren Master-Knoten als ihre Seed-Knoten festlegen. Es gibt zwei Möglichkeiten, sie festzulegen: Eine davon befindet sich in Knoten1 bzw. Knoten2. Ausführen auf
:

ipfs bootstrap add /ip4/192.168.1.5/tcp/4001/ipfs/QmeXkxzGxUrChcYJbuQQfw34Ze5bmQhmegTNDLtANKHWLP

added /ip4/192.168.1.5/tcp/4001/ipfs/QmeXkxzGxUrChcYJbuQQfw34Ze5bmQhmegTNDLtANKHWLP

Oder nehmen Sie unsere vorherige grobe Methode, ändern Sie direkt die Konfigurationsdateien von Knoten1 und Knoten2 und ändern Sie den Wert der Bootstrap-Option.

Wir können jedem Knoten auch Umgebungsvariablen hinzufügen, um die Verbindung zum privaten Netzwerk zu erzwingen, wenn der Knoten startet:

export LIBP2P_FORCE_PNET=1

Nachdem Sie jeden Knoten eingerichtet und neu gestartet haben, werden Sie feststellen, dass das Ausgabeprotokoll zwei weitere Einträge enthält:

Swarm is limited to private network of peers with the swarm key
Swarm key fingerprint: c2fc00b19ee671210674155a5cf76ee8

Das bedeutet, dass der Knoten nun mit dem privaten Netzwerk verbunden ist.

4. Testen

Als nächstes begannen wir mit dem Testen, fügten Dateien zu den drei Knoten hinzu und prüften dann, ob die Dateien auf die anderen beiden Knoten heruntergeladen werden können. Als nächstes werde ich direkt über meine Testergebnisse sprechen.

  1. Durch das Hinzufügen einer Datei an einem beliebigen Knoten im Netzwerk kann die Datei an jedem anderen Knoten heruntergeladen werden.
  2. Dateien, die größer als 256 KB sind, werden automatisch in Fragmenten gespeichert, aber die Fragmente derselben Datei werden nicht auf verschiedenen Knoten gespeichert, wie wir es uns vorgestellt haben. Tatsächlich spielt es keine Rolle, wie groß die Datei ist, die Sie hinzufügen, selbst wenn die Datei schließlich in 100 geteilt
    wird Am Ende werden diese 100 Teile nur auf dem Knoten gespeichert, der den Additionsvorgang ausführt, und die .ipfsVerzeichnisgröße nicht wesentlich geändert.
    Es wird geschätzt, dass nur die verteilte Hash-Tabelle (DHT) synchronisiert wird.
  3. Andere Knoten laden automatisch einen vollständigen Dateicache auf den lokalen Knoten herunter, wenn sie zum ersten Mal auf die Datei zugreifen. Wenn der Knoten, auf dem die Datei gespeichert ist, jedoch die Bereitstellung einstellt, kann die Datei nicht von anderen Knoten heruntergeladen werden.
  4. Die auf den ipfs-Knoten hochgeladenen Dateien werden dauerhaft gespeichert und können nicht gelöscht werden. Solange der Datei-Hash bekannt ist, können Benutzer über den vom Knoten-Daemon bereitgestellten Gateway-Dienst auf die gespeicherten Dateien zugreifen. Die Zugriffsadresse lautet: http:
    // 127.0.0.1:8080/ipfs/ {Hash}

5. Externe Dienstleistungen

Standardmäßig befinden sich die vom ipfs-Knoten bereitgestellten Dienste alle auf dem lokalen Computer. Wenn Sie möchten, dass Ihr eigener Knoten externe Dienste (lokales Netzwerk oder öffentliches Netzwerk) bereitstellt, müssen Sie die Konfigurationsdatei ändern und die lokale IP nicht binden , und ändern Sie zu
127.0.0.10.0.0.0

"Addresses": {
    
    
  "API": "/ip4/0.0.0.0/tcp/5001",
  "Announce": [],
  "Gateway": "/ip4/0.0.0.0/tcp/8080",
  "NoAnnounce": [],
  "Swarm": [
	"/ip4/0.0.0.0/tcp/4001",
  "/ip6/::/tcp/4001"
  ]
},

Wenn Sie das Frontend aufrufen möchten, müssen Sie auch domänenübergreifende Einstellungen konfigurieren.

"API": {
    
    
  "HTTPHeaders": {
    
    
    "Access-Control-Allow-Methods": [
      "PUT",
      "GET",
      "POST"
    ],
    "Access-Control-Allow-Origin": [
      "*"
    ]
  }
}

Wenn Sie das gesamte Netzwerk als Cluster zur Bereitstellung externer Dienste nutzen möchten, können Sie einen Load Balancer verwenden, um alle Knoten abzudecken. Verwenden Sie einfach Nginx. Besser ist es, wenn Sie mit der LVS-Konfiguration vertraut sind.

Dieser Artikel wurde zuerst von der jüngeren

Supongo que te gusta

Origin blog.csdn.net/yangjian8801/article/details/124919936
Recomendado
Clasificación