Разворачивание Tezos Updater

Стоит ли развертывать собственное средство обновления?

tezos-updater загружает исторические данные цепочки из сети и прослушивает обновления, чтобы поддерживать данные вашего узла в актуальном состоянии.

Обратите внимание, что этот шаг является необязательным и требуется только в том случае, если вы хотите запустить собственное средство обновления узла для управления версиями или развертываете узел в регионе aws, где нет общедоступного средства обновления для сети, которую вы хотите использовать (mainnet / testnet / zeronet). Вы можете увидеть список общедоступных средств обновления здесь. Убедитесь, что пакет, соответствующий вашим потребностям, доступен (экосистемы меняются быстрее, чем документация), прежде чем вы решите, что можете его использовать.

Поскольку новая версия общедоступного средства обновления может быть несовместима с вашим узлом, мы рекомендуем вам запустить собственное средство обновления. Конфликты между различными выпусками возникают редко, но если основная структура хранилища изменится, ваше средство обновления данных больше не будет совместимо с вашими узлами, и они будут рассинхронизированы. Вы также можете запустить свою собственную программу обновления, если хотите контролировать данные цепочки, которые вы видите. Хотя перечисленные здесь сегменты должны содержать точные данные, мы не можем этого гарантировать.

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

Разворачивание tezos-updater из CloudFormation

Перейдите в Services > CloudFormation в том же регионе, что и ваши VPC, и нажмите «Create stack» в раскрывающемся списке, выбрав вариант «With new resources».

Шаг 1. Указание шаблона

В разделе указания шаблона выберите «Upload a template file» и выберите файл tezos-updater.yaml. Затем нажмите "next".

Шаг 2. Указание сведений о стеке

Здесь несколько больше параметров, чем при развертывании VPC, поэтому мы рассмотрим их все по порядку.

  • Имя стека - это просто имя для вашего стека CloudFormation при развертывании средства обновления tezos. Поскольку в этом руководстве мы развертываем тестовую сеть, я назвал свой стек «testnet-updater».

  • Параметры конфигурации Github потребуют нескольких обновлений.

  • Если вы не изменили имя репозитория для вилки tezos-updater, это поле останется неизменным.

  • Ветвь по умолчанию будет «testnet», что означает, что нам не нужно вносить никаких изменений. Если вы хотите развернуть узел mainnet или zeronet, вам нужно обновить это поле.

  • Пользователя нужно изменить на пользователя github, который разветвил репозиторий.

  • Токен личного доступа - это то, что мы сгенерировали и скопировали с github в части 2.

  • Параметры конфигурации VPC и ECS потребуют нескольких обновлений.

  • В первом раскрывающемся списке найдите только что созданные VPC. В этом руководстве мы назвали их «node-vpcs».

  • Когда мы выбираем, в каких подсетях развертываться, мы выбираем подсети, связанные с «node-vpcs». Выберите все три.

  • Добавьте созданную ранее пару ключей к параметру keypair. На данный момент оставьте остальные параметры без изменений. Чуть позже мы изменим количество задач апдейтера.

  • Конфигурация Tezos не изменилась. Нажмите "Next"

Шаг 3. Настройка параметров стека

Здесь ничего делать не нужно. Нажмите next.

Шаг 4. Обзор

Установите флажок подтверждения и нажмите“Create stack”

Скрипт CloudFormation выделит ресурсы и все настроит за вас. Вы можете отслеживать его прогресс в списке Services > CloudFormation > Stacks щелкнув по стеку вашей программы обновления CloudFormation. Прежде чем двигаться дальше, дождитесь завершения создания стека.

Установка s3 Chainbucket Requester Pays

Программа обновления CloudFormation создаст несколько корзин s3. Перейдите в Services > S3 и найдите корзину, которая выглядит как [stack-name]-chainbucket-[random-id]

Здесь будут храниться все данные блока.

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

Щелкните имя корзины, чтобы перейти к обзору корзины. Выберите вкладку «Properties» вверху.

Прокрутите вниз, пока не найдете раздел «Requester Pays». Перейдите в него, выберите опцию «Enabled» и сохраните.

Скачивание данных цепочки

Есть два варианта для загрузки данных, которые вам понадобятся для обновления вашего узла. Вы можете либо обновить конфигурацию своего средства обновления, чтобы он загружал все данные самостоятельно, что будет работать медленно. Либо, если у вас есть доступ к другому средству обновления, работающему с тем же протоколом и версией, что и вы, вы можете передать данные, что займет всего несколько минут вместо дней. (Опять же, делайте это на свой страх и риск; публичные корзины могут содержать неточные данные.)

Чтобы передать данные из другого экземпляра средства обновления:

Нахождение источника данных

