Skip to main content

Кластер фарминга

Кластер фармеров предназначена для более крупных фармеров, которые успешно решают задачи масштабирования. Он состоит из четырех основных компонентов, все взаимосвязанные через NATS Server.

Такая настройка позволяет использовать мощные возможности удаленных вычислений. Например, если компьютер идеально подходит для решения задач доказательства, но не для черчения, вы можете запустить компонент фермера на этой машине, а для черчения использовать одну или несколько удаленных машин. Это обеспечивает непрерывное черчение и перечерчивание во всех местах хранения, оптимизируя использование плоттеров до тех пор, пока все сектора не будут полностью прочерчены и перечерчены.

Рекомендации по созданию сети

Farming Cluster использует модульную архитектуру для управления фермой, где каждый компонент может функционировать независимо и может масштабироваться путем запуска нескольких экземпляров компонента для дополнительной масштабируемости и избыточности. Таким образом, важно обеспечить достаточную пропускную способность локальной сети для облегчения эффективной связи при передаче данных по вашей сети между этими компонентами.

Требования к сети

Сетевого подключения мощностью 1 Гбит, вероятно, недостаточно для такого трафика, особенно при использовании ресурсов графического процессора или нескольких плоттеров. В таких случаях минимальное подключение должно составлять 2,5 Гбит/с, с повышением до 10 Гбит/с или выше для больших кластеров.

Предложение по оптимизации пропускной способности

Вы можете уменьшить пропускную способность локальной сети, запустив NATS, контроллер, кэш и плоттер на одной машине. Такая установка позволяет передавать большую часть данных через локальный интерфейс loopback.

Основные преимущества

  • Возможность удаленных вычислений Несколько ПК могут использовать свои ресурсы CPU и GPU для черчения и перечерчивания, без необходимости локального хранения ферм.

  • Избыточность.
    Запуск нескольких компьютеров для каждого процесса увеличивает избыточность и устойчивость системы.

  • Эффективность использования полосы пропускания.
    Централизованное хранение кэша фрагментов позволяет экономить пропускную способность глобальной сети.

  • Дополнительное пространство Перемещение кэша синхронизации фрагментов в центральное место освобождает дополнительно 1% емкости фермы для ведения сельского хозяйства по сравнению с автономным фермером.

NATS

В основе кластера фармеров лежит стороннее программное обеспечение под названием NATS, которое используется для связи между компонентами фермы.

Самый простой способ установить и запустить NATS - через Docker.

Настройка и настройка NATS
  1. Создайте и сохраните конфигурационный файл nats.config следующим образом:
nats.conf
max_payload = 2MB
  1. Запустить NATS с помощью Docker:
Замените следующие параметры
  • <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

Component Configuration

Configuring Cluster Farming is similar to setting up the Standalone Farmer, but each component must be configured according to the cluster setup you want to create. Keep in mind that all components communicate with one another through the NATS server you configured earlier. Below are the essential parameters needed to establish a functional cluster.

Controller (Manages node communication and orchestrates other components.)

The first component to start is the Controller. It connects to a single node, and you must specify the node's location on the network.

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.

Refer to our guide on Port Forwarding.

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-aug-20 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
controller \
--base-path "<BASE_PATH>" \
--node-rpc-url "ws://<NODE_IP>:<RPC_PORT>"
Common Parameters

Refer to ./subspace-farmer cluster controller --help for an explanation of each option and its default values.

--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

The Cache stores the blockchain's Archive History. For optimal performance, the cache must be large enough to hold this data locally. If the data isn't available in the cache, plotting may slow down as it has to be fetched from peers over the DSN. Currently, we recommend a minimum of 200GiB.

The current Archive History Size can be found in the top cards on Subscan 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-aug-20 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
cache \
path="<PATH_TO_CACHE>,size=<CACHE_SIZE>"
Multiple caches

Multiple caches are supported on a single Cache component:

path="<PATH_TO_CACHE1>,size=<CACHE_SIZE1>" \
path="<PATH_TO_CACHE2>,size=<CACHE_SIZE2>"
Common Parameters

Обратитесь к ./subspace-farmer cluster controller --help для объяснения каждой опции и ее значений по умолчанию.

--cache-group
Plotter (генерирует и загружает диаграммы секторов, при необходимости загружая части из кэша)
Замените следующие параметры
  • <NATS_IP>: The IP address of your NATS server
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-aug-20 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
plotter
Common Parameters

Обратитесь к ./subspace-farmer cluster controller --help для объяснения каждой опции и ее значений по умолчанию.

Фермер (управляет фермами, проверяет и извлекает отрисованные участки. Запрашивает секторное черчение у плоттера.)
Замените следующие параметры
  • <NATS_IP>: The IP address of your NATS server
  • <REWARD_ADDRESS>: Адрес вознаграждения, на который будут отправлены ваши награды
  • <PATH_TO_FARM>: Путь для хранения вашей фермы
  • <FARM_SIZE>: The size for storing your farm
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-aug-20 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
farmer \
--reward-address "<REWARD_ADDRESS>" \
path="<PATH_TO_FARM>,size=<FARM_SIZE>"
Multiple farms

You can add multiple farms:

path="<PATH_TO_FARM1>,size=<FARM_SIZE1>" \
path="<PATH_TO_FARM2>,size=<FARM_SIZE2>"
Common Parameters

Обратитесь к ./subspace-farmer cluster controller --help для объяснения каждой опции и ее значений по умолчанию.

--create

Группировка компонентов

Вы можете запустить компоненты Farming Cluster индивидуально или объединить их для одновременного запуска.
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-aug-20 \
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 Кластер

Аналогично всем компонентам Farming Cluster, можно иметь избыточные NATS сервера. Это требует дополнительного шага настройки этих NATS серверов в их собственном кластере.

Посмотрите NATS.io Cluster Guide для получения более подробной информации.

Конфигурация
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-aug-20 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>"

Несколько компонентов

Это продемонстрирует, как запускать несколько компонентов в одном кластере фармеров: (1) NATS Server, (2) Контролеры, (2) Caches, (2) Plotters, and (3) фермеры
Несколько групп кэша

Каждая группа кэша должна иметь уникальное имя, а контроллерам может быть назначена одна или несколько. Укажите буквенно-цифровое имя для каждой из них с помощью команды --cache-group «<CACHE_GROUP>».

Конфигурация
Controller #1
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-aug-20 \
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-aug-20 \
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-aug-20 \
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-aug-20 \
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-aug-20 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
plotter
Plotter #2
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-aug-20 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
plotter
Farmer #1
./subspace-farmer-ubuntu-x86_64-skylake-mainnet-2025-aug-20 \
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-aug-20 \
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-aug-20 \
cluster \
--nats-server "nats://<NATS_IP>:4222" \
farmer \
--reward-address "<REWARD_ADDRESS>" \
path="<PATH_TO_FARM>,size=<FARM_SIZE>"