1. IPFS点滴资讯首页
  2. 实战操作

教程:设置IPFS对等体,第III部分

理解许多IPFS配置选项

教程:设置IPFS对等体,第III部分
摄影:Hans-Peter Gauster在  Unsplash上

欢迎阅读我们正在进行的关于“设置IPFS对等”的教程系列的下一部分!这一次,我们将拼凑一些IPFS存储库(repo)配置选项,以帮助我们自定义IPFS对等节点。虽然IPFS开发人员已经提出了一组智能的默认选项,但某些配置在某些情况下会更有用,因此找出最适合您特定应用的选项非常重要。如果您还没有这样做,请快速浏览我们系列中第一篇文章,以确保您对IPFS对等节点有一定的了解。对于今天的教程,您不需要基于云的同行,但欢迎您使用该实验进行实验。

把碎片放在一起……

IPFS配置文件是一个JSON格式的文本文件,位于您IPFS回购(/data/ipfs/config如果您是我们的教程)。它有许多用于控制IPFS存储和守护进程的选项,包括对等方如何通过其他对等方寻址,它连接的对等方是默认的(引导对等方),它如何存储和表示数据(文件),以及它如何发现其他对等方同行,还有更多。主要部件包括AddressesAPIBoostrapDatastoreDiscoveryReproviderGatewayIdentity,和Swarm。在本节的其余部分,我们将简要解释每个条目的目的。

地址

配置文件存储几个不同的地址类型(SwarmAPIGateway),其中的每一个使用multiaddr寻址格式。这些地址通常用于修改/调整,因此请确保您熟悉以下概念。

Swarm地址是本地守护程序将侦听来自其他IPFS对等方的连接的地址。您应该尝试确保可以从单独的计算机拨打这些地址,并且没有防火墙阻止您指定的端口。

API地址是守护程序将提供从HTTP API的地址。此API用于通过命令行控制守护程序(如果您喜欢冒险,则通过curl控制)。与Swarm地址不同,您应确保该API地址不能从您的计算机外部进行删除,或者潜在的恶意方可能能够向您的IPFS守护程序发送命令。

Gateway地址是守护程序将提供从网关接口地址。网关可用于通过IPFS查看文件,并提供静态Web内容。这个端口可能是也可能不是从您机器外部拨打的,这完全取决于您。该Gateway地址是可选的,如果你留空,网关服务器将无法启动。

Addresses配置选项也可以指定AnnounceNoAnnounce阵列选项。两者都可以是空的。第一个指定Swarm要通知网络的地址。如果留空,守护程序将通知推断的群集地址(基于您的公共IP地址,打开端口等)。相反,该NoAnnounce选项指定向网络通告的群地址数组。如果您希望更好地控制对等连接的工作方式,则可以使用这些选项。

API

API配置条目稍微简单一些。它包含API网关要使用的信息(设置)。实际上,您的守护程序正在运行一个轻量级HTTP服务器,它将响应客户端(例如,IPFS命令,curl)请求。该HTTPHeaders子项(目前下的唯一入口API配置选项)是地图的HTTP头,以从您的API HTTP服务器响应设置。如果需要允许其他访问控制方法,或者需要授权标头等,则可能需要编辑这些设置。

引导

Bootstrap配置阵列指定IPFS列表同行,你的守护进程将连接到启动时。其默认值是ipfs.io引导程序节点,它是一组分布在世界各地的VPS服务器。如果您想运行自己的私有IPFS网络,可能需要将其更改为您自己的IPFS对等集,或者只是添加您控制下的其他对等体。

数据存储

数据存储区配置选项包含一系列与磁盘存储系统的构造和操作相关的信息 – 您的存储库如何存储您已add编辑,pin访问和访问的数据。除了以下存储大小选项之外,您可能希望单独留下此部分。

