Лучший гайд по нодам
CryptoFortochka — гайды, ноды, новости, тестнеты
Этот гайд создан для тех, кто хочет научиться ставить ноды, зарабатывать на нодах, управлять серверами, виртуальными машинами и нодами, даже если у вас совсем нет опыта. Мы рассмотрим основы, начиная с создания VPS на Hetzner, а затем научимся работать с такими инструментами, как Docker, Proxmox и Grafana. Следуя этому руководству, вы сможете настроить свой сервер для работы с нодами, подключить мониторинг, а также познакомитесь с bash-скриптами.
Все актуальные проекты вы можете найти в нашей таблице Retroactive
Что такое нода. Часть 1
Что такое браузерная нода
Что такое нода. Часть 2
- DevOps: общие понятия
- DevOps-инженер: что входит в его обязанности
- Выбор языка программирования
- Операционные системы, сетевые протоколы и виртуализация
- Docker и Kubernetes
- CI/CD
- Облачные технологии и безопасность в DevOps
- Коротко о DevOps
- Bash-скрипты: основы
- Структура bash-скрипта
- Команда вывода сообщений
- Переменные
- Подстановка команд
- Математические операции
- Управляющая конструкция if-then
- Управляющая конструкция if-then-else
- Сравнение чисел и строк
- Проверки файлов
- Итоги по Bash-скриптам
- Работа с портами на серверах
- Файрволл
- Основные функции файрволла
- Пример настройки файрволла с ufw
- Пример настройки файрволла с iptables
- Проверка портов
- Итого по портам
- Outline: настройка прокси-сервера
- Почему Outline?
- Начало работы c Outline
- Итоги по Outline
- Знакомство с Docker
- Основные компоненты Docker
- Установка Docker
- Основные команды Docker
- Dockerfile: что это и для чего он нужен?
- Управление контейнерами
- Статусы контейнеров в Docker
- Хранение данных в Docker
- Работа с файлами .env
- Итоги по Docker
- Prometheus+Grafana: мониторинг серверов
- Установка node-exporter
- Установка и настройка Prometheus
- Установка и настройка Grafana
- Добавление нескольких серверов для мониторинга
- Итоги по Prometheus и Grafana
- WebVirtCloud: управление виртуальными машинами
- Проверка сервера на виртуализацию
- Установка WebVirtCloud
- Работа с панелью WebVirtCloud
- Настройка сети сервера
- Создание первой виртуальной машины
- Клонирование виртуальных машин
- Запуск и установка Ubuntu 20.04
- Подключение к ВМ
- Итоги по WebVirtCloud
- Заключение
Что такое нода
Нода (узел) в криптовалюте — это компьютер, подключенный к сети блокчейн и на котором постоянно работает определенная программа. Нода выполняет важные функции, такие как хранение и проверка транзакций. Именно ноды образуют децентрализованную сеть, где каждый участник может проверять данные, обеспечивая безопасность и надежность всей системы. Под компьютером нужно понимать необязательно домашний ПК, в основном ноды запускают (поднимают) на серверах, это решение помогает повысить время безотказной работы ноды.
Зачем нужна нода
Она связана с другими нодами (пирами), цель этой связи — прийти к консенсусу. Это специальный механизм, который исключает повторную трату криптовалюты, что была задействована в транзакции. Вот основные моменты:
- Связь с другими нодами: ноды обмениваются данными с другими нодами в сети, что позволяет им синхронизировать состояние блокчейна.
- Механизм консенсуса: это алгоритм, который помогает нодам прийти к единому мнению о правильности транзакций и блоков. Примеры механизмов консенсуса включают Proof of Work (PoW) и Proof of Stake (PoS).
- Предотвращение двойной траты: консенсусный механизм гарантирует, что одна и та же криптовалюта не может быть потрачена дважды, что критически важно для доверия к системе.
Представьте, что блокчейн — это огромная книга учета. Каждый раз, когда кто-то совершает транзакцию, новая запись добавляется в эту книгу. Ноды — это копии этой книги, которые хранятся на разных компьютерах по всему миру. Когда происходит транзакция, ноды проверяют ее и добавляют в свои копии книги, делая систему прозрачной и защищенной от подделок.
Proof of Work (PoW) и Proof of Stake (PoS)
Консенсус — это процесс, с помощью которого участники децентрализованной сети приходят к единому мнению о текущем состоянии блокчейна (то есть о том, какие транзакции действительны и какие блоки должны быть добавлены).
Proof of Work (доказательство выполнения работы) — это алгоритм консенсуса, который используется в некоторых криптовалютах, таких как Bitcoin.
- Майнеры: участники сети на PoW называются майнерами, они используют мощные компьютеры для решения сложных математических задач.
- Задача: эти задачи требуют значительных вычислительных ресурсов и энергии. Цель задачи — найти решение, которое удовлетворяет определенным условиям.
- Решение: когда майнер находит решение, он передает его другим участникам сети для проверки.
- Подтверждение: если решение правильно, майнер получает право добавить новый блок транзакций в блокчейн и получает вознаграждение в виде криптовалюты (например, биткойнов).
PoW обеспечивает безопасность сети, так как для изменения информации в блокчейне злоумышленнику потребуется огромное количество вычислительных ресурсов, что делает атаки невыгодными и практически невозможными.
Представьте, что у вас есть группа людей, которые хотят добавить записи в общий журнал. Чтобы добавить запись, каждый должен решить сложную головоломку. Тот, кто первым решает головоломку, добавляет запись и получает награду. Решение проверяется всеми остальными, чтобы убедиться, что оно правильное. Это предотвращает мошенничество, так как для его совершения потребуется решить огромное количество головоломок одновременно.
Proof of Stake (доказательство доли) — это другой алгоритм консенсуса, который используется в криптовалютах, таких как Ethereum 2.0, Cosmos, Polygon, Solana и многие другие. Он также обеспечивает согласие между участниками сети, но делает это иначе, чем PoW.
- Владельцы монет: участники сети на PoS называются валидаторами, они блокируют определенное количество своих монет в сети. Это называется "стейкинг".
- Выбор валидаторов: сеть случайным образом выбирает валидаторов для создания новых блоков и проверки транзакций. Вероятность быть выбранным зависит от количества заблокированных монет — чем больше монет, тем выше шанс.
- Создание блоков: выбранный валидатор создаёт новый блок транзакций и добавляет его в блокчейн.
- Вознаграждение: валидаторы получают вознаграждение за свою работу в виде новых монет или комиссий за транзакции.
PoS экономит ресурсы, так как не требует мощных компьютеров для решения сложных задач. Он также обеспечивает безопасность сети, так как злоумышленник должен владеть значительным количеством монет, чтобы повлиять на сеть, что делает атаки дорогостоящими и рискованными.
Представьте, что у вас есть банк, в котором клиенты могут заблокировать деньги на своих счетах. Банк случайным образом выбирает одного клиента, который будет проверять новые транзакции и добавлять их в журнал. Чем больше денег клиент заблокировал, тем выше вероятность, что его выберут. Клиент получает вознаграждение за свою работу. Это делает систему безопасной, так как никто не будет рисковать своими деньгами ради мошенничества.
Эти два алгоритма консенсуса помогают поддерживать децентрализованные сети, обеспечивая их безопасность и целостность. PoW требует значительных вычислительных ресурсов и энергии, а PoS использует экономический стимул, заставляя участников заботиться о безопасности сети. Также существуют менее популярные алгоритмы консенсуса — Delegated Proof of Stake (DPoS), Byzantine Fault Tolerance (BFT), Proof of Authority (PoA), Proof of Burn (PoB) и другие.
Виды нод и их различия
В зависимости от типа ноды и криптовалюты, которую она поддерживает, ноды могут выполнять различные функции. Вот основные типы нод:
- Полные ноды (Full Nodes): полные ноды загружают и хранят полную копию блокчейна. Они проверяют и подтверждают транзакции и блоки, обеспечивая децентрализацию и безопасность сети. Примеры: Bitcoin Core для биткойна.
- Легкие ноды (Light Nodes или SPV Nodes): легкие ноды не хранят полную копию блокчейна. Вместо этого они загружают только заголовки блоков и полагаются на полные ноды для проверки транзакций. Такие ноды более компактны и требуют меньше ресурсов. Например, такой тип нод есть в Avail или Celestia.
- Майнинговые ноды (Mining Nodes): эти ноды участвуют в процессе майнинга, создавая новые блоки и добавляя их в блокчейн. Они решают сложные математические задачи, чтобы подтвердить транзакции и заработать награды в виде новых монет. Примеры: Iron Fish или Aleo.
- Валидационные ноды (Validator Nodes): эти ноды используются в сетях, которые работают на алгоритмах консенсуса Proof of Stake (PoS). Валидационные ноды проверяют и подтверждают транзакции и блоки, ставя на кон свои монеты (стейк). Примеры: Ethereum 2.0 (первая версия использовала майнинг и была на PoW), Cosmos или Binance Smart Chain.
Стоит отметить, что проект может использовать легкие ноды, полные ноды и валидационные ноды, так как это не мешает достижению консенсуса, а наоборот повышает работоспособность сети. Например, все эти виды нод есть в Celestia, а тестнет 0G работает благодаря полным и валидационным нодам. А вот использовать майнинговые и валидационные ноды в рамках одного проекта не получится — принцип работы этих нод строится на разных алгоритмах консенсуса (PoW и PoS соответственно).
Аренда серверов — какой хостинг выбрать и почему?
— Можно ли ставить ноду на свой домашний компьютер делая из него сервер?
В облачного сервера есть неоспоримое преимущество — он в работе 24/7, таким образом вероятность поломки и перебоев с электричеством или интернетом сведена к минимуму.
VPS, VDS и DS
Серверы делятся на два основных типа — VPS (Virtual Private Server) и VDS (Virtual Dedicated Server). Представьте, что физический сервер, на котором стоят VPS и VDS, это город. Панельные многоэтажки в нём — это VPS, а районы с частным сектором — это VDS. В панельках квартиры разделены тонкими стенами — это виртуализация сервера на уровне операционной системы, в таких квартирах всем приходиться уживаться между собой. Это значит, что ресурсы (CPU, память и дисковое пространство) могут быть разделены между различными VPS на одном физическом сервере. Обычно используется технология виртуализации, такая как OpenVZ или контейнерная виртуализация, где ресурсы разделены на уровне операционной системы. К примеру, сосед врубил утром перфоратор и все вокруг страдают. В нашем же случае, соседи по VPS страдают, если кто-то подрубил майнер (майнинговая нода), тогда производительность падает у всех.
Что же касается районов с частным сектором, то там дома ограждены большими и крепкими заборами — это виртуализация сервера на аппаратном уровне, то есть полная изоляция от соседних VDS. Каждый VDS функционирует как отдельный физический сервер, обеспечивая лучшую производительность и стабильность, так как соседние VDS не могут повлиять на ресурсы друг друга. Используются технологии виртуализации на уровне гипервизора, такие как KVM или VMware, которые обеспечивают полную изоляцию и выделение ресурсов. По этой причине, такие сервера имеют выше стоимость, чем VPS.
Ещё существует вид серверов, которые стоит выделить отдельно — DS (Dedicated Server). Это вид хостинга, при котором клиенту предоставляется целиком отдельный физический сервер (компьютер). Этот сервер не делится с другими клиентами, что обеспечивает полный контроль над его ресурсами и конфигурацией. Если следовать аналогии выше, то DS — это элитные особняки в пригороде. По этой причине DS является самым дорогим видом аренды серверов из-за выделенных аппаратных ресурсов и возможностей кастомизации. Но с другой стороны, такие серверы имеют мощные характеристики и большие объемы памяти, что позволяет при определенном уровне знаний запускать 20-30 нод разных проектов на одном таком сервере.
Обзор хостингов
Выбор хостинга на прямую влияет на производительность ноды и качественный уровень вашего участия во время тестирования сети, а также поможет избежать проблем при запуске и поддержании ноды в мейннете. Но все рейтинги — это вещь субъективная, и последующие разделение не исключение, но всё же информация взята с авторитетных кругов в сфере нод и валидирования.
Условно хостеров можно разделить на следующие категории:
- Топовые хостинги, с которыми в 99% случаев не будет никаких проблем, но и цены там соответствующие. VULTR, Digital Ocean, OVH, Amazon AWS, Google Cloud Platform — эти платформы предоставляют качественную и быструю поддержку, современное и мощное железо. Некоторые с них предоставляют бесплатное пользование на конкретный период, но, это дорого для не особо требовательных нод
- Хостинги-середняки, в которых за недорого можно получить годный сервер, но и также можно арендовать сервер с уже изношенными жесткими дисками, что для нод некоторых проектов очень критично. Например, для проектов на Cosmos плохие жесткие диски = пропуск блоков, отставание от сети или невозможность синхронизироваться. Как правило, такие хостинги имеют хорошую ценовую политику и там, где сервер на Hetzner будет стоить 20-25 долларов, то тут можно взять за 5-7 долларов. Сюда можно отнести Contabo, Aeza, Hetzner и PQhosting.
- Отдельное преимущества можно дать хостингу Xorek, хоть у него бывают пробелы с серверами, но, команда постепенно улучшает свой продукт, делая его лучше. Самое интересное в нём это (цена аренды), для обычного нодера, который хочется держать от в среднем 5 проектов, то этот хостинг вам зайдёт как лучше некуда, особенно, если вы собираетесь устанавливать "Браузерные ноды" об этом немного позже
Мониторинг работы ноды и решение возможных проблем
Чтобы нода постоянно работала, необходимо следить за ее состоянием и проводить регулярные проверки:
- Мониторинг: используйте инструменты мониторинга, такие как Prometheus и Grafana, чтобы отслеживать производительность ноды.
- Обновления: регулярно обновляйте программное обеспечение ноды, чтобы она оставалась совместимой с сетью и защищенной от уязвимостей. Для этого нужно следить за анонсами проектов, чтобы вовремя выполнять все необходимые действия.
- Журналы (логи): периодически проверяйте журналы (логи) ноды на наличие ошибок. Эти журналы помогут выявить проблемы и понять, что нужно исправить.
- Резервное копирование: обязательно делайте резервные копии файлов, как правило в официальных документах и гайдах указывают, что именно нужно сохранить и как восстановить работу ноду в случае переезда на другой сервер или при критических ошибках.
- Проверьте журналы: ошибки в журналах могут указать на конкретную проблему, если не знаете, как исправить проблему, то воспользуйтесь советом из следующего пункта.
- Обратитесь к сообществу: часто сообщество криптовалюты может помочь с решением проблемы, предоставив советы и инструкции. В первую очередь рекомендуем обратится к автору гайда или в официальные Discord проекта, в большинстве случаев проекты создают специальные каналы для помощи с нодами.
- Рестарт ноды: иногда перезапуск ноды может решить временные проблемы. Если же и после перезапуска ошибка не исчезла, то придется искать истинную причину проблемы.
Стоит отметить, что настройка мониторинга, это отдельная тема для полноценного большего гайда. Как правило, в этих целях используют Node-exporter, Grafana и Prometheus.
- Node Exporter устанавливается на каждом сервере, который нужно мониторить, и собирает метрики о состоянии системы, такие как использование CPU, памяти и дискового пространства. То есть, его необходимо устанавливать на сервере, где запущена нода.
- Prometheus — это система управления базами данных (СУБД), которая периодически запрашивает данные у Node Exporter и других источников, сохраняет их в базе данных временных рядов и выполняет анализ с использованием языка запросов PromQL.
- Grafana подключается к базе данных Prometheus, чтобы визуализировать собранные метрики на интерактивных дашбордах, предоставляя удобный интерфейс для мониторинга и анализа данных.
Также сообщество того или иного проекта часто разрабатывают кастомные боты и скрипты для мониторинга. Например, в Initia один энтузиаст создал бота в Telegram, который отслеживает пропуск блоков и если нода пропустила больше 20 блоков подряд, то бот присылает уведомления.
Для проектов на Cosmos есть инструмент под названием TenderDuty, который также способен отправлять уведомления по заданным параметрам в Telegram или Discord.
Космофорки: как одни из самых популярных тестнетов с нодами
Подавляющие большинство тестнетов, где запускаются ноды, это как раз космофорки (Cosmos SDK Forks). Но для начала необходимо разобраться с двумя понятиями, а именно Cosmos (сам проект с криптовалютой ATOM) и Cosmos SDK (фреймворк). Они тесно связаны и являются частями единой экосистемы, созданной для облегчения разработки и взаимодействия блокчейнов.
Проект Cosmos (ATOM)
Cosmos (ATOM) - это блокчейн-платформа, созданная для обеспечения взаимодействия между различными блокчейнами. Основная цель Cosmos — создать "интернет блокчейнов", где блокчейны могут обмениваться данными и ценностями между собой. Cosmos Hub, основной блокчейн сети Cosmos, использует собственный токен ATOM для обеспечения безопасности сети через механизм стейкинга и управления.
Основные особенности Cosmos (ATOM):
Использование Cosmos дает разработчикам мощные инструменты и инфраструктуру (готовые модули) для создания и интеграции блокчейнов, что значительно упрощает процесс разработки и открывает возможности для создания комплексных децентрализованных приложений.
Фреймворк Cosmos SDK
Cosmos SDK - это фреймворк с открытым исходным кодом, предназначенный для упрощения создания настраиваемых блокчейнов. Он предоставляет разработчикам инструменты и библиотеки, необходимые для создания независимых блокчейнов с различными функциями. Cosmos SDK использует модульную архитектуру, что позволяет разработчикам легко интегрировать различные модули и создавать блокчейны, адаптированные под конкретные задачи.
Основные особенности Cosmos SDK:
- Модульность: разработчики могут выбирать и интегрировать модули, такие как управление токенами, стейкинг, управление и другие.
- Гибкость: позволяет создавать блокчейны, которые могут быть настроены для различных случаев использования, от финансовых приложений до игр и социальных сетей.
- Тендерминт (Tendermint): использует Tendermint Core в качестве консенсусного механизма PoS, который обеспечивает высокую производительность и безопасность.
Допустим, разработчик создает новый блокчейн с использованием Cosmos SDK для децентрализованного финансового приложения. Этот блокчейн может подключиться к Cosmos Hub через IBC, позволяя пользователям переводить активы между этим блокчейном и другими блокчейнами в экосистеме Cosmos. Токен ATOM может быть использован для стейкинга и обеспечения безопасности, поддерживая надежность всей сети.
Таким образом, Cosmos SDK предоставляет инструменты для создания блокчейнов, а проект Cosmos (ATOM) обеспечивает инфраструктуру для их взаимодействия и интеграции в глобальную сеть блокчейнов.
Особенности космофорков
Исходя из выше написанного, косфорки (форки Cosmos SDK) - это блокчейны, созданные на основе фреймворка Cosmos SDK и являются частью экосистемы Cosmos. Рассмотрим их плюсы и минусы с точки зрения нодранера.
- низкий порог входа — новичок после установки 2-3 таких нод без проблем сможет в дальнейшем запускать и обслуживать космофорки, так как алгоритм запуска в 99% случаях одинаковые;
- в официальных документах проекты сильно завышают требования к серверу, где будет запускаться нода — как правило, на таком сервере можна будет запустить 2-3 ноды разных космофорков;
- большое сообщество, которое поможет разобраться с потенциальными проблемами и ошибками;
- много систем мониторинга и оповещения о неполадках с нодой (например, TenderDuty);
- не слишком частые обновления, то есть в работу ноды вмешиваться нужно крайне редко;
- хорошо подходят для набивание порфтолио, если цель попадать в мейннеты космофорков.
- большая часть космофорков не раздают наград или вообще не доживают до листингов, будьте готовы установить и обслуживать ноду за просто так;
- для космофорков не сильно важны процессор и оперативная память, но критично важны жесткие диски, а именно играет роль их изношенность (плохие жесткие диски, это первая причина пропусков блоков и невозможность догнать актуальную высоту блока).
- Stargaze: платформа для создания и торговли NFT.
- Osmosis: децентрализованная биржа для обмена криптовалютами.
- Secret Network: блокчейн с акцентом на конфиденциальность данных.
- Juno: смарт-контрактная платформа, которая позволяет разработчикам создавать и развертывать децентрализованные приложения (dApps).
- Celestia: модульная блокчейн-платформа, ориентированная на масштабируемость и децентрализацию, которая предоставляет инфраструктуру для создания специализированных блокчейнов.
Больше примеров вы найдете в этом експлорере.
Установка нескольких космофорков на один сервер
Частая проблем среди новичков — это запуск нескольких нод на одном сервере. Боязнь этого дела приводит к дополнительным тратам, ибо новички арендуют больше серверов, что бы установить по одной ноде на каждый сервер. Хотя это и правильная стратегия, но если вспомнить момент, что не за все ноды дают награды, то таким образом затраты на сервера растут в разы. Поэтому лучше придерживаться правила "один сервер = одна нода", если вы запускаетесь в мейннете.
Первый шаг к беспроблемной установки ноды — это проверка портов, которые она использует. В большинстве случаев, проекты в официальной документации указывают, какие порты использует нода.
Порт — это числовой идентификатор в сетевом протоколе TCP/IP, который позволяет различать несколько соединений на одном и том же IP-адресе. Порты помогают направлять входящий и исходящий сетевой трафик к правильным приложениям или службам на сервере или компьютере.
Если нужно поменять порт, то не рекомендуется занимать так называемые зарезервированные порты (Well-known ports). Они находятся в диапазоне 0-1023 и используются системными процессами и службами, например, HTTP (порт 80), HTTPS (порт 443), FTP (порт 21). Максимальный диапазон в сетевом протоколе TCP/IP варьируются от 0 до 65535.
Стандартные порты космофорков
Все ноды, которые используют Cosmos SDK, имеют стандартный набор портов.
То есть, при установке космофорка на чистый сервер можно ничего не менять и нода будет правильно работать, но вот уже второй космофорк работать не будет и в логах буде подобная ошибка:
E[2024-06-07|12:34:56.789] Failed to start P2P server module=p2p err="failed to listen on 0.0.0.0:26656: listen tcp 0.0.0.0:26656: bind: address already in use" E[2024-06-07|12:34:56.790] Node failed to start module=main err="P2P listen err: failed to listen on 0.0.0.0:26656: listen tcp 0.0.0.0:26656: bind: address already in use"
Количество космофорков ограничено только мощностью вашего сервера, так как свободных портов огромное количество. Если вы поменяете в конфигурации на порт, который уже используется, то ничего страшного не произойдет — просто нода всё также не будет работать, но нет никакой угрозы для ноды, которыя уже работает и уже занимает этот порт.
Например, у вас запущена нода 0G, в которой вы поменяли один из портов на 55444, она нормально работает и ошибок в логах нет. Потом вы устанавливаете ноду Initia и снова поменяли один из портов на 55444, то ноде 0G абсолютно ничего не угрожает, так как она уже использует этот порт, таким образом вы ничего не сломаете, просто нода Initia не запустится и в логах будет ошибка, что указана выше.
Настоятельно рекомендуем записывать порты, которые используют ноды в рамках одного сервера, чтобы избежать дополнительных и повторных изменений.
Также не стоит забывать, что на один сервер не получится поставить две и больше нод одного проекта. Это возможно теоретически, но вряд ли рационально.
Изменения портов для космофорков
Существует два способа изменения портов для космофорков — ручной и при помощи команды в терминале.
Ручной способ можно использовать, если вы используете, например, MobaXterm, то можете быстро зайти в необходимые файлы, через поиск найти место, где нужно поменять порт, и сделать это.
Порты в космофорках нужно менять в трёх файлах — config.toml, app.toml и client.toml. Которые, на примере 0G, находятся по следующему пути:
Пример расположения параметров в файлах конфигурации
[p2p] laddr = "tcp://0.0.0.0:26656" [rpc] laddr = "tcp://0.0.0.0:26657" [proxy] proxy_app = "tcp://127.0.0.1:26658" [instrumentation] prometheus_listen_addr = ":26660" pprof_laddr = "localhost:6060"
[grpc] address = "0.0.0.0:9090" grpc-web.address = "0.0.0.0:9091" [api] address = "tcp://0.0.0.0:1317"
node = "tcp://localhost:26657"
Также можно поменять порты при помощи команды в терминале, этот подход более правильный и професcиональный. Пропишем команду на примере проекта 0G, она сработает, если порты на ноде стандартные, в противном случае команду нужно редактировать:
sed -i.bak -e "s%:26658%:27658%; s%:26657%:27657%; s%:6060%:6160%; s%:26656%:27656%; s%:26660%:27660%" $HOME/.0gchain/config/config.toml && sed -i.bak -e "s%:9090%:9190%; s%:9091%:9191%; s%:1317%:1417%; s%:8545%:8645%; s%:8546%:8646%; s%:6065%:6165%" $HOME/.0gchain/config/app.toml && sed -i.bak -e "s%:26657%:27657%" $HOME/.0gchain/config/client.toml
Но можно воспользоваться лайфхаком и упрости себе задачу по смене портов. Существует такой валидатор Nodejumper, который сделал сервис, где можно в несколько кликов подстроить команду по смене портов под любой проект.
- Переходим сюда и ищем блок, как на скрине ниже:
Для смены портов просто нажмите на цифру 1, если будете ставить ещё космофорк на этот сервер, то нажмите цифру 2 и так далее.
Здесь вновь команда на примере проекта 0G, но если вы хотите поменять порты для другого проекта, то после выбора цифры скопируйте команду в любой редактор и измените в трёх местах название папки с .0gchain на название папки другого проекта
Просчитать профитность каждой отдельной ноды не получится, ибо в данном случае не существует формул или графиков, которые помогли бы прикинуть примерный риск/ревард. Поэтому ответ на вопрос
Как долго нужно держать ноду, чтобы получить реварды?
Можно получить только эмпирическим путем, то есть при помощи экспериментов и предыдущего опыта. Благо за последние несколько лет есть много примеров нод от проектов, которые щедро наградили или наоборот скаманули нодранеров.
- Критерии тестнета с нодами
- Снижение рисков и затрат
- Экономия на серверах
- Мульты в нодах
- Портфолио в нодах
- Примеры ревардов за ноды
- Solana
- Mina
- Celestia
- Aptos
- Forta
- io.net
- Taiko
- Massa
- Minima
- Subspace
- Космофорки
- Canto
- Stride
- Islamic Coin (HAQQ)
- Quicksilver
- Итоги
Критерии тестнета с нодами
Нодерские тестнеты следует разделять по разным критериям, потому что размер ревардов в денежном эквиваленте не всегда может удовлетворить нодранера, вряд ли кто-то будет доволен, что получил 1000 долларов за три года содержания ноды, а если ещё и отнять аренду сервера, то совсем печальная математика.
Стоит выделить два основных критерия и два дополнительных:
- Продолжительность тестнета, то есть время содержания ноды (от месяца до нескольких лет).
- Денежный эквивалент ревардов (от десятков долларов до сотен тысяч долларов).
- Сложность содержания ноды, которая увеличивает время прибывания в терминале и добавляет танцев с бубном (частые обновления, лагучая сеть и т.п.).
- Стоимость содержания сервера (от 5 долларов до нескольких тысяч долларов).
В конечном итоге именно различные комбинации этих критериев помогут понять уровень успешности выбора проекта для запуска ноды. Конечно, всем бы хотелось получить 10 000 долларов за участие в тестнете длинною в месяц с нодой, которая не нуждается в обновлениях и её можно поставить на сервер за 5 долларов, но таких проектов мы ещё пока не встречали
Также стоит отметить, что длительность тестнета, как и величина наград — это вещи субъективные. Кто-то не против держать ноду 2 года и получить 3000 долларов, а для кого-то лучше получить 500 долларов, но за 2 месяца тестнета. В любом случае от нодранеров эти вещи не зависят и приходится уповать на адекватность и щедрость проектов.
Снижение рисков и затрат
Среди опытных нодранеров бытует мнение, что первые реварды за ноды новичок получает через 6-12 месяцев. Это утверждение недалеко от истины, но много чего зависит и от удачи — можно поставить ноду и уже через 1-2 месяцы получить достойные награды, а можно ждать и целый год.
Вот почему запуск нод — это отдельная сфера в криптовалюте, которая требует некий уровень вовлеченности, как правило, 1-2 часа в день вполне достаточно.
Самый эффективный способ повысить шанс на получение наград — это запуск нод многих проектов. Участия в 10-15 нодерских тестнетах существенно повышает вероятность получения щедрого вознаграждения.
В этой ситуации можно провести аналогию со старым студенческим утверждением — "Сначала ты работаешь на зачётку, а потом зачётка работает на тебя!". В нодах примерно то же самое — сначала вы устанавливаете ноды многих проектов и с течением времени добавляете в свой портфель всё больше тестнетов, а потом, например, через 6-10 месяцев какие-то проекты начинают выходить на рынок и награждать нодранеров. Проще говоря, можно запустить ноды 10 проектов и если хотя бы один с них нормально раздаст, то окупятся не только все сервера, но ещё и останется на бутерброды с красной икрой.
Экономия на серверах
В идеальном мире работает правило один сервер = одна нода, но на практике никто так не делает.
Очень многие новички боятся ставить по несколько нод разных проектов на один сервер, но такой подход в разы увеличивает затратную часть. Например, можно взять сервер за 50 долларов/месяц и поставить на него 20 нод. Да, многое зависит от самой ноды, ибо каждая имеет свои требования, но если взять в среднем, то даже на сервер за 5 долларов/месяц можно поставить 2-4 ноды.
Нужно понимать, что арендуя сервера, вы делаете некие инвестиции. В разных сферах криптовалюты пользователи тратят деньги: в ретро — это инвестиции в газ за транзакции и/или содержание сибильной фермы, в торговли на споте — это вложения денег в саму покупку монет. Так вот, нерационально использовать свои сервера, это то же самое, например, что гонять транзакции в ретро при газе 200 gwei.
Мульты в нодах
Это довольно сложная тема для обсуждения, особенно в сфере нод. Если вы прям очень уверенны в проекте, сделали качественный ресёрч, то можно ставить и 200 нод одного проекта на 200 серверов, в противном же случае нужно хорошо обдумать данную стратегию.
Возьмём для примера проекты в ретро, которые отрабатывали большинство — Layer0, ZkSync и StarkNet. Эти проекты в основном отрабатывались в мейне и уже было известно о сотнях миллионов инвестиций. В нодах это работает немного по другому:
- Часто приходится запускать ноду ещё до многомиллионного инвеста. Например, у проекта 1,5 миллиона сборов от тир-3 фондов и вы скипаете этот проект, а потом в серии А они собирают 15 миллионов от топовых фондов, и вы кусаете локти.
- Чтобы получить неплохие награды за ноды, необязательно запускать ноду от проекта с десятками миллионов инвестиций, например, мало кто знает о проекте Canto, но там за ноду можно было легко получить по 3000 - 4500 долларов.
Эти оба пункта мешают любителям мультов выбрать проект для запуска множества нод. За ретро очень часто дают базовый ревард за какие-то минимальные критерии и выйти хотя бы в ноль вполне выполнимая задача, в нодах же зачастую отсутствуют базовые реварды и поэтому риск/ревард не в пользу наград.
Портфолио в нодах
На противовес мультам в нодах есть другой инструмент — это наработка портфолио. Нет разницы, где вы создадите своё портфолио, это может Github или бесплатный конструктор лендингов, но лучше иметь возможность предоставить свой опыт в нодах при необходимости.
Главный минус такого подхода — это длительное время для наполнения того самого портфолио, но и выхлоп может быть куда больше, а именно с портфолио больше шансов попасть в закрытый теснетнет или запустить ноду на ранней стадии.
Очень часто проекты просят заполнить форму, для того чтобы посмотреть на ваш опыт и решить, достойны ли вы для участия в их награждаемом тестнете или даже мейннете. Плюс, помимо наполнения портфолио вы будете прокачивать свои нодерские скиллы, что очень важно, если вы хотите попадать в мейннеты и заниматься нодами более серьезно.
Да, сейчас уже есть когорта крупных валидаторов, с которыми тягаться просто нереально, но каждый год на рынке нод появляются новые игроки, а значит урвать свой лакомый кусок в мейннете всё ещё возможно, но при должном подходе и затраченных усилиях.
Если же речь идёт о тестнетах, то тут необязательно быть топоповым валидатором и мастером командной строки, достаточно иметь качественное портфолио, которое за полгода в нодах уже будет насчитывать порядка 10 проектов.
Примеры ревардов за ноды
Ниже будут различные примеры ревардов за нодерские тестнеты, автора может подводить память, поэтому не претендую на истину в последней инстанции, но величина наград и длительность тестнета +/- правдивы.
Но для начала напомню о четырёх видах проектов, если речь заходит о наградах:
Solana
Да, это было давно, но всё равно стоит вспомнить и надеяться на повторение истории. Тестнет Solana длился несколько месяцев перед их выходом в мейн и каждый месяц давали по 200-300 SOL, которые конвертировались в мейннет 1:1. Та и сейчас основная сеть Solana кормит многих валидаторов, которые стояли ещё в истоках сети.
Mina
Проект, который вышел на Coinlist в далеком 2021 году и дал хорошие иксы, но и не обидел нодеров — за тестнет в несколько месяцев проект выдал по 33000 MINA.
Celestia
Один из относительно свежих тестнетов, а именно с 2023 года. Эталон проведения тестнета и огромная щедрость (как потом оказалось). Хотя для кого-то этот проект может быть и "конторой", потому что у них длительное время был тестнет, но проект за него ничего не обещал и ничего не дал. Потом была форма для отбора в их закрытый награждаемый тестнет, попасть туда было нелегко, хотя и были кейсы рандома. Это как раз тот случай, где наличие хорошего портфолио очень помогло. По словам команды с 20000 заявок они отобрали 1000 участников. Они были разделены на разные роли — кто-то запускал легкую ноду, кто-то ноду-мост, а кто-то валидаторскую ноду. Сам тестнет был очень хорошо организован, например, задания были доступны на специальной платформе, где их было удобно выполнять. Плюс, тестнет длился всего пару месяцев и нода была совсем не проблемная. Как итог, за легкую ноду проект раздал по 8000 TIA, а за валидатора — 20000 - 60000 TIA.
Aptos
Тот случай, где раздали даже не за саму ноду, а за заполнение формы для участия в тестнете. Кстати, многие любители мультов получили лайфчендж именно от Aptos — проект за минт NFT в тестовой сети раздал по 150 APT, а за форму — по 300 APT. Aptos ATH = $19.90
(Кстати, подмечу! История канала Crypto Fortochka началась с того момента, когда у меня получилось заработать большую сумму за мульт данной ноды!
История "Как и сколько я заработал на первой ноде"
Я еще тогда помню, начало 2022 года, рынок начинал идти на самое глубокое дно, и попросту делать было нечего, кроме тестнетов и нод. Начал потихоньку ставить ноду за нодой, ставил всё подряд, от космофорков до солановской ноды, спустя полгода плотного ворка, у меня сформировалась чёткие понятия "Что такое нода", "Зачем я её ставлю" , "Что именно ставить", "Как правильно мультить". Проресерчив множество проектов, просидев тысячи часов над изучением проектов — получилось нащупать тот самый Aptos. Итог: пятизначная сумма, при затратах $1500 на ферму серверов
Forta
Весна 2022 года, проект с топовыми фондами и наградами за короткий тестнет в размере 3000-5000 долларов, количество розданных монет уже не припомню, но на тот момент за продажу выручали именно такие цифры.
io.net
Совсем свежий пример тестнета, где реально каждый мог. Буквально за 2 месяца участники получили х8-10 от вложенных за сервера. Известен кейс, где небольшая группа людей в складчину арендовала супер мощный сервер, который обошелся им в 10000 долларов за 2 месяца, от проекта они получили 24000 IO. В среднем же проект раздал по 200-1500 IO, что тоже очень хороший результат за столь короткий тестнет.
io.net ATH = $6.45 P.S: Очередной удачный проект, с которого также получилось сделать десятки иксов от затрат, и всего за пару месяцев, да и нода была такая простая, от неё требовалось лишь прожать две кнопки
Taiko
Ещё один проект, который недавно порадовал нодеров, но тут смазывает картину тот факт, что тестнет длился 2 года. Хотя с другой стороны проект не жадничал и насыпал нодерам по 5000-6000 TAIKO, что при максимальной цене монеты получилось очень прибыльно.
Aptos 2.0, даже намного вкуснее, чем Aptos 1.0. Так как с дропа Aptos было заработано на хорошую котлету, я принял решение - увеличить ферму, и это было очень хорошим решением, который также дал заработать, но, опять же, затраты также были больше, да и ждали полтора года
Massa
Не очень профитный кейс, но в нодах без этого никуда. Тестнет длился больше 2лет, довольно частые обновления, ещё и награды с месячным разлоком. На TGE средняя рука нодера смогла слить в стакан примерно 1000-2000 долларов, что вроде и неплохо, но если разделить на 24 месяца, то математика не очень радует.
Minima
Ещё хуже предыдущего проекта — почти всё тоже самое, только награды до сих пор нельзя продать, но и цена там укатана, так что уже и надежд нету.
Subspace
Уже даже тяжело точно сказать, как долго идёт тестнет, но уже больше 2 лет. Многие забили на эту ноду, так как частые обновления и никаких новостей касательно окончания тестнета делают своё дело.
Космофорки
В контексте наград стоит отдельно упомянуть проекты, которые построены на Cosmos. Например, Celestia также частично построена на этой технологии, но это скорее исключение из правил. Космофорков выходит очень много и почти все они запускают тестнеты и может даже оплачиваемые тестнеты, но вот награды не всегда покрывают даже затраты на сервер. Плюс, многие проекты не доживают до листингов и закрываются раньше. Плотно запускать ноды в подобных сетях можно в двух случаях:
Именно делегация от проекта поможет отбивать затраты и получать ещё сверху денюжку.
Canto
Как уже упоминалось выше, малоизвестный проект очень щедро насыпал за непродолжительный тестнет, а именно 3000-4500 долларов. Отдельного упоминания этот проект заслуживает именно по той причине, что это космофорк. Так как за последние 3 года таких проектов было мало, которые насыпали довольно щедро.
Stride
На первый взгляд показалось, что это не очень щедрый проект, но тестнет длился всего месяц, задания были вполне стандартные и сеть была неприхотливая. Проект раздал вроде от 50 STRD и кто не слил на листинге, то остался доволен.
Islamic Coin (HAQQ)
Тестнет был довольно долгим, муторным и с различными заданиями, потом проект ещё долго не мог раздать токены и также не определялся с листингами. Но как для космофорка раздали +/- неплохо, если бы ещё не было вестинга и локов... Как итог, нодеры получили от 8000 ISLM, но на TGE смогли продать только 30% при цене $0,30, а дальше цену быстро укатали.
Islamic Coin (HAQQ) ATH = $0.36
Quicksilver
История почти почти такая же, как и в предыдущем примере, только тестнет по времени был немного короче, но сеть была куда с проблемной. Раздали в среднем по 12000-14000 QCK, но вестинг и локи в разы снизили прибыль. Так как по хорошей цене удалось слить только 10% от дропа, например, на сегодняшний день ещё есть что-то в локе но цена $0.00794.
Нормальных нод было очень много, такие как: Nibiru, Humanode, Gear, EigenLayer
Отдельно расписывать о проектах, которые соскамились или раздали копейки смысла нет, но некоторые с них всё же перечислю: Mande Chain, Ollo, Empower, Territori, Rebus, Terp, Cardchain, Source Protocol и другие.
Итоги
Как вы видите, однозначного ответа на вопрос из заголовка нет, но надеюсь, что эта статья внесла некую ясность о ревардах в нодах.
Да, некоторые проекты и дальше будут раздавать копейки, но это не повод забрасывать нодерское дело. Это одна из немногих сфер в криптовалюте, которой всё равно на состояния рынка. Например, вы всю медвежку запускали ноды и только вкладывались в сервера, но выхлопа не было, это значит, что на бычке выйдут эти проекты и хотя бы один из них сделает вас куда богаче.
Сейчас сфера нод активизировалась и есть действительно хорошие проекты, на которые стоит обратить внимание и запустить ноду. Ведь может Nillion — это новый Aptos, Allora — это новый Taiko
Что такое браузерная нода
Браузерная нода — это узел децентрализованной сети, который работает прямо в веб-браузере пользователя. Она использует вычислительные мощности устройства и интернет-соединение для подключения к сети и выполнения задач, таких как проверка транзакций или сбор и передача данных. Принцип работы браузерной ноды основан на использовании современных браузерных технологий (например, WebRTC), что позволяет ноде взаимодействовать с другими участниками сети без установки дополнительного программного обеспечения, используя интерфейс браузера.
Браузерные ноды получили популярность благодаря своей простоте и доступности. В отличие от традиционных нод, их можно запустить буквально одним кликом через веб-браузер, без сложной установки или настройки программного обеспечения. Это снижает порог входа для новичков и позволяет каждому участвовать в децентрализованных сетях, используя только браузер и интернет. Такая доступность делает децентрализованные технологии ближе к широкой аудитории и позволяет легко масштабировать сеть.
Зачем нужны браузерные ноды
Браузерные ноды играют важную роль в децентрализованных сетях, расширяя их охват и устойчивость. Они помогают распределять задачи между множеством участников, будь то проверка транзакций, передача данных или поддержка связи между узлами. Поскольку браузерные ноды можно запустить на любом устройстве с интернетом и браузером, они способствуют увеличению числа участников сети, что делает её более устойчивой и защищенной от сбоев или атак.
Браузерные ноды играют ключевую роль в концепции DePIN (Decentralized Physical Infrastructure Networks), так как они помогают создать распределенную физическую инфраструктуру, используя устройства пользователей для подключения к сети. Они увеличивают пропускную способность, привлекая больше участников без необходимости закупать специальное оборудование. Браузерные ноды позволяют использовать неиспользуемые ресурсы устройств, что поддерживает децентрализованную модель и повышает устойчивость сети, обеспечивая стабильную и масштабируемую инфраструктуру.
Как установить браузерную ноду
Есть два вида установки таких нод:
В первом случае нужно зарегистрироваться в проекте, скачать расширение, зайти в него под своими данными и не закрывать браузер, чтобы нода могла полноценно работать (вот пример установки Dawn и Gradient). Но если вы запускаете браузерную ноду на своем компьютере, то такой подход имеет большой минус — придется обеспечивать бесперебойную работу интернета и держать компьютер постоянно включенным.
Поэтому для этих целей лучше арендовать сервер с Windows. Плюс, в таком случае можно абузить браузерные ноды, как это делать расскажу в следующем разделе.
Иногда проект предоставляет возможность установить браузерную ноду через командную строку. Этот подход требует минимальных знаний работы с серверами Linux, но ничего слишком сложного. Можете сами убедиться в этом, ознакомившись с нашими гайдами по установке проектов Blockmesh и Network3, которые как раз и ставятся на сервера Linux с OS Ubuntu.
Не важно, какой сервер вы используете для установки браузерной ноды — будь-то сервер с Windows или Linux, но такой подход имеет ряд преимуществ.
Во-первых, сервер предоставляет стабильное и надежное оборудование с постоянным подключением к интернету, что повышает производительность и минимизирует риск простоев. Во-вторых, выделенные ресурсы (процессор, память) обеспечивают эффективное выполнение задач ноды без конкуренции с другими приложениями. Наконец, на выделенном сервере можно настроить повышенные меры безопасности, чтобы защитить ноду от атак и повысить общую стабильность сети. В серверах есть пожалуй только один минус — это оплата за них хостинг-провайдеру.
Как абузить браузерные ноды
Рассмотрим пример абуза браузерных нод на арендованном сервере с Windows вручную и при помощи софта.
Для ручного варианта работы нам понадобятся следующие инструменты:
Суть абуза очень проста: предварительно покупаем электронные почты, подключаемся к арендованному серверу через программу Microsoft Remote Desktop, на сервере устанавливаем антидетект браузер, через который запускаем нужное количество профилей с использованием прокси. И уже в этих профилях регистрируемся в проектах с браузерными нодами используя прокси.
Подробный гайд по ручному абузу браузерных нод вы найдете по этой ссылке.
Что же касается софта, то он очень упрощает фарм поинтов в браузерных нодах. Если говорить о нашем софте для ноды Nodepay, то он сам автоматически регистрирует аккаунты и потом фармит поинты. Нужны только электронные почты, аккаунт сервиса по прохождению капч и резидентские прокси.
Подробный гайд по абузу проекта Nodepay через софт вы найдете по этой ссылке.
Есть ли смысл ставить браузерные ноды
Ответ однозначен — ДА! Рассмотрим самый минимальный вариант и вообще без затрат. Среднестатистический криптан проводит много времени за компьютером и у него открыт браузер, то почему не потратить 5 минут, чтобы установить браузерною ноду? Плюс, в один профиль браузера можно легко установить несколько расширений проектов с браузерными нодами, которых сейчас много и есть с чего выбрать. Да, такой подход не принесет больших дропов, но даже получив по 10 баксов от 5 проектов — это уже неплохо. Учитывая, что денежных затрат нет и времени это отнимает совсем мало.
Если же вас такой подход не устраивает и вы хотите масштабироваться, то даже в этом случае денежные затраты будут в разы меньше, чем в том же ретро, например, а сравнивать затраченное время и вовсе бессмысленно.
Какие бывают профиты
На сегодня говорить о браузерных нодах с точки зрения профитов можно разве что по раздачи от Grass. Математика очень проста: на один(!) аккаунт раздали примерно по 50-60 токенов $GRASS (в среднем), на момент написания статьи цена за один токен — $2.82 (ATH $3.90). Если брать по ATH, то дроп на один аккаунт составил 195-234 долларов. Моё личное мнение по $GRASS, что это далеко не та цена, которая может быть, особенно если учитывать начало полноценного буллрана. Плюс, у проекта сейчас Market Cup всего около 700 миллионов долларов, что для пионера в этой сфере очень мало.
Теперь давайте примерно посчитаем профит с 10 аккаунтов $GRASS, который у меня получилось заработать за 10 месяцев ленивого фарма:
Да, это всё очень усреднено, но для 20 аккаунтов дроп был бы в 2 раза больше, а вот затраты нет, так как они не растут кратно с увеличением аккаунтов. Например, прокси на $30 хватило бы и на 100 аккаунтов.
Новая мета дропов
Новая тенденция дропов тесно связана с браузерными нодами и концепцией DePIN. Браузерные ноды, благодаря своей простоте, позволяют большему количеству пользователей присоединяться к сетям DePIN, то есть порог входа в криптоэкосистему довольно низок.
В данном случае простота — залог успеха, ведь для получения дропов, связанных с браузерными нодами, необходимо зарегистрироваться на соответствующей платформе и запустить браузерную ноду. Вот и всё!
Плюс, популярность проектов DePIN будут только возрастать в связи с падением популярности других активностей с прицелом на дроп. Например, сфера ретрохантинга последнее время не очень радует, а там порог входа намного выше.
Подключение к серверу через Termius
Termius — это программа для безопасного подключения к удалённым серверам через SSH. Простыми словами, она позволяет управлять сервером с любого устройства, как если бы вы были прямо перед ним. Termius удобен тем, что поддерживает сохранение настроек серверов и вам не нужно каждый раз вводить данные для входа, чтобы подключиться к серверу.
Если вы пользуетесь нашими гайдами по запуску нод, то знаете, что такое MobaXterm — десктопный клиент для подключения к серверам (ссылка на скачивание), а если нужно решение для подключения к серверам через смартфон, то лучше Termius не найти.
Эта программа доступна для Android и iOS, а также довольно легкая и удобная в использовании. После скачивания и установки, создайте бесплатный аккаунт, которого нам вполне достаточно.
Далее давайте подключимся к нашему серверу через телефон, для этого нажимаем плюсик и выбираем "New host"
В целях безопасности Termius не даёт сделать скриншот следующего экрана, поэтому напишу, какие поля нужно заполнить:
После этого нажимаем на "Host" и подключаемся к нашему серверу, где можем вводить команды.
Конечно, подключаться к серверу и вводить команды с компьютера удобней, но иногда нужно срочно обновить ноду, а под рукой только телефон и гайд, то в таких случаях Termius очень сильно выручает.
DevOps: общие понятия
Перед тем, как знакомиться с более серьёзными инструментами, предлагаем разобраться с профессией DevOps — что это такое и зачем нужно? Возможно, кто-то захочет заниматься этим более профессионально, то у нас есть для вас дорожная карта по изучению этого направления.
DevOps — это методика, объединяющая разработку (Dev) и эксплуатацию (Ops) для ускорения и автоматизации создания, тестирования и развертывания программ. Основные принципы DevOps включают тесное сотрудничество между командами, автоматизацию повторяющихся задач, мониторинг и быструю адаптацию к изменениям.
DevOps-инженер: что входит в его обязанности
DevOps-инженер — это специалист, который помогает наладить быструю и стабильную работу разработки и эксплуатации программ. Основные задачи DevOps-инженера:
- Настройка автоматических процессов сборки и развертывания (CI/CD), чтобы обновления программ выходили быстрее.
- Автоматизация инфраструктуры, чтобы упростить управление ресурсами.
- Работа с командами разработки, тестирования и администрирования для лучшей координации.
- Мониторинг и повышение доступности приложений.
- Нахождение и устранение проблем в рабочих процессах.
DevOps-инженер делает процессы разработки и поддержки удобными и эффективными для всех команд.
Выбор языка программирования
Для DevOps-инженера выбор подходящего языка программирования является ключевым. Языки, такие как Python и Go, выделяются своей функциональностью и эффективностью.
Python — один из самых популярных языков программирования для DevOps из-за его простоты, огромного сообщества и множества библиотек для автоматизации. Он идеален для написания скриптов, управления конфигурацией и взаимодействия с API.
Go был создан для высокой производительности и параллельного программирования, что делает его полезным для создания высоко нагруженных DevOps-инструментов, таких как контейнеры и микросервисы. Он обладает легким синтаксисом, а бинарные файлы, скомпилированные на Go, быстро работают в средах с низкими ресурсами, что делает его идеальным для управления инфраструктурой в облаке.
Выбор между Python и Go зависит от специфических требований работы. Python идеален для простых автоматизаций, скриптов и API-управления, тогда как Go — лучший выбор для построения масштабируемых и высокопроизводительных систем.
Операционные системы, сетевые протоколы и виртуализация
Для DevOps-инженера понимание операционных систем и их принципов работы — это основа, ведь именно на них разворачиваются все приложения и сервисы. Вот зачем это нужно:
- Операционные системы: большинство серверов работают на Linux, поэтому важно изучить такие аспекты, как systemd (система управления процессами), командная строка (например, команды awk, sed, jq, ssh), и общие принципы управления производительностью.
- Сетевые протоколы: знание сетевых протоколов (например, HTTP/2, DNS, MTL, прокси) помогает DevOps-инженеру поддерживать стабильную связь между системами, отлаживать сеть и обеспечивать её безопасность.
- Виртуализация: это создание изолированных сред для тестирования и разработки. Виртуализация позволяет эффективно использовать ресурсы, создавая виртуальные машины и контейнеры для различных проектов.
Docker и Kubernetes
Знание Docker — важный навык для DevOps-инженера, так как он помогает быстро создавать тестовые среды, развертывать приложения и тестировать их в изолированных контейнерах. Docker — это мощная платформа с открытым исходным кодом, которая позволяет «упаковать» приложение и все его зависимости в контейнер, что облегчает запуск на любом сервере.
Kubernetes — это платформа для автоматического управления контейнерами, предназначенная для организации и распределения контейнеров на множестве серверов. Она предоставляет множество функций, полезных для DevOps-инженеров:
- Масштабирование: Kubernetes автоматически увеличивает или уменьшает количество контейнеров в зависимости от нагрузки, обеспечивая гибкость и экономию ресурсов.
- Деплоймент и шаблоны: Упрощает развертывание приложений через готовые шаблоны, поддерживая стандарты DevOps и Development Operations.
- Управление рабочими нагрузками: Kubernetes помогает эффективно распределять задачи между контейнерами, что особенно полезно в сложных приложениях с множеством микросервисов.
- Организация сервисов: Упрощает интеграцию и управление сервисами между контейнерами, обеспечивая связь и балансировку нагрузки.
Эти функции делают Kubernetes мощным инструментом для DevOps-сред, помогая управлять, тестировать и обновлять контейнерные приложения в масштабируемой и контролируемой среде.
Docker и Kubernetes работают с контейнерами, но их цели различаются.
- Docker — это инструмент для создания, упаковки и запуска контейнеров. С ним разработчики создают изолированные среды для приложений, обеспечивая стабильность и переносимость.
- Kubernetes — это платформа для управления контейнерами на множестве серверов. Он контролирует масштабирование, доступность и распределение ресурсов, автоматически распределяя контейнеры между хостами. Kubernetes поддерживает целые кластеры контейнеров, обеспечивая стабильность и управление при увеличении нагрузки.
Docker подходит для создания контейнеров, а Kubernetes — для их координации в больших масштабах.
CI/CD
CI/CD — это подход к разработке, который автоматизирует проверку и выпуск кода.
- CI (Continuous Integration): автоматически собирает и тестирует код после каждого изменения. Это позволяет быстро находить ошибки и ускоряет работу команды.
- CD (Continuous Delivery): автоматически развертывает код в продакшн после успешного тестирования. Это сокращает время между разработкой и выпуском, помогая быстрее доставить обновления пользователям.
Инструменты CI/CD, такие как GitLab, Jenkins и Bamboo, упрощают автоматизацию тестов и развертывания для разных команд и проектов.
Облачные технологии и безопасность в DevOps
Современные DevOps-инженеры должны понимать, как работают облачные сервисы и как обеспечить защиту данных в облаке.
- Облачные сервисы: Понимание IaaS (инфраструктура как сервис) и PaaS (платформа как сервис) помогает инженерам быстро разворачивать и поддерживать приложения. Например, Kubernetes на облачных платформах упрощает управление контейнерами.
- Информационная безопасность: Важная часть DevOps, где инженерам нужно разбираться в сквозном шифровании, управлении доступом (IAM), а также соблюдать стандарты (NIST, ISO27001). Эти меры помогают защищать данные и предотвращать несанкционированный доступ.
Коротко о DevOps
DevOps объединяет разработку и эксплуатацию для создания, тестирования и развертывания приложений в одном цикле. Этот подход включает автоматизацию процессов (CI/CD), контейнеризацию с Docker, управление кластерами с Kubernetes и использование облачных сервисов для масштабирования. Ключевая задача DevOps — поддерживать безопасность, оптимизировать ресурсы и ускорять выпуск обновлений, обеспечивая эффективную совместную работу команд. Сочетание знаний в автоматизации, безопасности и облачных технологиях позволяет DevOps-инженерам поддерживать продуктивность на всех этапах разработки.
Bash-скрипты: основы
На скриншоте выше, это тоже bash-скрипт, который выводит будто картинку, но по факту, это набор символов.
Bash-скрипты — это последовательность команд, которые автоматически выполняются в терминале. Они помогают автоматизировать задачи, управлять файлами, запускать приложения и упрощают повторяющиеся процессы. Bash широко используется системными администраторами, разработчиками и нодерами, так как позволяет экономить время и делать рутинные задачи на автомате.
Командная строка — это мощный инструмент, но каждый раз повторно вводить команды бывает неудобно. Если записать несколько команд в файл, а затем запускать этот файл, это позволит автоматизировать рутинные действия. Такой файл называют сценарием или скриптом командной строки.
Структура bash-скрипта
Каждый Bash-скрипт начинается с шебанга (#!/bin/bash
), который указывает, что скрипт должен выполняться в оболочке Bash. Комментарии в Bash начинаются с #
, и они помогают документировать код, но в первой строчке #
используется именно для определения оболочки.
#!/bin/bash # Это пример скрипта echo "Пример структуры"
Чтобы создать файл скрипта, нужно дать ему имя и приписать расширение файла .sh
. Для этого можно использовать команду touch
touch mybash.sh
Теперь редактируем содержимое нашего скрипта, для этого вводим эту команду и вставляем содержимое
nano mybash.sh
После этого сохраняем файл CTRL+X
, потом Y
и Enter.
Если мы попробуем запустить наш скрипт, то получим следующую ошибку
Перед запуском нам нужно сделать файл исполняемым
chmod +x ./mybash.sh
Теперь запускаем наш скрипт и видим такой вывод
./mybash.sh
Как видите, наш скрипт отработал, как положено — вывел текст, который мы и прописывали в скрипте.
Команда вывода сообщений
Команда echo
выводит текст или значения переменных. Она полезна для отображения сообщений или результатов выполнения скрипта. Но скрипты на bash хороши тем, что можно комбинировать много команд. Например, нам нужно узнать версию операционной системы и под каким пользователем мы сейчас работаем на сервере. Но мы ходим не просто узнать, а и подписать вывод соответстующем текстом, напишем скрипт
#!/bin/bash # Скрипт для вывода версии OS и пользователя echo "Версия OS:" # Вывод сообщения lsb_release -a # Команда для проверки версии OS echo "Пользователь:" # Вывод сообщения whoami # Команда для проверки пользователя
После запуска скрипта мы узнали, что на сервере стоит Ubuntu 20.04 и работаем мы с под root
Переменные
Переменные в Bash-скриптах позволяют сохранять данные, такие как результаты команд, чтобы затем использовать их в других частях сценария. Это помогает избежать повторного ввода и улучшает читаемость скрипта.
1. Переменные среды
Переменные среды — это предопределенные системные переменные, содержащие информацию о системе. Например:
$USER
— имя пользователя$HOME
— домашняя директория$PATH
— список директорий, где Linux ищет исполняемые файлы
#!/bin/bash echo "Моя домашняя папка называется: $HOME"
2. Пользовательские переменные
Пользовательские переменные создаются в самом скрипте и могут хранить нужные значения:
#!/bin/bash MY_VAR_Q="Видишь суслика?" MY_VAR_AN="Нет" echo $MY_VAR_Q echo $MY_VAR_AN
Если в тексте вам нужно написать значок доллара, например, "Я заработал $50 на дропе Scroll!", то система подумает, что $50 — это переменная и будет ошибка. В данном случае нам нужно использовать обратную косую черту перед знаком доллара, то есть "Я заработал \$50 на дропе Scroll!"
Подстановка команд
Одним из самых полезных свойств Bash-скриптов является возможность сохранять вывод команд в переменные и использовать их в дальнейшем. Это упрощает работу со сложными сценариями, позволяя обрабатывать данные динамически.
Пример извлечения информации из команд и назначения переменным:
#!/bin/bash # Сохраняем список файлов в переменную FILES FILES=$(ls) echo "Список файлов в текущей директории: $FILES" # Извлечение текущего пользователя USER_NAME=$(whoami) echo "Вы вошли как: $USER_NAME"
Математические операции
Bash поддерживает простые математические операции с помощью $((...))
. Это удобно для выполнения сложения, вычитания и других операций.
#!/bin/bash x=5 y=3 echo $((x + y))
Управляющая конструкция if-then
Конструкция if-then
позволяет выполнять команды, если условие истинно:
#!/bin/bash if pwd then echo "Это работает!" fi
В данному случае, если условие будет ложным, то текст не выведится.
Управляющая конструкция if-then-else
С помощью if-then-else
можно добавить выполнение команды при ложном условии:
#!/bin/bash if pwd then echo "Это работает!" else echo "Что-то сломалась..." fi
В отличии от предыдущей конструкции, здесь можно задать условие и при ложном резудьтате.
Сравнение чисел и строк
В Bash для сравнения чисел и строк используются разные операторы.
Для работы с числами в Bash можно использовать следующие операторы:
#!/bin/bash a=5 b=10 if [ $a -lt $b ]; then echo "a меньше b" fi
В Bash для работы со строками используются следующие операторы:
str1 = str2
: возвращает истину, если строкиstr1
иstr2
идентичны.str1 != str2
: истина, если строки не совпадают.str1 < str2
: истина, еслиstr1
меньшеstr2
(лексикографически).str1 > str2
: истина, еслиstr1
большеstr2
.-n str1
: истина, если строкаstr1
не пустая.-z str1
: истина, если строкаstr1
пустая.
#!/bin/bash str1="hello" str2="world" if [ "$str1" != "$str2" ]; then echo "Строки не совпадают" fi
Эти простые условия позволяют проверять значения и работать с ними в скриптах.
Проверки файлов
Bash-скрипты позволяют выполнять различные проверки файлов, чтобы убедиться в их существовании, типе, доступе и других свойствах. Вот основные проверки, которые пригодятся при работе с файлами:
-d file
: проверяет, существует ли файл и является ли он директорией.-e file
: проверяет, существует ли файл (любой тип).-f file
: проверяет, существует ли файл и является ли он обычным файлом.-r file
: проверяет, доступен ли файл для чтения.-s file
: проверяет, не пустой ли файл.-w file
: проверяет, доступен ли файл для записи.-x file
: проверяет, исполняемый ли файл.file1 -nt file2
: проверяет, новее лиfile1
, чемfile2
.file1 -ot file2
: проверяет, старше лиfile1
, чемfile2
.-O file
: проверяет, является ли текущий пользователь владельцем файла.-G file
: проверяет, соответствует ли файл группе текущего пользователя.
Пример Bash-скрипта с несколькими проверками для файла example.txt
:
file="example.txt" # Проверяем, является ли файл обычным и доступен ли он для чтения if [ -f "$file" ] && [ -r "$file" ]; then echo "Файл существует и доступен для чтения." fi # Проверяем, если файл исполняемый if [ -x "$file" ]; then echo "Файл является исполняемым." fi # Проверяем, старше ли example.txt по сравнению с другим файлом old_example.txt if [ "$file" -ot "old_example.txt" ]; then echo "$file старше чем old_example.txt" fi
Этот скрипт использует несколько проверок, чтобы узнать, существует ли example.txt
, доступен ли он для чтения, является ли он исполняемым и новее ли он другого файла.
Итоги по Bash-скриптам
Bash-скрипты — это мощный инструмент автоматизации для пользователей Linux, позволяющий запускать команды, работать с переменными, условиями и циклами. С их помощью можно выполнять простые задачи, такие как вывод сообщений, а также сложные проверки и операции с файлами. Важные функции включают подстановку команд, использование условий if
, проверки чисел и строк, и работу с файлами. Эти возможности делают Bash-скрипты незаменимыми для автоматизации рутинных задач, повышения производительности и упрощения администрирования в Linux.
Работа с портами на серверах
Порты — это виртуальные точки подключения, которые позволяют устройствам в сети обмениваться данными. Они необходимы для связи между сервером и клиентом, где каждый порт ассоциируется с определенным типом данных или приложением. Основные типы портов — TCP и UDP:
Понимание работы портов помогает эффективно управлять сетевыми соединениями и безопасностью.
Файрволл
Файрволл (или брандмауэр) — это ключевой инструмент сетевой безопасности, который контролирует входящие и исходящие подключения. Файрволл работает по заданным правилам, позволяя одни типы трафика и блокируя другие. Этот процесс важен для защиты серверов, предотвращения несанкционированного доступа и фильтрации вредоносного контента.
Основные функции файрволла
- Контроль доступа: Файрволл устанавливает, кто и что может подключаться к серверу. Это защищает серверы от потенциально опасного трафика и несанкционированных подключений.
- Управление трафиком по правилам: Правила, заданные на файрволле, определяют, какой тип трафика разрешен, а какой заблокирован. Администраторы могут блокировать порты, IP-адреса, протоколы и даже целые диапазоны адресов.
- Мониторинг активности: Файрволл фиксирует попытки подключения, успешные и заблокированные соединения. Это помогает выявить потенциальные угрозы, такие как DDoS-атаки или попытки несанкционированного доступа.
- Типы фильтрации:
- Фильтрация по IP-адресу: разрешает или блокирует доступ на основе IP.
- Фильтрация по портам: управление соединениями по номеру порта, например, блокировка порта 21 (FTP) для защиты от удаленного доступа.
- Фильтрация по протоколу: определяет, какие протоколы (например, HTTP, HTTPS, FTP) могут быть использованы.
Пример настройки файрволла с ufw
Для управления доступом к определенным портам и IP-адресам можно использовать ufw
(Uncomplicated Firewall), который облегчает настройку файрволла в Linux:
sudo ufw status
sudo ufw enable
sudo ufw disable
sudo ufw status verbose
sudo ufw allow 9090/tcp
sudo ufw deny 9090/tcp
sudo ufw deny from 192.168.1.10
Пример настройки файрволла с iptables
iptables
— это утилита командной строки для настройки правил файрволла на основе пакетов в Linux. Он работает на уровне ядра через систему netfilter
, которая позволяет фильтровать, перенаправлять и контролировать трафик.
- Фильтрация пакетов:
iptables
использует цепочки правил для управления потоком данных, блокируя или разрешая пакеты на основе IP-адресов, портов и протоколов. - Нат (Network Address Translation):
iptables
поддерживает маршрутизацию, изменяя IP-адреса исходящих и входящих пакетов. - Логирование:
iptables
может записывать информацию о пакетах, которые соответствуют определённым правилам, для мониторинга сетевой активности.
sudo iptables -A INPUT -p tcp --dport 9090 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 9090 -j DROP
sudo iptables-save > /etc/iptables/rules.v4
sudo iptables -L -v
sudo iptables -F
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 9090
Проверка портов
Чтобы проверить, какие порты открыты на сервере, есть несколько полезных команд.
ss -tuln
netstat -tuln
Эти команды отображают список открытых портов и активных подключений.
sudo fuser -n tcp 8888
sudo lsof -i :8888
Эти команды позволяют увидеть, какое приложение использует указанный порт (например, 8888
).
Итого по портам
Порты — это точки связи, через которые сервер принимает и отправляет данные. Управление открытыми и прослушиваемыми портами помогает защитить сервер от несанкционированного доступа и сетевых атак. Основные шаги безопасности включают:
- Проверка открытых портов: позволяет узнать, какие порты активны и какие приложения их используют.
- Ограничение доступа к портам: блокировка ненужных портов через файрволл, чтобы предотвратить неавторизованный доступ.
- Мониторинг активности: регулярные проверки помогают обнаружить возможные угрозы и предотвратить атаки.
Outline: настройка прокси-сервера
Всегда приятно иметь свой прокси-сервер, особенно если вы и так запускаете ноды и отдельно под прокси ничего арендовать не нужно. Зачастую некоторые сайты ограничивают посещения с конретных стран и VPN-расширения в браузерах не всегда помогают, но проски-сервер выручит в большинстве случаев.
Почему Outline?
Существует много достойных сервисов для запуска своего прокси-сервера, но я хочу показать настройку именно на примере Outline, так как ежедневно использую его вот уже около двух лет:
- Определение и назначение Outline: это инструмент для создания безопасного прокси-сервера, позволяющий пользователям обойти цензуру и защитить личные данные при выходе в интернет.
- Типы прокси-серверов: Outline применяет протокол Shadowsocks, известный своей скоростью и защитой от блокировок, что делает его удобным для частного и корпоративного использования. Outline очень хорошо маскирует прокси-трафик под обычный.
- Основные функции: Outline защищает соединение, маскируя трафик, скрывает IP-адрес и может обходить географические ограничения, поддерживая доступ к заблокированным ресурсам.
- Плюсы и минусы: Outline обеспечивает простоту установки и стабильную защиту, но требует сервер, а также может замедлять соединение при большой нагрузке.
Начало работы
На самом сайте продукта есть исчерпывающая интструкция по настройке прокси-сервера буквально за 5 минут, но давайте разберём пошагово.
Для работы нам понадобятся два продукта — Outline Manager и Outline Client:
- Для скачивания менеджера — переходим по ссылке, выбираем OS и загружаем
- Для скачивания клиента — переходим по ссылке, выбираем OS и загружаем (я использую и на ноутбуке, и на смартфоне)
После скачивания открываем Outline Manager и нажимаем на плюс
Далее в блоке "Настроить Outline где угодно" нажимаем "Настроить"
Далее копируем команду с первого пункта и вставляем её на сервер
Теперь нужно скопировать, то что выделено (включая фигурные скобки в начале и в конце), вставить в пункт №2 и нажать "Готово"
Теперь у нас настроен прокси-сервер и мы можем управлять ключами к нему
Нажимаем на значок "Поделиться" и копируем ключ доступа
На этом работа с менеджером закончена и нам необходимо открыть Outline Client, в нём нажимаем на плюсик
Вставляем наш ключ доступа и нажимаем "Добавить сервер"
Готов! Мы добавили наш прокси сервер, теперь можете нажать на "Подключиться" и весь трафик с компьютера будет идти через прокси-сервер, который мы только что настроили. Также можно нажать на три точки, где есть опции переименовать и скрыть сервер.
Итоги по Outline
В современном мире безопасность и конфиденциальность в интернете становятся все более важными. Outline предоставляет удобный способ создания безопасного прокси-сервера, который помогает пользователям обходить цензуру и защищать свои данные. Сервис создан для того, чтобы каждый мог использовать интернет свободно и безопасно. Outline предоставляет простую настройку, высокую скорость соединения и защищенное подключение, что делает его полезным инструментом как для личного использования, так и для организаций.
Знакомство с Docker
Docker — это платформа для контейнеризации, которая упрощает упаковку приложений в изолированные среды, называемые контейнерами. Основное преимущество Docker в том, что контейнеры работают одинаково на разных компьютерах и серверах, что значительно упрощает развертывание и поддержку приложений.
Основные компоненты Docker
Docker состоит из нескольких ключевых компонентов, каждый из которых выполняет свою роль:
- Образ (Image): это шаблон, содержащий всё, что нужно для работы приложения: операционную систему, зависимости, библиотеки, настройки. Образ можно представить как «чертёж», из которого запускаются контейнеры.
- Контейнер (Container): это запущенный экземпляр образа. Он представляет собой изолированную среду, где работают приложения. Контейнеры легковесные и занимают меньше ресурсов, чем виртуальные машины.
- Dockerfile: это текстовый файл, содержащий инструкции по созданию образа. С Dockerfile можно автоматизировать процесс настройки и сборки образов.
- Volume: Это место для хранения данных, независимое от контейнера. Данные в Volume сохраняются, даже если контейнер перезапускается.
Установка Docker
Чтобы установить Docker, выполните следующие команды на системе с Ubuntu.
sudo apt-get update
sudo apt-get install -y docker.io
docker --version
Основные команды Docker
После установки Docker используйте следующие команды для работы с ним.
docker pull nginx
docker run -d -p 8080:80 nginx
docker run -d --restart always nginx
docker ps
docker ps -a
docker stop <ID контейнера>
docker start <ID контейнера>
docker restart <ID контейнера>
docker rm <ID контейнера>
docker images
docker rmi <ID образа>
docker logs <ID контейнера>
docker logs -f <ID контейнера>
docker logs --tail 100 <ID контейнера>
docker exec -it <ID контейнера> /bin/bash
docker build -t my-custom-image .
Dockerfile: что это и для чего он нужен?
Dockerfile — текстовый файл, в котором описаны инструкции для создания Docker-образа. Он автоматизирует процесс создания образов, указывая, какие шаги и команды нужны для настройки среды, в которой будет работать приложение.
FROM ubuntu:20.04
COPY . /app
RUN apt-get update && apt-get install -y nginx
CMD ["nginx", "-g", "daemon off;"]
EXPOSE 80
# Указание базового образа FROM nginx:alpine # Копирование файлов в контейнер COPY . /usr/share/nginx/html # Открытие порта 80 для доступа EXPOSE 80 # Запуск Nginx при старте контейнера CMD ["nginx", "-g", "daemon off;"]
Управление контейнерами
Для работы с контейнерами можно использовать как Docker CLI, так и более сложные инструменты оркестрации, такие как Docker Compose или Kubernetes.
Docker Compose: используется для управления многоконтейнерными приложениями с помощью YAML-файла.
version: '3' services: web: image: nginx ports: - "8080:80" restart: always db: image: mysql environment: MYSQL_ROOT_PASSWORD: example restart: on-failure
Основные команды Docker Compose:
Команды docker-compose
работают только в той директории, где находится файл docker-compose.yml
Kubernetes: система для автоматизации развертывания и управления контейнерными приложениями в больших инфраструктурах.
Статусы контейнеров в Docker
Контейнеры в Docker могут находиться в различных состояниях:
docker ps
docker ps -a
Хранение данных в Docker
Контейнеры Docker являются эфемерными, поэтому их данные удаляются после остановки. Чтобы сохранить данные, используются:
docker run -v /data:/var/lib/mysql mysql
docker run -v /path/on/host:/path/in/container nginx
Работа с файлами .env
Файл .env
хранит переменные окружения и позволяет передавать их в контейнеры, например, пароли, порты и конфигурации.
MYSQL_ROOT_PASSWORD=supersecretpassword MYSQL_DATABASE=mydatabase
version: '3' services: db: image: mysql environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} MYSQL_DATABASE: ${MYSQL_DATABASE}
docker run -d -e MYSQL_ROOT_PASSWORD=supersecretpassword -e MYSQL_DATABASE=mydatabase mysql
В этом примере -e
указывает Docker, что нужно задать переменные окружения MYSQL_ROOT_PASSWORD
и MYSQL_DATABASE
в контейнере.
Итоги по Docker
Docker — удобный инструмент для создания и развертывания приложений. Он изолирует приложения в контейнеры, делая их независимыми от системы. Начав с базовых команд, вы сможете эффективно управлять контейнерами, переходя к оркестрации и масштабированию.
Prometheus+Grafana: мониторинг серверов
Prometheus и Grafana — это два ключевых инструмента, которые позволяют следить за состоянием систем и приложений в реальном времени.
- Prometheus — система мониторинга и сбора данных, созданная для работы в среде контейнеров. Он собирает и сохраняет метрики, обеспечивая автоматическое оповещение об аномалиях.
- Grafana — визуальный инструмент для создания дашбордов. Он помогает быстро и удобно отслеживать метрики, логи и тревоги, превращая данные в наглядные графики и диаграммы.
Вместе они помогают разработчикам и администраторам видеть общую картину работы инфраструктуры и быстро реагировать на возможные проблемы.
Для начала давайте разберёмся, как это работает:
- На сервера с нодами нужно будет установить node-exporter. Этот инструмент собирает и передает данные о состоянии аппаратных ресурсов.
- Арендуем минимальный сервер (1 CPU, 1 RAM, 10 GB) для мониторинга. На этом сервере нужно будет установить Prometheus для сбора метрик от node-exporter и Grafana для визуализации данных.
Для лучшего понимания, изобразим схематически. Например, у вас есть три сервера, на которых запущены ноды и на них нужно установить node-exporter, а также вы арендовали минимальный сервер, на который нужно установить Prometheus и Grafana.
Установка node-exporter
Для начала установим node-exporter на сервер, который хотим отслеживать. Пока что я покажу, как настроить мониторинг на одном сервере, а потом, как сделать это для нескольких серверов с вашими нодами.
- Мы написали скрипт, чтобы упростить вам установку, просто запустите эту команду на сервере, который хотите отслеживать
wget -q -O node_exporter.sh https://raw.githubusercontent.com/noxuspace/cryptofortochka/main/node_exporter.sh && sudo chmod +x node_exporter.sh && ./node_exporter.sh
sudo journalctl -u exporterd -f
Переходим по адресу http://<IP_ADDRESS>:9100/metrics , где <IP_ADDRESS> — это IP вашего сервера, на который мы установили node-exporter. На скрине видно, какие метрики експортируются.
Установка и настройка Prometheus
На этом этапе у вас уже должен быть арендован сервер с минимальными параметрами, на который мы и будем сейчас устанавливать Prometheus, а потом и Grafana.
wget https://github.com/prometheus/prometheus/releases/download/v2.28.1/prometheus-2.28.1.linux-amd64.tar.gz && \tar xvf prometheus-2.28.1.linux-amd64.tar.gz && \rm prometheus-2.28.1.linux-amd64.tar.gz && \mv prometheus-2.28.1.linux-amd64 prometheus
nano $HOME/prometheus/prometheus.yml
Изначально у вас будет такой файл
После 'localhost:9090' через запятую вам нужно прописать IP сервера, на котором мы устанавливали node-exporter, с портом 9100.
Обратите внимание, что прописывать нужно в одинарных скобках. Вот правильный формат - targets: ['localhost:9090', 'IP:9100']
chmod +x $HOME/prometheus/prometheus
sudo tee /etc/systemd/system/prometheusd.service > /dev/null <<EOF [Unit] Description=node_exporter After=network-online.target [Service] User=$USER ExecStart=$HOME/prometheus/prometheus --config.file="$HOME/prometheus/prometheus.yml" Restart=always RestartSec=3 LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
sudo systemctl daemon-reload && sudo systemctl enable prometheusd && sudo systemctl restart prometheusd
sudo journalctl -u prometheusd -f
- Переходим в браузере по адресу: http://<IP_ADDRESS>:9090/targets, где <IP_ADDRESS> — это IP сервера, куда мы только что установили Prometheus.
- На этом скрине видно сервер на котором стоит Prometheus (localhost) и сервер на который мы ставили node-exporter.
Установка и настройка Grafana
sudo apt-get install -y adduser libfontconfig1 && wget https://dl.grafana.com/oss/release/grafana_8.0.6_amd64.deb && sudo dpkg -i grafana_8.0.6_amd64.deb
sudo systemctl daemon-reload && sudo systemctl enable grafana-server && sudo systemctl restart grafana-server
sudo journalctl -u grafana-server -f
- Переходим в браузере по адресу http://<IP_ADDRESS>:3000, где <IP_ADDRESS> — IP сервера, на который мы установили Prometheus и Grafana.
По умолчанию данные для входа:
- После ввода вам сразу нужно будет поменять на свой пароль.
- После этого нужно добавить источник данных, для этого на главной странице нажимаем на блок DATA SOURCES.
- В поле URL вводим http://<IP_ADDRESS>:9090 , где <IP_ADDRESS> — IP сервера на котором стоит Prometheus и Grafana. Далее листаем вниз страницы и нажимаем кнопку "Save&test"
- Теперь нам нужен дашборд для визуализации — кто-то пробует делать сам, но мы скачаем бесплатный дашборд с Github. Для этого нажимаем на + и выбираем "Import"
- Переходим по этой ссылке и качаем дашборд
Добавление нескольких серверов для мониторинга
Сейчас покажу, как добавить ещё один сервер для мониторинга в этом же дашборде. Все последующие добавляются аналогично и вы сможете добавить их сколько захотите.
wget -q -O node_exporter.sh https://raw.githubusercontent.com/noxuspace/cryptofortochka/main/node_exporter.sh && sudo chmod +x node_exporter.sh && ./node_exporter.sh
sudo journalctl -u exporterd -f
- Теперь переходим на сервер с Prometheus и Grafana, где нам нужно отредактировать файл prometheus.yml.
- Для этого выполняем команду...
nano $HOME/prometheus/prometheus.yml
- ...и добавляем IP, только строго соблюдаем пробелы и конструкцию, а также не используйте в названиях пробелы. Должно выглядеть так:
scrape_configs: - job_name: 'prometheus' static_configs: - targets: ['localhost:9090'] labels: label: 'local_prometheus' - targets: ['IP1:9100'] labels: label: 'server_1' - targets: ['IP2:9100'] # добавьте IP или адрес нового сервера labels: label: 'server_2'
Не забудьте сохранить файл — последовательным нажатием CTRL+X
, Y
и Enter.
sudo systemctl restart prometheusd
Если вы удалили или переименовали сервер, то он может задублироваться или просто не исчезнет, но ничего делать не нужно — через 10-15 минут всё само исправится.
Итоги по Prometheus и Grafana
Prometheus и Grafana — мощное сочетание инструментов для мониторинга и визуализации данных, обеспечивающее глубокое понимание состояния систем и приложений. Prometheus собирает метрики и отслеживает их изменения, а Grafana превращает эти данные в удобные дашборды, которые помогают легко анализировать и выявлять проблемы. Вместе они помогают разработчикам и администраторам быстро реагировать на изменения, контролировать ресурсы и повышать надежность инфраструктуры, что делает их незаменимыми для современных IT-систем и нодранеров.
WebVirtCloud: управление виртуальными машинами
WebVirtCloud — это удобный веб-инструмент для управления виртуальными машинами на базе KVM. Он позволяет пользователям создавать и администрировать виртуальные серверы через простой интерфейс, не требуя сложных команд. С WebVirtCloud вы можете легко запускать, останавливать, клонировать и контролировать виртуальные машины, что делает виртуализацию доступной даже для новичков.
Виртуальные машины (ВМ) — это программные «компьютеры» внутри физического компьютера. Они позволяют запускать несколько операционных систем и приложений независимо друг от друга на одном сервере или ПК.
Зачем нужны виртуальные машины? ВМ позволяют экономить ресурсы, изолировать задачи и повышать безопасность. Например, вы можете запустить одну ВМ для тестирования новой программы, а другую — для работы с важными файлами, не боясь, что одна задача повлияет на другую.
Проверка сервера на виртуализацию
sudo apt update
grep -E -c "vmx|svm" /proc/cpuinfo
apt-get install cpu-checker -y
kvm-ok
Установка WebVirtCloud
sudo apt install git virtualenv python3-virtualenv python3-dev -y
sudo apt install python3-lxml libvirt-dev zlib1g-dev libxslt1-dev -y
sudo apt install nginx supervisor -y
sudo apt install libsasl2-modules gcc pkg-config python3-guestfs -y
sudo apt install libsasl2-dev libldap2-dev libssl-dev -y
git clone https://github.com/retspen/webvirtcloud cd webvirtcloud cp webvirtcloud/settings.py.template webvirtcloud/settings.py
openssl rand -base64 32
sudo nano $HOME/webvirtcloud/webvirtcloud/settings.py
Не забудьте сохранить файл — последовательным нажатием CTRL+X
, Y
и Enter.
sudo cp conf/supervisor/webvirtcloud.conf /etc/supervisor/conf.d sudo cp conf/nginx/webvirtcloud.conf /etc/nginx/conf.d cd .. sudo mv webvirtcloud /srv sudo chown -R www-data:www-data /srv/webvirtcloud cd /srv/webvirtcloud sudo virtualenv -p python3 venv source venv/bin/activate pip install -r conf/requirements.txt python3 manage.py migrate python3 manage.py collectstatic --noinput sudo chown -R www-data:www-data /srv/webvirtcloud sudo rm /etc/nginx/sites-enabled/default
sudo service nginx restart
sudo service supervisor restart
wget -O - https://bit.ly/36baWUu | sudo sh
echo "chmod 777 /var/run/libvirt/libvirt-sock" >> ~/.bash_profile source ~/.bash_profile
Работа с панелью WebVirtCloud
- Переходим в браузере по ссылке http://IP_ВАШЕГО_СЕРВЕРА и увидим страницу входа, логин и пароль — admin
- Первым делом меняем пароль, для этого нажимаем на "admin", выбираем "Profile" и нажимаем на кнопку "Change Password"
mkdir $HOME/kvm/
mkdir $HOME/kvm/{iso,images}
cd /home/kvm/iso/ wget https://releases.ubuntu.com/20.04/ubuntu-20.04.6-live-server-amd64.iso
- Образ будет скачиваться некоторое время, поэтому возвращаемся к панели WebVirtCloud, а именно перейдем во вкладку Storage и нажмем плюсик
Настройка сети сервера
- Нужно проверить запущен ли virbr0, для этого из раздела Computes переходим в меню Networks и нажимаем default
- У меня virbr0 уже запущен, но если у вас вместо Stop будет написано Start, то нажмите на кнопку, если же пишет Stop, то ничего делать не нужно
Создание первой виртуальной машини
- Далее изменим параметры нашей виртуальной машины, то есть выберем нужное количество для CPU, RAM и место на жестком диске, но нужно учитывать мощности сервера.
Например, нам нужно несколько не особо мощных виртуальных машин, а именно 2CPU/4RAM/50Gb. Нажимаем на "Resize" и вкладке CPU выбираем нужные значения — у верхнем поле вписываем 2, а в нижнем можно посмотреть максимум вашего сервера. Изминения сохраняем нажав кнопку "Resize"
Клонирование виртуальных машин
Важно! Лучше не запускать первую ВМ до клонирования, чтобы избежать ошибок и дополнительной работы.
Запуск и установка Ubuntu 20.04
- Откроется окно с доступом к нашей ВМ, нужно будет немного подождать и потом выбрать язык, я продолжу на английском
- Должен отобразиться IP подсети, обязательно сохраните его, он нам пригодится позже. Если сохранили, то нажимаем Enter
Подключение к ВМ
Мне не по душе подключение через VNC, поэтому покажу, как это сделать через MobaXtreme.
Выше я просил сохранить IP, в моём случае это 192.168.122.XXX.
sudo iptables -I FORWARD -o virbr0 -d 192.168.122.XXX -j ACCEPT
sudo iptables -t nat -I PREROUTING -p tcp --dport PPPP -j DNAT --to 192.168.122.XXX:22
Где XXX — это окончание IP виртуальной машины, а PPPP — порт, через который мы будем подключаться.
Например, IP виртуальной машины 192.168.122.111 и вы выбрали порт 4444, то для вас команды будут следующие
sudo iptables -I FORWARD -o virbr0 -d 192.168.122.111 -j ACCEPT
sudo iptables -t nat -I PREROUTING -p tcp --dport 4444 -j DNAT --to 192.168.122.111:22
- Теперь чтобы подключиться через MobaXtreme с помощью SSH, нужно прописать команду и ввести пароль от ВМ
ssh -p 4444 ВАШ_ЛОГИН@IP_ВАШЕГО_СЕРВЕРА_ХОСТА (не IP виртуальной машины)
Итоги по WebVirtCloud
WebVirtCloud — это удобное решение для управления виртуальными машинами на базе KVM, которое значительно упрощает администрирование. Его главные преимущества:
- Простота управления: через веб-интерфейс можно легко создавать, запускать и останавливать виртуальные машины, не углубляясь в командную строку.
- Экономия ресурсов: позволяет запускать несколько ВМ на одном физическом сервере, что помогает эффективнее использовать ресурсы.
- Изоляция и безопасность: каждую ВМ можно настраивать и использовать независимо, что обеспечивает защиту данных и изолированное тестирование.
WebVirtCloud делает виртуализацию доступной, особенно для пользователей, которые только начинают работать с KVM и виртуальными машинами.
Заключение
Эта статья создана, чтобы помочь вам глубже разобраться в основах управления серверами и контейнерами, а также освоить ключевые инструменты, такие как Docker, Prometheus, Grafana и многое другое, в целом, чтобы вы понимали как интересен "Мир нод".
Да, материала много и освоить всё за один раз не получиться, но цель написания этой статьи — это создания некой ультимативной шпаргалки, которая всегда выручит в нужный момент. Добавьте в закладки этот мега-гайд и он ещё не раз вам пригодится