Как установить и настроить службу кластеров IPFS в вашей сети IPFS

Автоматическая репликация и закрепление в вашей сети IPFS

Служба кластеров IPFS, менее документированный инструмент из семейства IPFS, доступна для использования в качестве средства автоматической репликации и закрепления контента по всей сети узлов IPFS. Он работает вместе с IPFS в качестве отдельной службы и должен быть установлен на всех узлах IPFS, составляющих ваш кластер. Эта статья действует как руководство по процессу установки и настройки, а также как введение в управление контентом в вашем кластере.

Кластер IPFS - это мощный инструмент, который дает вам простые средства глобального распространения контента через IPFS с простым в использовании интерфейсом командной строки. Домашнюю страницу проекта можно найти по адресу https://cluster.ipfs.io, а проект Github - здесь.

Теперь есть два метода развертывания службы кластеров IPFS. Какой метод вы предпочтете, будет зависеть от ваших методов развертывания. Вот они:

  • Метод 1: настроить весь набор узлов кластера и перечислить их в файле конфигурации исходного узла кластера. Развертывание службы кластера на этом узле затем синхронизирует оставшиеся узлы однорангового набора с кластером. Этот метод подходит для автоматизированных решений с такими инструментами, как Ansible, при этом развертывание выполняется как автоматизированный процесс. Более подробно это задокументировано здесь.
  • Метод 2. Для развертывания первого однорангового узла кластера и добавления дополнительных по мере их развертывания. Этот метод более удобен для ручного добавления узлов IPFS в кластер.

В этой статье будет принят метод 2, и основное внимание будет уделено более высокоуровневым требуемым конфигурациям, нежели техническим.

Предварительные требования - IPFS

Узел IPFS должен работать вместе со службой кластера IPFS; Кластерная служба является расширением набора основных функций IPFS, дополнительным пакетом, который обеспечивает дополнительные функции поверх базовой сети. Если вы еще не настроили узел IPFS и хотели бы поэкспериментировать со службой cluser, прочтите мое введение в IPFS:



Итак, давайте перейдем к установке и настройке службы кластеров IPFS.

Установка кластерных пакетов IPFS

Необходимо установить два пакета, оба из которых доступны на странице дистрибутивов IPFS: ipfs-cluster-service и ipfs-cluster-ctl. Первый пакет, ipfs-cluster-service, запускает полный узел кластера, тогда как ipfs-clister-ctl предоставляет нам интерфейс командной строки для управления работающим узлом кластера.

Установка ipfs-cluster-service

Если вы работаете в ОС Linux, выполните следующие команды для установки службы (см. Страницу Дистрибутивы для получения последней версии и пакетов для конкретной платформы):

cd ~
wget https://dist.ipfs.io/ipfs-cluster-service/v0.7.0/ipfs-cluster-service_v0.7.0_linux-amd64.tar.gz
tar xvfz ipfs-cluster-service_v0.7.0_linux-amd64.tar.gz
cd ipfs-cluster-service
sudo cp ipfs-cluster-service /usr/local/bin

Здесь мы загружаем и распаковываем пакет ipfs-cluster-service внутри вашего домашнего каталога. Затем мы копируем распакованный двоичный файл в известное расположение $ PATH. Я выбрал /usr/local/bin.

Чтобы проверить, правильно ли установлен пакет, запустите ipfs-cluster-service help, чтобы отобразить соответствующий вывод.

Установка ipfs-cluster-ctl

Установка пакета ipfs-cluster-ctl - практически идентичный процесс. Следующие команды все настроят:

cd ~
wget https://dist.ipfs.io/ipfs-cluster-ctl/v0.7.0/ipfs-cluster-ctl_v0.7.0_linux-amd64.tar.gz
tar xvfz ipfs-cluster-ctl_v0.7.0_linux-amd64.tar.gz
cd ipfs-cluster-ctl
sudo cp ipfs-cluster-ctl /usr/local/bin

Снова запустите ipfs-cluster-ctl help, чтобы убедиться, что двоичные файлы работают должным образом.

Прежде чем двигаться дальше, прочтите обзорную страницу службы кластеров IPFS, чтобы ознакомиться с функциями и ограничениями проекта:



