1. 首页
  2. 文档
  3. IPFS集群 | IPFS Cluster
  4. 用户文档 | User Documentation
  5. 配置

配置

默认情况下,可以在该文件夹中找到所有IPFS集群配置和持久数据。本节将介绍对等方和客户端的配置。有关此文件夹中持久数据的详细信息,请参阅 “updates”  部分。~/.ipfs-cluster

ipfs-cluster-service

使用该ipfs-cluster-service 命令运行IPFS集群对等体节点。本小节描述了此命令(service.json)使用的配置文件,该文件指示集群行为以及peerstore 存储对等节点多地址的文件。

配置

service.json 配置文件

ipfs-cluster-service -c <path> 设置配置文件夹的位置。这也由IPFS_CLUSTER_PATH 环境变量控制。

ipfs-cluster配置文件通常位于  ~/.ipfs-cluster/service.json。它包含集群及其不同组件的所有可配置选项。配置文件分为几个部分。每个部分代表一个组件。该部分中的每个项目代表该组件的实现,并包含特定选项。

重要提示:  cluster 配置部分存储一个32字节的十六进制编码  secret ,用于保护所有集群对等体之间的通信。在  secret 必须由所有集群的同行共享。使用空密码具有安全隐患(请参阅  安全性)。
通常,除了id和  private_key 值之外,所有集群对等体的配置都是相同的  。

初始化 默认 配置文件

如果您希望生成默认配置,使用随机生成的  id /私钥  和  集群密钥  运行:

ipfs-cluster-service init

如果配置文件夹不存在,将创建配置文件夹,并在其中放置默认有效的service.json 文件。

您可以使用此文件启动单对等集群,但启动多对等集群将要求所有对等节点共享相同的密钥

如果存在,则在运行ipfs-cluster-service init以设置集群`secret`值时使用`CLUSTER_SECRET`环境值。

例如,  这是一个默认  service.json 配置文件

该文件看起来像:

{
  "cluster": {...},
  "consensus": {
    "raft": {...},
  },
  "api": {
    "restapi": {...}
  },
  "ipfs_connector": {
    "ipfshttp": {...}
  },
  "pin_tracker": {
    "maptracker": {...}
  },
  "monitor": {
    "monbasic": {...},
    "pubsubmon": {...}
  },
  "informer": {
    "disk": {...},
    "numpin": {...}
  }
}

下面详细介绍了不同的章节和小节。

集群(cluster)的主要部分

cluster 配置文件的主要部分配置核心组件并包含以下键:

默认描述
id"<randomly generated>"对等节点的libp2p-host对等节点ID(必须匹配 private_key)。
peername"<hostname>"这个对等节点的人名。
private_key"<randomly generated>"对等节点的libp2p私钥(必须匹配  id)。
secret"<randomly generated>"集群秘密(在所有对等体中必须相同)。
leave-on-shutdownfalse对等节点将在关闭时从peerset中移除自身。
listen_multiaddress"/ip4/0.0.0.0/tcp/9096"对等Cluster-RPC侦听端点。
state_sync_interval"10m0s"自动触发器之间的间隔  StateSync
ipfs_sync_interval"2m10s"自动触发器之间的隔  SyncAllLocal
replication_factor_min-1指定应固定项目的默认最小对等项数。-1 ==全部。
replication_factor_max-1指定应固定项目的默认最大对等数量。-1 ==全部。
monitor_ping_interval"15s"发送ping的间隔(用于检测停机时间)。
peer_watch_interval"5s"检查当前集群peerset的间隔,并检测此对等节点是否已从集群中删除。
disable_repinningfalse不要给不健康同伴自动重新分配所有项目。

该  leave_on_shutdown 选项允许对等节点在关闭时从peerset中移除自身。这意味着,对于任何后续启动,对等节点将需要被引导到现有群集以重新加入它。

手动生成集群密钥

您可以使用以下命令获取32位十六进制编码的随机字符串:

export CLUSTER_SECRET=$(od  -vN 32 -An -tx1 /dev/urandom | tr -d ' \n')
手动生成私钥和对等ID

在自动部署或为多个对等方创建配置时,手动生成对等ID和私钥可能很方便。

您可以使用配置所需的格式获取有效的对等ID及其关联的私钥 ipfs-key  ,如下所示:

ipfs-key | base64 -w 0

consensus 部分

该  consensus 部分包含用于共识组件的不同实现的配置对象。

raft

这是默认(且唯一)可用的共识实现。

