跳转至主要内容

耕种集群

农民集群是为较大规模的家民设计的,以有效地应对扩展方面的挑战。 它由四个主要部分组成,通过一个NATS服务器相互联系。

This setup enables powerful remote computing capabilities. For example, if a computer is ideal for proving challenges but not for plotting, you can run the farmer component on that machine while utilizing one or more remote machines for plotting. This ensures continuous plotting and replotting across all storage locations, optimizing the use of plotters until all sectors are fully plotted and replotted.

关于网络的考量

集群使用模块化架构来运营一个农场, 每个组件可以独立运行,可以通过运行多个组件的实例来扩展,以增加可扩展性和冗余性。 因此,必须确保有足够的局域网带宽,以便于在你网络中这些组件间数据的高效传输。

网络要求

对这样的流量来说,1 Gbit 网络很可能不够,特别是当使用 GPU 绘图或多个绘图服务器时。 在这种情况下,2.5 Gbit网络是满足需求的最低标准,对于更大的集群,应升级到 10 Gbit或更高。

带宽优化建议

您可以通过在同一机器上运行NATS、Controller、Cache和Plotter组件来减少局域网带宽使用量。 此设置允许大多数数据传输在本地环回接口上进行。

主要优势

  • Remote Compute Capability
    Multiple PCs can contribute their CPU and GPU resources for plotting and replotting, without the need to store farms locally.

  • 冗余
    每个进程在多台计算机运行增加冗余和系统稳定性。

  • 带宽效率
    Piece cache 的集中存储有助于节约局域网带宽。

  • Additional Space
    Relocating the piece sync cache to a central location frees up an additional 1% of farm capacity for farming, compared to the Standalone Farmer.

NATS

集群的核心是一个第三方软件,叫做 NATS,用于农场组件之间的通信。

The simplest way to install and run NATS is via Docker.

Set Up and Configure NATS
  1. 创建并保存 nats.config 配置文件,内容如下:
nats.conf
max_payload = 2MB
  1. 使用Docker启动NATS:
Replace these placeholders
  • <PATH_TO_NATS_CONFIG>: The path to your nats.config file created in step 1
docker run \
--name nats \
--restart unless-stopped \
--publish 4222:4222 \
--volume <PATH_TO_NATS_CONFIG>:/nats.config:ro \
nats -c /nats.config

组件配置

配置集群类似于配置独立运行的农民节点, 但每个组件必须根据您想要创建的集群设置进行配置。 请记住,所有组件通过您先前配置的NATS服务器相互通信。 下面是建立正常运行的集群所需的基本参数。

Controller (Manages node communication and orchestrates other components.)

启动的第一个组件是控制器。它连接到单个节点,您必须指定节点在网络上的位置。

Proper Port Forwarding

For your cluster to be reachable, open and forward the default port 30533 to the Controller. If you've changed the port or are using multiple controllers, set it with --listen-on "/ip4/0.0.0.0/tcp/<PORT>".

If you have an IPv6 address but no public IPv4 address, setting the listen port to with --listen-on "/ip6/::/tcp/<PORT>". to accept IPv6 connections is highly recommended.

参见我们端口转发 的指南。

Replace these placeholders
  • <NATS_IP>: The IP address of your NATS server
  • <BASE_PATH>: The path where the controller's peer network details will be saved
  • <NODE_IP>: Your node's IP address
  • <RPC_PORT>: Your node's RPC port
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
controller \
--base-path "<BASE_PATH>" \
--node-rpc-url "ws://<NODE_IP>:<RPC_PORT>"
Common Parameters

请参阅./subspace-farmer cluster controller --help 以了解每个选项及其默认值的解释。

--listen-on "/ip4/0.0.0.0/tcp/<PORT>"
--listen-on "/ip6/::1/tcp/<PORT>"

--cache-group
--in-connections
--out-connections
--pending-in-connections
--pending-out-connections
Cache (Downloads sector data from DSN peers and serves it to the plotter.)
Cache Size

缓存存储区块链的档案历史。为了优化性能,数据缓存必须足够大以便本地存储这些数据。 如果数据在缓存中不存在,绘图可能会因此减慢,因为它必须通过 DSN 从对等点获取。 当前,我们建议缓存至少200GiB。

当前存档历史记录大小可以在 Astral Block Explorer 顶部找到。