Запуск кластерной службы

Как и репозиторий IPFS, папка службы кластера должна быть инициирована, содержащая необходимые конфигурации, необходимые для запуска службы. Если репозиторий IPFS по умолчанию инициируется в ~/.ipfs, служба кластера по умолчанию запускается в ~/.ipfs-cluster.

Если вы предпочитаете альтернативный каталог, его можно изменить с помощью флага -c: ipfs-cluster-service -c <path> или установки переменной среды IPFS_CLUSTER_PATH.

Структура папки .ipfs-cluser выглядит следующим образом:

.ipfs-cluster/
    service.json
    raft/
    peerstore

Давайте кратко рассмотрим, из чего состоят эти файлы и папки:

  • service.json: файл конфигурации нашего кластера. Полный пример этого файла можно найти здесь.
  • raft /: папка, содержащая согласованные данные, а также снимки нашего кластера. Raft - это название протокола консенсуса, разработанного Protocol Labs для службы.
  • peerstore: просто список мультиадресов IPFS каждого однорангового узла в кластере. Однако этот файл не будет присутствовать при запуске службы кластера, а вместо этого будет добавлен / обновлен по мере того, как к вашему кластеру будет добавлено больше одноранговых узлов.

Примечание. Если вы придерживаетесь метода 1 настройки кластера, перед запуском демона кластера IPFS требуется (помимо прочего) файл однорангового хранилища.

Инициализация папки ~/.ipfs-cluster выполняется командойinit:

ipfs-cluster-service init

Однако, прежде чем мы поспешно запустим эту команду, нам нужно знать несколько вещей.

Одна из таких вещей - это секретный ключ кластера.

Секретный ключ кластера

Секретный ключ кластера представляет собой 32-битную закодированную в шестнадцатеричном формате случайную строку, которой каждый узел кластера нуждается в своей service.json конфигурации.

По умолчанию при запуске кластера генерируется секретный ключ, который затем можно получить в service.json. Затем этот секретный ключ нужно будет применить ко всем остальным одноранговым узлам, составляющим наш кластер.

Автоматическая генерация секретного ключа удобна для нашего первоначального однорангового узла кластера, но последующим одноранговым узлам кластера потребуется этот идентичный секретный ключ в своих service.json файлах.

Секретный ключ может быть сгенерирован и предопределен в переменной среды CLUSTER_SECRET, и впоследствии он будет использоваться при запуске ipfs-cluster-service init.

Выполните следующее, чтобы сгенерировать секретный ключ и отобразить его в своем терминале:

export CLUSTER_SECRET=$(od  -vN 32 -An -tx1 /dev/urandom | tr -d ' \n')
echo $CLUSTER_SECRET

Теперь, когда известный секретный ключ хранится какCLUSTER_SECRET, мы можем запустить папку ~/.ipfs-cluster:

ipfs-cluster-serivice init

service.json Конфигурация

На этом этапе полезно ознакомиться с тем, что на самом деле можно настроить в кластере. Подробное описание конфигурации можно найти в официальной документации, начиная с основного раздела кластера:



Открытие необходимых портов

Чтобы служба кластера IPFS обменивалась данными между одноранговыми узлами, требуется небольшое управление брандмауэром. 4001 и 8080 уже должны быть открыты для IPFS. 9094, 9095 и 9096 используются службой кластеров. Для пользователя firewalld откройте общедоступный зонированный порт со следующим:

sudo firewall-cmd --zone=public --add-port=9094/tcp --permanent
#repeat for other ports
#reload firewalld
sudo firewall-cmd --reload

Это все, что здесь требуется.

Запуск службы кластеров IPFS в фоновом режиме

Как и основной процесс IPFS, работающий в фоновом режиме, процесс которого задокументирован в моей Введение в IPFS, мы также запускаем службу кластера IPFS в качестве фонового процесса. Я предпочитаю supervisord в качестве менеджера процессов и предлагаю использовать его также для службы кластеров IPFS.

Если вы уже установили supervisord, внесите изменения в файл конфигурации с помощью этого дополнительного процесса. Я указал переменную среды IPFS_CLUSTER_PATH, а также полный путь к папке .ipfs-cluster:

