Розгортання 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 [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

Ініціалізація копіювання даних

Тепер ми ініціюємо копіювання даних. У терміналі 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

Оновлення завдань 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