默认描述
init_peerset[]当没有筏状态时指定初始peerset的对等ID数组。
wait_for_leader_timeout"15s"在投掷错误之前等待Raft领导人选出多长时间。
network_timeout"10s"Raft协议网络操作超时前多长时间。
commit_retries1多少次重试提交入口到Raft登录失败。
commit_retry_delay"200ms"在重试之前等待多长时间。
backups_rotate6清理状态时要保留多少个备份副本。
heartbeat_timeout"1s"请参阅  https://godoc.org/github.com/hashicorp/raft#Config
election_timeout"1s"请参阅  https://godoc.org/github.com/hashicorp/raft#Config
commit_timeout"50ms"请参阅  https://godoc.org/github.com/hashicorp/raft#Config
max_append_entries64请参阅  https://godoc.org/github.com/hashicorp/raft#Config
trailing_logs10240请参阅  https://godoc.org/github.com/hashicorp/raft#Config
snapshot_interval"2m0s"请参阅  https://godoc.org/github.com/hashicorp/raft#Config
snapshot_threshold8192请参阅  https://godoc.org/github.com/hashicorp/raft#Config
leader_lease_timeout"500ms"请参阅  https://godoc.org/github.com/hashicorp/raft#Config

Raft在内部存储和维护peerset,但是群集配置提供了使用配置部分中的init_peerset 密钥  手动为对等节点的第一次启动提供peerset的选项  raft。例如:

"init_peerset": [
  "QmPQD6NmQkpWPR1ioXdB3oDy8xJVYNGN9JcRVScLAqxkLk",
  "QmcDV6Tfrc4WTTGQEdatXkpyFLresZZSMD8DgrEhvZTtYY",
  "QmWXkDxTf17MBUs41caHVXWJaz1SSAD79FVLbBYMTQSesw",
  "QmWAeBjoGph92ktdDb5iciveKuAX3kQbFpr5wLWnyjtGjb"
]

这将允许您从头开始使用已经固定的peerset启动集群。请参阅使用固定peerset部分启动多个对等节点

api 部分

该api部分包含API组件实现的配置,这些配置旨在为与集群(Cluster)的交互提供端点。

restapi

这是默认的,也是唯一可用的API实现。它提供了一个REST API来与集群进行交互。

默认描述
http_listen_multiaddress"/ip4/127.0.0.1/tcp/9094"API HTTP侦听端点。设置为空以禁用HTTP端点。
ssl_cert_file""x509证书文件的路径。在HTTP端点上启用SSL。除非是绝对路径,否则相对于config文件夹。
ssl_key_file""SSL私钥文件的路径。在HTTP端点上启用SSL。除非是绝对路径,否则相对于config文件夹。
read_timeout"0s"https://godoc.org/net/http#Server的参数  。如果超时短于向集群添加内容所需的时间,请注意设置此值可能会中断添加到集群。
read_header_timeout"30s"https://godoc.org/net/http#Server的参数  。
write_timeout"00s"https://godoc.org/net/http#Server的参数  。如果超时短于向集群添加内容所需的时间,请注意设置此值可能会中断添加到集群。
idle_timeout"30s"https://godoc.org/net/http#Server的参数  。
libp2p_listen_multiaddress""一个侦听备用libp2p主机的多地址。见下文。
id""备用libp2p主机的对等ID(必须匹配 private_key)。见下文。
private_key""备用libp2p主机的私钥(必须匹配  id)。见下文。
basic_auth_credentialsnull映射"username" 到  的对象  "password"。它为API启用基本身份验证。应与启用SSL或libp2p端点一起使用。

REST API组件自动,另外,在主libp2p集群主机(侦听端口9096)上将HTTP API公开为libp2p服务  。将HTTP API公开为libp2p服务允许用户受益于libp2p提供的通道加密。可替代地,API支持通过提供指定完全分离libp2p主机  id,  private_key 和  libp2p_listen_multiaddress。使用单独的主机时,API使用者无需知道集群密钥。API客户端 和支持HTTP和libp2p端点  ipfs-cluster-ctl

 ipfs_connector 部分

该  ipfs_connector 部分包含IPFS连接器组件实现的配置,这些配置旨在为集群对等节点提供与IPFS守护程序交互的方法。

ipfshttp

这是默认且唯一的IPFS连接器实现。它提供了IPFS守护程序API和IPFS HTTP代理的网关。

默认描述
proxy_listen_multiaddress"/ip4/127.0.0.1/tcp/9095"IPFS代理侦听多地址。
node_multiaddress"/ip4/127.0.0.1/tcp/5001"IPFS守护程序HTTP API端点。这是对等体用于固定内容的守护进程。
connect_swarms_delay"30s"一开始,Cluster Peer将运行  ipfs swarm connect 到其他对等方的IPFS守护进程。这设置了启动后的延迟。
proxy_read_timeout"0s"https://godoc.org/net/http#Server的参数   。
proxy_read_header_timeout"5s"https://godoc.org/net/http#Server的参数   。
proxy_write_timeout"0s"https://godoc.org/net/http#Server的参数   。
proxy_idle_timeout"1m"https://godoc.org/net/http#Server的参数   。
pin_method"refs"refs 或  pin。 refs 允许并行获取引脚,但它与自动GC不兼容。 refs 只有concurrent_pinspin_tracker 部分中设置为> 1  才有意义 。 pin 只允许一次获取一件事。
ipfs_request_timeout"5m0s"指定对IPFS守护程序的常规请求的超时。
pin_timeout"24h0m0s"指定对pin/addIPFS守护程序的请求的超时  。
unpin_timeout"3h0m0s"指定对pin/rmIPFS守护程序的请求的超时  。

