1. 程式人生 > >【IPFS】私有網路(private network)的搭建與使用

【IPFS】私有網路(private network)的搭建與使用

原文地址:http://ipfser.org/2018/03/31/r35/

ipfs是否支援私有網路?

答案是:支援

今天小編就帶大家來看看ipfs的私有網路是如何搭建、使用的?

小編有意測試一下私有網路的資料傳輸情況,畢竟ipfs也更新了新的版本。所以使用了一個本地節點(小編的Mac筆記本)和3個亞馬遜的aws節點。

如果還不知道如何安裝IPFS節點的朋友,參照這篇文章《如何在IPFS裡面上傳一張照片》裡面的內容。

一 環境準備

A:本地節點(Mac)

IP: 動態IP

ipfs 節點ID:QmTrRNgt6M9syRq8ZqM4o92Fgh6avK8v862n2QZLyDPywY

B:亞馬遜AWS

IP:13.230.162.124

ipfs節點:QmRQH6TCCq1zpmjdPKg2m7BrbVvkJ4UwnNHWD6ANLqrdws

C: 亞馬遜AWS

IP:13.231.247.2

ipfs 節點:QmTTEkgUpZJypqw2fXKagxFxxhvoNsqfs5YJ9zHLBoEE29

D: 亞馬遜AWS

IP:13.114.30.87

ipfs節點:Qmc2AH2MkZtwa11LcpHGE8zW4noQrn6xue7VcZCMNYTpuP

二 共享金鑰

私有網路所有的節點必須共享同一個金鑰,注意不要忘記這一點。

首先我們使用金鑰建立工具,建立一個金鑰。

下載地址:https://github.com/Kubuxu/go-ipfs-swarm-key-gen

該工具的安裝下載使用go。不會安裝的朋友自行Google,本文不在講解。

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

然後建立金鑰:

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

注意:小編建立完金鑰放在了自己的ipfs預設配置資料夾下面(~/.ipfs/)

三 上傳金鑰到B,C,D的節點上面

小編直接使用了scp上傳到了其他三臺亞馬遜的伺服器上面:

scp -i ss-server.pem ~/.ipfs/swarm.key [email protected]:~/.ipfs/
  • 1
scp -i ss-server.pem ~/.ipfs/swarm.key [email protected]:~/.ipfs/
  • 1
scp -i ss-server.pem ~/.ipfs/swarm.key [email protected]:~/.ipfs/
  • 1

由於小編的亞馬遜伺服器ipfs節點初始化的時候都是採用的預設設定(ipfs init)

所以把金鑰放到 ~/.ipfs/ 這個資料夾下面就可以了。

四 新增啟動節點

ipfs init後的預設啟動節點是連線ipfs公網的節點,如果要連線私有網路

在每一個節點執行下面的操作,刪除掉所有的預設啟動節點。

ipfs bootstrap rm —all
  • 1

然後新增一個自己的預設節點(私有網路中的一個節點),預設節點可以是A,B,C,D中的任何一個。

我們選取了D節點作為啟動節點,在A,B,C節點執行下面的操作,把D節點的地址新增到A,B,C節點裡面。

ipfs bootstrap add/ip4/13.114.30.87/tcp/4001/ipfs/Qmc2AH2MkZtwa11LcpHGE8zW4noQrn6xue7VcZCMNYTpuP
  • 1

五 啟動並檢視各個節點

A節點:

B節點:

C:節點

D: 節點

我們發現四個節點相互連結在了一起,這就是我們私有ipfs網路。小編測試的過程中發現四個節點的連結非常的快速,即便是本地節點(北京的家庭網路)和東京區域的AWS網路之間的連線也非常的快,IPFS的網路連通性依然還是這麼優秀。

下面我在私有網路裡面做一些簡單的測試:

我們在本地節點A上面資料:

tt-3:Downloads tt$ ipfs add Brave-0.20.42.dmg
added QmbZ7NWHbP5edCF4BvSvfW97MdpZhcwZ3WJTp3Cd3od9Vg Brave-0.20.42.dmg
  • 1
  • 2

在其他幾個節點下載資料:

[email protected]:~/ipfs$ ipfs get QmbZ7NWHbP5edCF4BvSvfW97MdpZhcwZ3WJTp3Cd3od9Vg
Saving file(s) to QmbZ7NWHbP5edCF4BvSvfW97MdpZhcwZ3WJTp3Cd3od9Vg
149.80 MB / 149.80 MB [=======================================] 100.00% 2m58
  • 1
  • 2
  • 3
[email protected]:~$ ipfs get QmbZ7NWHbP5edCF4BvSvfW97MdpZhcwZ3WJTp3Cd3od9Vg
Saving file(s) to QmbZ7NWHbP5edCF4BvSvfW97MdpZhcwZ3WJTp3Cd3od9Vg
149.80 MB / 149.80 MB [=======================================] 100.00% 2m58s
  • 1
  • 2
  • 3
[email protected]:~$ ipfs get QmbZ7NWHbP5edCF4BvSvfW97MdpZhcwZ3WJTp3Cd3od9Vg
Saving file(s) to QmbZ7NWHbP5edCF4BvSvfW97MdpZhcwZ3WJTp3Cd3od9Vg
149.80 MB / 149.80 MB [=========================================] 100.00% 2s
  • 1
  • 2
  • 3

從上面的測試可以看出來,小編首先在本地節點(Mac)上面add了檔案 QmbZ7NWHbP5edCF4BvSvfW97MdpZhcwZ3WJTp3Cd3od9Vg。

然後在亞馬遜的機子(位於日本東京區域)進行檔案下載。150M的檔案在前兩個節點上面下載使用了 2分58秒。而在第三個節點上下載僅僅使用了2秒。

如果配合上之前《IPFS家族二》介紹的ipfs-cluster,更方便的管理這些私有網路的叢集資料。對於一些大型企業內部的資料分發和加速會有很好的應用。

歡迎廣大的開發者能夠基於這樣的特性做出來優秀的應用