Разворачивание Tezos Updater
tezos-updater
загружает исторические данные цепочки из сети и прослушивает обновления, чтобы поддерживать данные вашего узла в актуальном состоянии.Обратите внимание, что этот шаг является необязательным и требуется только в том случае, если вы хотите запустить собственное средство обновления узла для управления версиями или развертываете узел в регионе aws, где нет общедоступного средства обновления для сети, которую вы хотите использовать (mainnet / testnet / zeronet). Вы можете увидеть список общедоступных средств обновления здесь. Убедитесь, что пакет, соответствующий вашим потребностям, доступен (экосистемы меняются быстрее, чем документация), прежде чем вы решите, что можете его использовать.
Поскольку новая версия общедоступного средства обновления может быть несовместима с вашим узлом, мы рекомендуем вам запустить собственное средство обновления. Конфликты между различными выпусками возникают редко, но если основная структура хранилища изменится, ваше средство обновления данных больше не будет совместимо с вашими узлами, и они будут рассинхронизированы. Вы также можете запустить свою собственную программу обновления, если хотите контролировать данные цепочки, которые вы видите. Хотя перечисленные здесь сегменты должны содержать точные данные, мы не можем этого гарантировать.
Перейдите в Services > CloudFormation в том же регионе, что и ваши VPC, и нажмите «Create stack» в раскрывающемся списке, выбрав вариант «With new resources».

В разделе указания шаблона выберите «Upload a template file» и выберите файл
tezos-updater.yaml
. Затем нажмите "next".
Здесь несколько больше параметров, чем при развертывании VPC, поэтому мы рассмотрим их все по порядку.
- Имя стека - это просто имя для вашего стека CloudFormation при развертывании средства обновления tezos. Поскольку в этом руководстве мы развертываем тестовую сеть, я назвал свой стек «testnet-updater».

- Параметры конфигурации Github потребуют нескольких обновлений.
- Если вы не изменили имя репозитория для вилки tezos-updater, это поле останется неизменным.
- Ветвь по умолчанию будет «testnet», что означает, что нам не нужно вносить никаких изменений. Если вы хотите развернуть узел mainnet или zeronet, вам нужно обновить это поле.
- Пользователя нужно изменить на пользователя github, который разветвил репозиторий.
- Токен личного доступа - это то, что мы сгенерировали и скопировали с github в части 2.

- Параметры конфигурации VPC и ECS потребуют нескольких обновлений.
- В первом раскрывающемся списке найдите только что созданные VPC. В этом руководстве мы назвали их «node-vpcs».
- Когда мы выбираем, в каких подсетях развертываться, мы выбираем подсети, связанные с «node-vpcs». Выберите все три.
- Добавьте созданную ранее пару ключей к параметру keypair. На данный момент оставьте остальные параметры без изменений. Чуть позже мы изменим количество задач апдейтера.

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

Здесь ничего делать не нужно. Нажмите next.
Установите флажок подтверждения и нажмите“Create stack”
Скрипт CloudFormation выделит ресурсы и все настроит за вас. Вы можете отслеживать его прогресс в списке Services > CloudFormation > Stacks щелкнув по стеку вашей программы обновления CloudFormation. Прежде чем двигаться дальше, дождитесь завершения создания стека.

Программа обновления 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. В консоли AWS перейдите в раздел Services > EC2 > Instances и найдите свой экземпляр программы обновления tezos. Внизу страницы будет вкладка «Description», а в списке свойств EC2 найдите «Public DNS».

Здесь наш DNS
ec2-54-188-94-183.us-west-2.compute.amazonaws.com
. Скопируйте этот адрес, поскольку мы будем использовать его на шаге 4..Теперь мы подключимся по ssh к нашему EC2 и скопируем изнутри данные из общедоступной корзины, найденной в
RegionMap
, в нашу недавно созданную корзину. Мы собираемся использовать pem
файл, который мы загрузили на шаге 2.4, для подключения по ssh в наш новый контейнер tezos-updater.В терминале мы собираемся использовать общедоступный DNS для нашего EC2 и нашего
pem
файла вот так: ssh -i ~/.ssh/[your pem file name].pem [email protected][your public DNS]
В моём случае, я ввожу:
$ ssh -i ~/.ssh/new-keypair.pem [email protected]
Вас спросят, хотите ли вы добавить новый известный хост. Введите «yes» и нажмите Enter, и вы должны увидеть что-то вроде следующего:
__| __| __|
_| ( \__ \ Amazon ECS-Optimized Amazon Linux AMI 2018.03.20200115
____|\___|____/
For documentation, visit http://aws.amazon.com/documentation/ecs
[[email protected] ~]$
Теперь мы инициируем копирование данных. В терминале EC2 используйте следующие команды. Мы собираемся определить две переменные:
sourcebucket
и targetbucket
. sourcebucket
- это корзина s3, в которой уже хранятся данные цепочки, из которых мы хотим скопировать данные (мы выбрали этот источник данных из RegionMap на шаге 1). targetbucket
- это корзина s3, которую мы создали с помощью нашего сценария CloudFormation, и которую мы обнаружили, когда установили параметр "запрашивающая сторона платит".[[email protected] ~]$ export sourcebucket=alphanet-updater-chainbucket-1v6go885nadpa
[[email protected] ~]$ export targetbucket=testnet-updater-chainbucket-167t5ylzl69jf
[[email protected] ~]$ 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
После завершения копирования данных и подтверждения того, что стек CloudFormation завершил создание, мы захотим включить задачу ECS, чтобы поддерживать данные в актуальном состоянии. В консоли AWS перейдите в раздел Services > CloudFormation > Stacks и найдите стек для своего средства обновления. Нажмите кнопку «Update».

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

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

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