Firstly, the StorageMax option is a soft upper limit on the size of your IPFS repository’s datastore. In other words, how much disc space your repo is allowed to consume. Related to this, the StorageGCWatermark option is the percentage of the StorageMax value at which a garbage collection will be triggered automatically if the daemon was run with automatic gc enabled (that option defaults to false currently). The default is currently is 90%. A third related option is the GCPeriod, which is the time duration (default is 1 hour) specifying how frequently to run a garbage collection. Again, this is only used if automatic gc is enabled.

本节中的其他选项包括BloomFilterSize,它是一个数字,表示blockstore的bloom过滤器的大小(以字节为单位)。将此值保留为零会禁用此功能。那你为什么要打开repo的bloom过滤器呢?首先,布隆过滤器是节省空间的概率数据结构,用于测试元素是否是集合的成员。在IPFS的情况下,可以使用bloom过滤器来加速块存储查找(检查特定的散列)。目前,关于要在此指定的值的数据有限,尽管有一些工具可以帮助您计算最佳尺寸。除非你知道自己在做什么,否则你可以将其保持为零。

本节中的最后一个选项是Spec,它定义了IPFS数据存储的结构。它是一个可组合的结构,其中每个数据存储区由JSON对象表示。除非你真的知道自己在做什么,否则你应该单独留下这个!有关此配置选项的可能值的更多信息,请参阅docs / datastores.md

发现

Discovery配置选项是非常重要的。毕竟,你希望其他同行能够发现你的同伴,对吧?因此,正确配置节点发现机制非常重要。默认情况下,打开多播DNS对等方发现(MDNS)。这对于在本地网络上启用对等方发现非常有用。如果您在具有公共 IPv4地址的计算机上运行IPFS ,那么您应该只是禁用它。相关,该Interval选项控制在MDNS的发现检查之间等待的秒数。

这将我们带入内容Routing模式。您的对等节点如何实际查找和访问内容。今天,IPFS使用基于Kademlia的分布式哈希表dht选项),并继续学习DHT研究。本质上,DHT是分散的分布式系统,其提供(密钥,值)查找服务,并且任何参与节点可以有效地检索与给定密钥相关联的值。在IPFS世界中,这意味着对等方使用DHT来查找具有通过其CID哈希(密钥)查找的文件(值)副本的对等方。然后,对等体可以连接到那些对等体,并直接从它们下载文件。有关这些想法的更完整讨论,请参阅我们对分布式Web和内容寻址的讨论。

默认情况下,您的节点将充当DHT节点。这意味着它将存储和提供少量数据到网络。这就是IPFS如何分发内容:IPNS记录,内容提供者记录(谁拥有什么内容),对等地址记录(将对等ID映射到IP地址)等。这通常不占用那么多内存。但是,不断回答DHT查询会显着增加CPU使用率。可以将Routing模式设置为dhtclient,不向IPFS网络提供请求,从而节省带宽。在这里,您基本上参与DHT(即您的同伴不是DHT节点)。

Reprovider

与入口直接相关的DiscoveryReprovider。在这里,我们可以控制将Interval本地内容提供给路由系统的轮次之间的时间()。如果未设置,则默认为12小时。如果我们设置为值“0”,它将完全禁用内容重新提取。禁用内容重新生成将导致网络上的其他节点无法发现您拥有自己拥有的对象。如果您希望禁用此功能并让网络了解您拥有的内容,则必须定期手动通知您的内容。如果你启用它(一个好主意),那么你可以选择一个Strategy来决定应该宣布什么。的Stragety可以是以下之一:"all"(默认值),其宣布所有存储的数据,"pinned",其中仅宣布固定数据,或者"roots",它只会直接发布递归引脚的固定密钥和根密钥。

网关