[program:ipfs-cluster-service]
environment=IPFS_CLUSTER_PATH=/home/<user>/.ipfs-cluster
command=/usr/local/bin/ipfs-cluster-service daemon

Примечание. Supervisord запускается от имени пользователя root, поэтому использование ~/.ipfs-cluster в качестве каталога фактически указывает на /home/root/.ipfs-cluster. Не то, что нам здесь нужно.

Я также указал полный путь к двоичным файлам ipfs-cluster-service в значении команды.

Примечание. Я столкнулся с противоречивым опытом, когда просто предоставлял ipfs-cluster-service daemon, когда некоторые системы VPS не распознавали программу. Это может быть связано с тем, что я выбрал путь / usr / local / bin в процессе установки. Но достаточно сказать, что указание абсолютного пути устранило эту проблему.

Теперь при обновлении процессов супервизора запускается демон для вашего однорангового узла кластера. Сначала мы захотим протестировать вещи на переднем плане; обновить, а затем остановить новый процесс:

sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl stop ipfs-cluster-service

Тестирование кластерной службы IPFS

На этом этапе целесообразно запустить ipfs-cluster-service daemon в вашем терминале, чтобы посмотреть, успешно ли работает кластер. Во время написания вы должны увидеть сообщение, похожее на * CLUSTER READY * после некоторого начального вывода.

Когда вы убедитесь, что ошибок нет, снова запустите процесс супервизора:

sudo supervisorctl start ipfs-cluster-service

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

Загрузка дополнительных одноранговых узлов

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

  • Установите пакеты ipfs-cluster-service и ipfs-cluster-ctl (идентичные начальному узлу).
  • Экспортируйте переменную среды CLUSTER_SECRET, задав секретный ключ, полученный от начального узла перед запуском службы кластера:
export CLUSTER_SECRET=<initial_peer_secret>
ipfs-cluster-service init
  • Откройте необходимые порты брандмауэра (идентичные исходному одноранговому узлу).
  • Запустите демона на переднем плане, на этот раз с флагом --bootstrap, содержащим мультиадрес начального узла кластера. Формат этого адреса следующий:
/ip4/<initial_peer_ip_address>/tcp/9096/ipfs/<initial_peer_identity_hash>

Замените 2 приведенных выше значения общедоступным IP-адресом, на котором работает узел, и хешем идентификатора однорангового узла IPFS соответственно:

ipfs-cluster-service daemon --bootstrap /ip4/<initial_peer_ip_address>/tcp/9096/ipfs/<initial_peer_identity_hash>
  • Добавьте команду демона в конфигурацию вашего супервизора. Поскольку ваш одноранговый узел кластера уже был загружен, нам больше не нужно включать флаг the--bootstrap для последующих запусков демона.
[program:ipfs-cluster-service]
environment=IPFS_CLUSTER_PATH=/home/ross/.ipfs-cluster
command=/usr/local/bin/ipfs-cluster-service daemon

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

Чтобы убедиться, что ваши узлы успешно добавляются в кластер, выполните:

ipfs-cluster-ctl peers ls

Управление контентом в кластере

ipfs-cluster-ctl теперь можно использовать для управления содержимым вашего кластера. На следующей странице приведены инструкции по использованию, включая закрепление содержимого, перечисление одноранговых узлов, синхронизацию и восстановление:



Для ясности, команды add и pin добавляют контент в ваш кластер. Закрепление содержимого обеспечит их постоянство в кластере, и, на мой взгляд, это лучший вариант использования службы кластеров IPFS на данный момент для глобального сохранения содержимого.

# adds content to the cluster
ipfs-cluster-ctl add myfile.txt http://domain.com/file.txt
# pins a CID in the cluster
ipfs-cluster-ctl pin add Qma4Lid2T1F68E3Xa3CpE6vVJDLwxXLD8RfiB9g1Tmqp58

Развертывание производства

Доступна специальная страница производственных развертываний с советами, настройками и руководствами по развертыванию кластера с использованием различных инструментов. Некоторые из выдающихся материалов здесь включают:

Заключительные комментарии

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

Наконец, дорожная карта является ценным ресурсом для планирования развертывания, совпадающего с жизненно важными обновлениями, которые могут потребоваться вашей организации.