Replace these placeholders
  • <NATS_IP>: The IP address of your NATS server
  • <PATH_TO_CACHE>: The path for cache storage
  • <CACHE_SIZE>: The size for cache storage
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
cache \
path="<PATH_TO_CACHE>,size=<CACHE_SIZE>"
Multiple caches
path="<PATH_TO_CACHE1>,size=<CACHE_SIZE1>" \
path="<PATH_TO_CACHE2>,size=<CACHE_SIZE2>"
Common Parameters

Refer to ./subspace-farmer cluster cache --help for an explanation of additional parameters and their default values.

--cache-group
Plotter (Generates and uploads plotted sectors, downloading pieces from cache as needed)
Replace these placeholders
  • <NATS_IP>: The IP address of your NATS server
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
plotter
Common Parameters

Refer to ./subspace-farmer cluster plotter --help for an explanation of parameters and their default values.

Farmer (Manages farms, audits, and retrieves plotted pieces. Requests sector plotting from the Plotter.)
Replace these placeholders
  • <NATS_IP>: The IP address of your NATS server
  • <REWARD_ADDRESS>: The reward address where your winning rewards will be sent
  • <PATH_TO_FARM>: The path for storing your farm
  • <FARM_SIZE>: The size for storing your farm
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
farmer \
--reward-address "<REWARD_ADDRESS>" \
path="<PATH_TO_FARM>,size=<FARM_SIZE>"
Multiple farms
path="<PATH_TO_FARM1>,size=<FARM_SIZE1>" \
path="<PATH_TO_FARM2>,size=<FARM_SIZE2>"
Common Parameters

请参阅./subspace-farmer cluster farmer --help 以了解每个选项及其默认值的解释。

--create

分组组件

You can run Farming Cluster components individually or combine them to run simultaneously.
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
controller \
--base-path "<BASE_PATH>" \
--node-rpc-url "ws://<NODE_IP>:<RPC_PORT>"
-- \
cache \
path="<PATH_TO_CACHE>,size=<CACHE_SIZE>"
-- \
plotter
-- \
farmer \
--reward-address "<REWARD_ADDRESS>" \
path="<PATH_TO_FARM>,size=<FARM_SIZE>"

进阶

NATS 集群

Just like every other component in the Farming Cluster, it is possible to have redundant NATS servers. Doing so requires an extra step of configuring those NATS servers in their own cluster.

查看 NATS.io集群指南 了解更多详情。

Configuration
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 cluster \
controller \
--nats-server="nats://<NATS_IP_1>:4222" \
--nats-server="nats://<NATS_IP_2>:4222" \
--base-path "<BASE_PATH>" \
--node-rpc-url "ws://<NODE_IP>:<RPC_PORT>"

多组件

This will demonstrate how to run multiple components in one Farming Cluster: (1) NATS Server, (2) Controllers, (2) Caches, (2) Plotters, and (3) Farmers.
Multiple Cache Groups

Each cache group must have a unique name, and controllers can be assigned one or more. Specify an alphanumeric name for each using --cache-group "<CACHE_GROUP>".

Configuration
Controller #1
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
controller \
--base-path "<BASE_PATH>" \
--cache-group "<CACHE_GROUP_1>" \
--cache-group "<CACHE_GROUP_2>" \
--node-rpc-url "ws://<NODE_IP>:<RPC_PORT>"
Controller #2
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
controller \
--base-path "<BASE_PATH>" \
--cache-group "<CACHE_GROUP_2>" \
--node-rpc-url "ws://<NODE_IP>:<RPC_PORT>"
Cache #1
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
cache \
--cache-group "<CACHE_GROUP_1>" \
path="<PATH_TO_CACHE>,size=<CACHE_SIZE>"
Cache #2
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
cache \
--cache-group "<CACHE_GROUP_2>" \
path="<PATH_TO_CACHE>,size=<CACHE_SIZE>"
Plotter #1
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
plotter
Plotter #2
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
plotter
Farmer #1
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
farmer \
--reward-address "<REWARD_ADDRESS>" \
path="<PATH_TO_FARM>,size=<FARM_SIZE>"
Farmer #2
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
farmer \
--reward-address "<REWARD_ADDRESS>" \
path="<PATH_TO_FARM>,size=<FARM_SIZE>"
Farmer #3
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
farmer \
--reward-address "<REWARD_ADDRESS>" \
path="<PATH_TO_FARM>,size=<FARM_SIZE>"