Во-первых, давайте найдем общедоступную chainbucket для передачи наших данных. Откройте файл с информацией об облаке tezos-node и найдите раздел RegionMap. Это разобъет все регионы на сегменты данных блокчейна, доступные для различных сетей. Вот как выглядит список на момент написания.

Поскольку мы развертываем узел тестовой сети, единственный вариант, который нам нужно скопировать отсюда, - это корзина testnet в eu-west-1. Имя корзины, которое нам понадобится это alphanet-updater-chainbucket-1v6go885nadpa (Примечание: всегда возможно, что учебные пособия и скрипты устареют, а корзины, перечисленные здесь, и даже в репозитории github, больше не будут доступны . В этом случае вы всегда можете загрузить данные самостоятельно. В этом случае перейдите к шагу 5.)

Нахождение публичных DNS для нашего EC2

Затем мы находим публичный DNS для нашего EC2. В консоли AWS перейдите в раздел Services > EC2 > Instances и найдите свой экземпляр программы обновления tezos. Внизу страницы будет вкладка «Description», а в списке свойств EC2 найдите «Public DNS».

Здесь наш DNS ec2-54-188-94-183.us-west-2.compute.amazonaws.com. Скопируйте этот адрес, поскольку мы будем использовать его на шаге 4..

Подключение к EC2 через SSH

Теперь мы подключимся по ssh к нашему EC2 и скопируем изнутри данные из общедоступной корзины, найденной в RegionMap, в нашу недавно созданную корзину. Мы собираемся использовать pem файл, который мы загрузили на шаге 2.4, для подключения по ssh в наш новый контейнер tezos-updater.

В терминале мы собираемся использовать общедоступный DNS для нашего EC2 и нашего pem файла вот так: ssh -i ~/.ssh/[your pem file name].pem ec2-user@[your public DNS]

В моём случае, я ввожу:

$ ssh -i ~/.ssh/new-keypair.pem ec2-user@ec2-54-188-94-183.us-west-2.compute.amazonaws.com

Вас спросят, хотите ли вы добавить новый известный хост. Введите «yes» и нажмите Enter, и вы должны увидеть что-то вроде следующего:

   __|  __|  __|
   _|  (   \__ \   Amazon ECS-Optimized Amazon Linux AMI 2018.03.20200115
 ____|\___|____/
For documentation, visit http://aws.amazon.com/documentation/ecs
[ec2-user@ip-10-190-10-222 ~]$

Инициализация копирования данных

Теперь мы инициируем копирование данных. В терминале EC2 используйте следующие команды. Мы собираемся определить две переменные: sourcebucket и targetbucket. sourcebucket - это корзина s3, в которой уже хранятся данные цепочки, из которых мы хотим скопировать данные (мы выбрали этот источник данных из RegionMap на шаге 1). targetbucket - это корзина s3, которую мы создали с помощью нашего сценария CloudFormation, и которую мы обнаружили, когда установили параметр "запрашивающая сторона платит".

[ec2-user@ip-10-190-10-222 ~]$ export sourcebucket=alphanet-updater-chainbucket-1v6go885nadpa
[ec2-user@ip-10-190-10-222 ~]$ export targetbucket=testnet-updater-chainbucket-167t5ylzl69jf
[ec2-user@ip-10-190-10-222 ~]$ aws s3 sync --delete --request-payer requester s3://$sourcebucket s3://$targetbucket

Данные начнут синхронизироваться, и вы должны увидеть следующий результат:

copy: s3://alphanet-updater-chainbucket-1v6go885nadpa/current1 to s3://testnet-updater-chainbucket-167t5ylzl69jf/current1
copy: s3://alphanet-updater-chainbucket-1v6go885nadpa/node1/context/store.branches to s3://testnet-updater-chainbucket-167t5ylzl69jf/node1/context/store.branches
copy: s3://alphanet-updater-chainbucket-1v6go885nadpa/node1/context/index/lock to s3://testnet-updater-chainbucket-167t5ylzl69jf/node1/context/index/lock

Обновление задач ECS

После завершения копирования данных и подтверждения того, что стек CloudFormation завершил создание, мы захотим включить задачу ECS, чтобы поддерживать данные в актуальном состоянии. В консоли AWS перейдите в раздел Services > CloudFormation > Stacks и найдите стек для своего средства обновления. Нажмите кнопку «Update».

Отметьте «Use current template» и нажмите «next».

В конфигурации ECS измените количество задач средства обновления с 0 до 1. Нажмите «next».

Щелкните "next" на следующих экранах. Когда вы закончите, вы должны вернуться на экран стека CloudFormation для вашего средства обновления, и теперь он должен показать «UPDATE_IN_PROGRESS». Ваша цепочка теперь будет регулярно обновляться новыми данными цепочки блоков.

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

Материалы разработаны TQ Tezos переведены на русский язык Tezos Ukraine

Last updated