【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,更方便的管理這些私有網路的叢集資料。對於一些大型企業內部的資料分發和加速會有很好的應用。
歡迎廣大的開發者能夠基於這樣的特性做出來優秀的應用