一.ipfs安装
1.下载go-ipfs : https://dist.ipfs.io/#go-ipfs(需要翻墙)
2.执行如下指令
$ tar xvfz go-ipfs.tar.gz
$ cd go-ipfs
$ ./install.sh
3.验证
$ ipfs help
USAGE:
ipfs - Global p2p merkle-dag filesystem.
...
3.搭建私有集群
默认安装后是共享的公网IPFS密匙,私有集群需要使用自己生产的密匙到swarm.key。
- 生产私有密匙
首先我们使用密钥创建工具,创建一个密钥。
下载地址:https://github.com/Kubuxu/go-ipfs-swarm-key-gen
该工具的安装下载使用go。不会安装的朋友自行Google。
go get -u http://github.com/Kubuxu/go-ipfs-swarm-key-gen/ipfs-swarm-key-gen
然后创建密钥:
ipfs-swarm-key-gen > ~/.ipfs/swarm.key
2.复制密匙文件到其他节点的.ipfs目录下
3 每台节点运行如下命令.去除默认的公网节点地址
ipfs bootstrap rm —all
4 更改config文件的address的API、Gateway为当前的地址,因为ipfs默认只能本地访问,其他节点无法访问,同时注意关闭防火墙或者开发5001,8080,4001端口。但是使用ipfs-cluster集群管理攻击搭建集群时需要设置成本地,否重ipfs-cluster无法访问到ipfs.
5 在每台节点手动添加其他节点,如下:
pfs bootstrap add /ip4/13.114.30.87/tcp/4001/ipfs/<节点id>
如:
ipfs bootstrap add /ip4/13.114.30.87/tcp/4001/ipfs/Qmc2AH2MkZtwa11LcpHGE8zW4noQrn6xue7VcZCMNYTpuP
节点id:可以通过节点运行ipfs id显示
[hadoop@localhost .ipfs]$ ipfs id
{
"ID": "QmaK84LzXydnzGk3WUhgZ1Tqi1mKieUYZ5SjeaC7CdycLi",
"PublicKey": "CAASpgIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCkE0RU4xuFAQM/fVyK9y36nISNGlmiAA59qaqhHA0mGF3zllJqJgxM//0gru3XnaVpyzGzwFhFGjcBlQBhas6g/6TqlpnYSbIFMy8TB2KwBa8grtvfi1yiHsDArx0G/X/IDOmDKejVKFitzdLNZRswPagKmtgPS75tJk8MDmApFu1gzTDAqzpymhzWQeH9Heso6W+oGmSeJUWoANG36OReF1z89FWGHBVJROHxZ7Ic9ohbZ1vFd+C6fjL66Pm0CZ6reMdlvIApWXO5WGQuMDif/0+iaLpbYSJWCt+HUz31qGGOgQ/K/ci2sja0Nv2xbSRvAMTaD5eQAqk87lYVJSxnAgMBAAE=",
"Addresses": [
"/ip4/127.0.0.1/tcp/4001/ipfs/QmaK84LzXydnzGk3WUhgZ1Tqi1mKieUYZ5SjeaC7CdycLi",
"/ip4/192.168.20.129/tcp/4001/ipfs/QmaK84LzXydnzGk3WUhgZ1Tqi1mKieUYZ5SjeaC7CdycLi",
"/ip4/192.168.211.133/tcp/4001/ipfs/QmaK84LzXydnzGk3WUhgZ1Tqi1mKieUYZ5SjeaC7CdycLi",
"/ip6/::1/tcp/4001/ipfs/QmaK84LzXydnzGk3WUhgZ1Tqi1mKieUYZ5SjeaC7CdycLi"
],
"AgentVersion": "go-ipfs/0.4.22/",
"ProtocolVersion": "ipfs/0.1.0"
}
6 验证
运行ipfs swarm peers 显示以连接节点
在A节点上传文件,后得到文件的哈希
ipfs add x.txt
[hadoop@localhost .ipfs]$ ipfs add repo.lock
added QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH repo.lock
0 B / ? [---------------------------------------------------------------------------------------------------------------------------------------------=] 0.00%
测试能否在B节点通过hash获取到
[hadoop@localhost test]$ ipfs get QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
Saving file(s) to QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
0 B / ? [--------------------------------------------------------------------------------------------------------------------------------------------------=] 0s
[hadoop@localhost test]$ ls
QmaoUGJqmaCp36zb1Bov2wwLM76o3Y7SfBcdALBeEgfb1h QmbFMke1KXqnYyBBWxB74N4c5SBnJMVAiMNRcGu6x1AwQH
[hadoop@localhost test]$