pin_tracker 部分

该  pin_tracker 部分包含Pin Tracker组件实现的配置,旨在确保IPFS中的内容与IPFS集群决定的分配相匹配。

maptracker

在  maptracker 实现了pintracker它在内存中保持本地状态。

默认描述
max_pin_queue_size50000在我们直接错误之前,有多少个pin或unpin请求可以排队等待固定。
concurrent_pins10我们对IPFS做了多少个并行引脚或取消引脚请求。只有在该部分中pin_method 设置才有意义  。refsipfs_connector
> stateless

该  stateless 跟踪器实现其依赖于IPF问题和共享状态,从而与maptracker相比减少了内存使用量。

默认描述
max_pin_queue_size50000在我们直接错误之前,有多少个pin或unpin请求可以排队等待固定。
concurrent_pins10我们对IPFS做了多少个并行引脚或取消引脚请求。只有在该部分中pin_method 设置才有意义  。refsipfs_connector

monitor 部分

该  monitor 部分包含Peer Monitor组件实现的配置,用于向其他对等节点分发和收集监视信息(informer metrics,ping),并触发警报。有关详细信息,请参阅 监视和自动重新固定部分

monbasic

该  monbasic 实现使用集群(Cluster)的内部RPC端点收集并向所有对等节点广播指标。

默认描述
check_interval"15s"检查之间的间隔,确保对于peeret中的任何对等方没有指标过期。如果检测到过期的度量标准,则会触发警报。这可能会触发重复项目。
pubsubmon

该  pubsubmon 实现使用libp2p的pubsub收集和广播指标。这将为度量分布提供更有效和可扩展的方法。

默认描述
check_interval"15s"检查之间的间隔,确保对于peeret中的任何对等方没有指标过期。如果检测到过期的度量标准,则会触发警报。这可能会触发重复项目。

 informer 部分

该  informer 部分包含Informers的配置。Informers获取用于将内容分配给不同对等节点的指标。

disk

该  disk 线人在间隔收集磁盘相关的指标。

默认描述
metric_ttl"30s"此线人提供的指标的生存时间。这将以TTL / 2间隔触发新的度量读数。
metric_type"freespace"freespace 或  reposize。informer将报告ipfs守护程序存储库(StorageMax-RepoSize)中  的可用空间RepoSize
numpin

所述  numpin 通知器使用引脚作为度量的总数,其收集间隔。

默认描述
metric_ttl"30s"此线人提供的指标的生存时间。这将以TTL / 2间隔触发新的度量读数。

peerstore 文件

IPFS守护程序使用固定的引导程序服务器列表来连接并最终发现其他对等程序。由于IPFS集群不依赖外部提供的服务进行发现,因此它确实在peerstore 文件(通常位于  ~/.ipfs-cluster/peerstore)中维护自己的peerset(对等节点多地址列表  )。

该  peerstore 文件是对等的多地址列表(每行1个)。例如:

/dns4/cluster001/tcp/9096/ipfs/QmPQD6NmQkpWPR1ioXdB3oDy8xJVYNGN9JcRVScLAqxkLk
/dns4/cluster002/tcp/9096/ipfs/QmcDV6Tfrc4WTTGQEdatXkpyFLresZZSMD8DgrEhvZTtYY
/dns4/cluster003/tcp/9096/ipfs/QmWXkDxTf17MBUs41caHVXWJaz1SSAD79FVLbBYMTQSesw
/ip4/192.168.1.10/tcp/9096/ipfs/QmWAeBjoGph92ktdDb5iciveKuAX3kQbFpr5wLWnyjtGjb

除非您的对等节点正在 引导到现有(并且正在运行)的集群对等节点,否则您应该使用至少一个其他对等节点的多地址创建并填充此文件。一旦对等节点知道如何到达集群的另一个成员,它将能够在必要时发现其余的对等节点。您可以为同一个对等节点包含多个多地址。

您的对等节点将在关闭时自动更新peerstore ,自动包括新的多地址,以便它们在下次启动时保留。

注意,当对等节点已知/dns4//dns6/multiaddress 时  ,将不存储该对等节点的其他非dns地址。

IPF问题簇-CTL

目前,没有配置文件  ipfs-cluster-ctl,但我们正在努力

后续步骤:  启动集群

这篇文章对你有帮助吗?

我们要如何帮助您?