耕种集群
农民集群是为较大规模的家民设计的,以有效地应对扩展方面的挑战。 它由四个主要部分组成,通过一个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
- 创建并保存
nats.config
配置文件,内容如下:
max_payload = 2MB
- 使用Docker启动NATS:
<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.)
启动的第一个组件是控制器。它连接到单个节点,您必须指定节点在网络上的位置。
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.
参见我们端口转发 的指南。
<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.)
缓存存储区块链的档案历史。为了优化性能,数据缓存必须足够大以便本地存储这些数据。 如果数据在缓存中不存在,绘图可能会因此减慢,因为它必须通过 DSN 从对等点获取。 当前,我们建议缓存至少200GiB。
当前存档历史记录大小可以在 Astral Block Explorer 顶部找到。
<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>"
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)
<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.)
<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>"
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.
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
./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>"
./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>"
./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>"
./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>"
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
plotter
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-jun-18 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
plotter
./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>"
./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>"
./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>"