API选项类似,Gateway选项控制HTTP网关。同样,我们可以控制HTTPHeaders设置网关响应。默认情况下,IPFS的HTTP网关仅支持HTTP GET方法。这允许您通过其哈希获取资源,如果哈希是目录,则允许您通过从该目录到命名文件的路径来获取资源。如果Writeable为网关启用标志,则可以理解HTTP POST,PUT和DELETE方法。这允许客户端将数据添加到IPFS,但不信任它们与完整的守护程序API。您可以通过在守护程序配置中设置Gateway.Writeabletrue或通过--writeable在守护程序的命令行上传递标志来启用此模式。此外,Gateway配置条目允许您指定URL(RootRedirect/将重定向的请求。

身分

这个很容易。当您运行类似的东西时ipfs id,您将获得包含对等方Identity信息的输出。配置文件中的两个主要条目是PeerID,此配置的对等方的唯一PKI标识标签。这是设置init,永远不会读。为方便起见,它仅存储在配置中。IPFS将始终PeerID在运行时从其密钥对生成。类似地,the PrivKey是base64编码的protobuf描述(和包含)节点的私钥。这不是你可以改变或控制的东西。

一群

最后,我们来参加Swarm。配置swarm的选项包括AddrFilters,你要过滤拨号的地址过滤器阵列(multiaddr netmasks)。这是什么意思?基本上使用此配置设置(默认情况下为空)可以限制对等连接到某些IP地址范围。例如,可能希望排除所有IPv4对等方以及所有IPv6链路本地对等方以避免某些连接问题

许多网络应用程序都需要NAT遍历技术,例如对等文件共享。然而,在某些地方(如数据中心),你没有需要NAT发现。您可以通过设置DisableNatPortMap为禁用NAT发现true。您也可以DisableBandwidthMetrics,以便IPFS不跟踪带宽使用情况。这样做可能会导致轻微的性能提升,以及内存使用量的减少。所以,如果你不需要它,这是一个很好的调整。

Swarm我希望在所有对等节点上启用的另外两个配置选项是p2p电路中继传输支持(设置DisableRelayfalse)和跳中继(设置EnableRelayHop为true)。如果EnableRelayHop启用,则该节点将充当连接对等体的中继电路中的中间(Hop Relay)节点。这是什么意思呢?电路中继为对等方提供了间接连接其他无法直接相互连接的对等方的方法,无论是由于NAT还是由于协议不兼容,例如js-ipfs连接到desktop(go-ipfs)对等方的基于浏览器的()对等方。如果您希望能够为基于浏览器的Dapps中继信息,那么这是一个很好的功能。

除了这些Swarm设置,您可能还需要调整连接管理器配置(Swarm.ConnMgr)。例如,您可以调整LowWater计数,这是尝试维护的最小对等连接数。类似地,您可以调整您的HighWater线路,这是连接数量,当超过时,将触发连接垃圾清理操作(即,它将丢弃一些连接)。最后,您GracePeriod的持续时间(默认为"20s")是新连接不受连接管理器关闭的影响。在低功率情况下,您可能需要GracePeriod最多1分钟,但会大幅降低LowWaterHighWater值。

其他

IPFS配置文件中还有许多其他条目,包括Experimental功能,控制发布Ipns记录的设置,甚至FUSE Mount配置选项。我们不会在这里讨论这些选项,因为它们比IPFS用户的平均需求更复杂,或者经常更改(部分Experimental功能)。对于有兴趣了解更多信息的人,我们强烈建议您查看实验pubsub功能。

下一步是什么?

我们终于得到它了!我们已经涵盖了几乎所有的关键基础。这里需要解压缩很多,所以请随意跳回到特定的部分,稍后再回过头来参考,并且通常使用这篇文章作为调整对等节点的指南。在我们的下一个教程中,我们将在IPFS守护程序配置文件的底层窥视,以便您可以更好地了解配置文件如何控制幕后配置选项

在平均时间,为什么不看看我们的其他一些故事,或登录我们的纺织照片候补名单,看看有什么我们正在与IPFS建筑,甚至我们写信,告诉我们什么冷却分布式Web项目努力 – 我们很乐意听到它!

原创文章,作者:Eric,如若转载,请注明出处:https://ipfsdrop.com/wiki/tutorial-set-up-ipfs-peer-part-iii/

发表评论

电子邮件地址不会被公开。 必填项已用*标注

QR code