HF18: Данные по установке
Документ содержит инструкцию по начал ьной установке и запуску, а также обновлению программного продукта GolosChain на сервере под управлением операционной системы Ubuntu 16.04 либо иной системы семейства Linux с помощью программного обеспечения Docker.
Установку HF•18 на сервер можно выполнить в одном из следующих вариантов:
1. установка с использованием доступной платформы Docker;
2. изначальное построение непосредственно из исходников golosd под управлением операционной системы Ubuntu;
3. обновление GolosChain до версии HF•18 из исходников golosd под управлением операционной системы Ubuntu.
Рекомендуется установку HF•18 выполнять в варианте 1, поскольку использование платформы Docker обеспечивает:
- создание необходимого программного о кружения, в том числе необходимого перечня библиотек, независимо от версии операционной системы;
- создание среды, изолированной от ненужных временных файлов, сохраняемых системой в строящемся пространстве.
Сервер, на который устанавливается HF•18, должен иметь характеристики не хуже:
- объем оперативной памяти:
- объем дисковой памяти: 80 ГБ для API Узла в полной конфигурации;
- операционная система:
- Ubuntu версии 16.04 (или более поздней);
- Linux-система (для установки HF•18 с использованием платформы Docker).
Программный код golosd поддерживает следующие программные обеспечения:
- базовая библиотека: boost версии 1.58;
- компилятор GCC версии 5.х (с поддержкой стандарта С++14).
Перед началом выполнения приведенных в руководстве действий настоятельно рекомендуется:
- сохранить код личного ключа;
- остановить и удалить предыдущую версию GolosChain (только для об новления версии), используя следующие команды:docker stop golos-defaultdocker rm golos-default
Для построения HF•18 требуется сервер с операционной системой Ubuntu 16.04 и определенным набором библиотек. В случае отсутствия сервера с требуемой операционной системой следует воспользоваться сервером с операционной системой семейства Linux. Имеется возможность установки HF•18 на такой сервер с помощью платформы Docker, обеспечивающий создание необходимого окружения, независимо от версии системы Linux.
Установка и функционирование HF•18 на сервер под управлением каких-либо иных классов систем не поддерживается.
Для установки HF•18 на сервер с использованием платформы Docker необходимо выполнить следующие операции:
1. сконфигурировать Docker-образ в отдельном пространстве;
2. создать контейнер с использованием Docker-образа. Контейнер можно размещать как на локальном компьютере, так и на удаленном или виртуальном;
3. воспроизвести блокчейн.
1. Создать репозиторий
golosd
в отдельном пространстве и установить значения переменных в конфигурационных файлах.2. В командном окне войти в директорию, в которой будет создан Docker-образ, и исполнить:
git clone https://github.com/golos-blockchain/golos.git
В пространство, из которого была исполнена команда, должен скопироваться каталог
golos
с его содержимым. В процессе копирования не должны появляться сообщения об ошибках.3. Создать отдельную директорию для конфигурационных файлов, исполнив:
sudo mkdir -p /etc/golosd
4. В созданную директорию
/etc/golosd
скопировать конфигурационные файлы. Используемые для копирования команды:cd golos
sudo cp share/golosd/seednodes /etc/golosd/
sudo cp share/golosd/config/config.ini /etc/golosd/
В директории
golosd
находятся несколько конфигурационных файлов, данные которых можно использовать в качестве базовых для создания необходимого окружения. В следующей таблице приведен перечень основных конфигурационных файлов и их назначение.Конфигурационный файл | Назначение |
share/golosd/config/config.ini | Содержит набор переменных для создания API Узла в полной его конфигурации со всеми включенными плагинами |
share/golosd/config/config_witness.ini | Содержит набор переменных для создания делегатского Узла в конфигурации по умолчанию. Используется делегатами для подписания блоков |
share/golosd/config/config_stock_exchange.ini | Содержит набор переменных для создания Узла для биржевых операций в конфигурации по умолчанию |
Поскольку golosd обрабатывает конфигурационный файл только с именем
config.ini
, то в зависимости от решаемой задачи следует выбрать необходимый конфигурационный файл и скопировать значения его переменных окружения в share/golosd/config/config.ini
.В следующей таблице приведен рекомендуемый перечень переменных окружения, значения которых необходимо установить.
Переменная окружения | Назначение |
witness | |
private-key | Задает код личного ключа active (для делегатского Узла). Тип ключа может быть отличным от active |
plugin | Определяет перечень плагинов. Неиспользуемые плагины могут быть удалены |
Количество задаваемых плагинов в переменной
plugin
влияет на объем используемой памяти, а также быстродействие Узла. Минимальный набор плагинов приведен в файле config_witness.ini
.5. Создать директорию для размещения в ней блокчейна, исполнив:
sudo mkdir -p /var/lib/golosd/
6. В созданную директорию скопировать исходный genesis-файл, исполнив:
sudo cp share/golosd/snapshot5392323.json /var/lib/golosd/
Docker-образ размещается на общедоступном реестре Docker Hub либо создается локально из исходников GolosCore. Из Docker-образа можно создать контейнер на физическом устройстве, на котором установлен Docker. Docker-образ представляет собой тиражируемый образ некоторого объекта, а создаваемый контейнер является самим объектом, который можно запускать и останавливать. Контейнер является изолированным от внешней среды со своими переменными окружения и параметрами запуска. В среде контейнера исполняется Узел. Для запуска одного и того же Узла требуется создание другого контейнера.
Для запуска Docker-образа из GolosCore и создания контейнера исполнить следующую командную строку:
sudo docker run -d \
-p 4243:4243 \
-p 8090:8090 \
-p 8091:8091 \
-v /etc/golosd:/etc/golosd \
-v /var/lib/golosd:/var/lib/golosd \
--name golos-default golosblockchain/golos:latest
где:
-d
— устанавливает запуск контейнера в фоновом режиме;
-p
— устанавливает привязку конкретных портов хоста к портам контейнера;
--name
— задает имя контейнера (golos-default
);
latest
— задает последнюю официальную версию golosd.Для проверки успешного запуска контейнера исполнить команду
sudo docker ps
Создание контейнера считается успешным, если в тексте лог-файла не было со общений об ошибках и в выдаче этой команды появится имя контейнера golos-default с соответствующими портами.
Перед тем, как приступить к непосредственному воспроизведению блокчейна, убедиться в наличии файлов
/var/lib/golosd/blockchain/block_log
и /var/lib/blockchain/block_log.index
.В файле
block_log
хранится список подписанных блоков с транзакциями. В каждой из транзакций содержится перечень операций, которые необходимо выполнить для восстановления состояния системы. Все блоки взаимосвязаны между собой. В процессе появления новых блоков они считываются по сети, добавляются в этот файл и могут быть использованы в дальнейшем. Файл представл яет собой протокол всех операций, как ранее совершенных системой,так и последующих.В файле
shared_memory.bin
хранятся данные о состоянии системы, а также непосредственно база данных, в том числе таблицы с записями и индексы, по которым происходит обращение к ячейкам таблицы.В каждом из плагинов, подобно структуре файла
shared_memory.bin
, содержатся таблицы и индексы, требующие из наполнения с самого начала истории. Во время включения дополнительного плагина его поля остаются пустыми и для их заполнения требуется воспроизведение всех операций из block_log
с самого начала. Этот процесс состоит из множества операций, требующий обработку каждого блока.Поскольку операция считывания отдельного блока по сети значительно превышает по времени операцию считывания из локальной области, использование
block_log
значительно сокращает время процессов блокчейна.Для воспроизведения блокчейна необходимо следовать следующим указаниям.
1. Убедиться, что процессы контейнера golos-default завершены, используя следующую командную строку:
sudo docker ps | grep golos-default
Если имеется незавершенный процесс, его необходимо остановить, исполнив:
sudo docker stop golos-default
2. Запустить контейнер, используя в качестве основы образ, исполнив:
sudo docker run -d \
-p 4243:4243 \
-p 8090:8090 \
-p 8091:8091 \
-v /etc/golosd:/etc/golosd \
-v /var/lib/golosd:/var/lib/golosd \
--name golos-default golosblockchain/golos:latest
где:
golos-default
— имя контейнера;
latest
— задает последнюю официальную версию golosd.3. Воспроизвести блокчейн посредством запуска скрипта
golosdctl
внутри запущенного контейнера golos-default
:sudo docker exec golos-default /usr/local/bin/golosdctl replay
4. Выполнить проверку успешной установки Узла.
- Открыть лог-файл и убедиться в следующих фактах:
- в файл прекращено поступление новой информации;
- текст файла не содержит сообщения об ошибках.
- Подключиться к Узлу через
cli_wallet
по порту 8091, исполнив:sudo docker exec -ti golos-default \/usr/local/bin/cli_wallet \--wallet="/var/lib/golosd/wallet.json" \--server-rpc-endpoint="ws://127.0.0.1:8091"Успешное подключение будет означать успешную установку Узла.
В этом разделе приведена инструкция по построению Docker-образа с использованием различных Docker-файлов.
Docker-файл представляет собой текстовый файл с инструкциями, необходимыми для создания образа контейнера. Образ строится автоматически последовательным выполнением команд, приведенных в файле.
Docker-образ образует многоуровневую последовательность операций, каждый уровень которой представляет собой инструкции Docker-файла. Каждая инструкция создает отдельный уровень Docker-образа. При запуске Docker-образа и создании контейнера добавляется очередной уровень для записи изменений поверх нижнего уровня.
В зависимости от решаемой задачи можно построить Узел с соответствующими для этой задачи параметрами. В этом случае Docker-образ может быть построен с использованием одного из Docker-файлов, размещенных в каталоге
share/golosd/docker/
. Пользователю также предоставляется возможность самостоятельно создавать Docker-файл с необходимыми для его нужд параметрами для построения соответствующего контейнера.В следующей таблице приведен перечень основных Docker-файлов и их назначение.
Docker-файл | Назначение |
Dockerfile | Содержит набор инструкций и переменных для создания Docker-образа по умолчанию |
share/golosd/docker/Dockerfile-small | Docker-файл с инструкциями одного уровня. Позволяет создать Docker-образ меньшего размера относительно Docker-образа, построенного по умолчанию |
share/golosd/docker/Dockerfile-lowmem | Содержит набор переменных, направленных на экономию ресурсов, в том числе потребление памяти. Позволяют сконфигурировать Узел, не сохраняющий посты и комментарии |
share/golosd/docker/Dockerfile-lowmem-small | Docker-файл с инструкциями одного уровня. Содержи т набор переменных, позволяющих снизить потребление памяти |
Для построения Docker-образа необходимо следовать следующим указаниям.
1. Удалить ранее установленный образ, исполнив:
sudo docker image rm local/golos
2. Выбрать из размещенного в каталоге
share/golosd/docker/
набора нужный Docker-файл и построить Docker-образ, используя следующую команду:sudo docker build -t local/golos -f Dockerfile
3. Запустить контейнер, исполнив:
sudo docker run -d \
-p 4243:4243 \
-p 8090:8090 \
-p 8091:8091 \
-v /etc/golosd:/etc/golosd \
-v /var/lib/golosd:/var/lib/golosd \
--name golos-default local/golos
где:
golos-default
— имя запущенного контейнера;
local/golos
— показывает, что построение Docker-образа выполняется с использованием сети.1. Доступ к контейнеру:
sudo docker exec -ti golos-default /bin/bash
2. Получение текста лог-файла о контейнере:
sudo docker logs --tail 10 -f golos-default
3. Воспроизведение контейнера:
sudo docker exec golos-default /usr/local/bin/golosdctl replay
4. Подключение через cli_wallet к Узлу для проверки его функционирования:
sudo docker exec -ti golos-default \
/usr/local/bin/cli_wallet \
--wallet="/var/lib/golosd/wallet.json" \
--server-rpc-endpoint="ws://127.0.0.1:8091"
5. Запуск контейнера:
sudo docker start golos-default
6. Останов контейнера:
sudo docker stop golos-default
В этом разделе приведена инструкция по обновлению ранее установленного GolosChain до его новой версии HF•18.
Для обновления GolosChain необходимо следовать следующим указаниям.
1. Обновить исходные файлы, исполнив:
git clone https://github.com/golos-blockchain/golos.git
cd golos
git submodule update --init --recursive -f
2. Задать значения макро-переменных и сконфигурировать проект, исполнив:
mkdir build
cd build
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_GOLOS_TESTNET=FALSE \
-DBUILD_SHARED_LIBRARIES=FALSE \
-DLOW_MEMORY_NODE=FALSE \
-DCHAINBASE_CHECK_LOCKING=FALSE \
..
make -j $(nproc)
sudo make install
4. Открыть конфигурационный файл
share/golosd/config/config.ini
и установить в нем значения переменных окружения. В зависимости от решаемых задач можно установить значения переменных окружения, обеспечивающих создание Узлов следующих типов:- API Узел в полной конфигурации со всеми включенными плагинами;
- Узел делегатский, содержащий минимальный набор включенных плагинов;
- Узел в произвольной конфигурации с произвольным набором включенных плагинов.
В следующей таблице приведен рекомендуемый перечень переменных окружения, значения которых необходимо установить.
Переменная окружения | Назначение |
witness | Устанавливает имя аккаунта делегата (для делегатского Узла) |
private-key | Задает код личного ключа active (для делегатского Узла). Тип ключа может быть отличным от active |
plugin | Определяет перечень плагинов. Неиспользуемые плагины могут быть удалены |
Количество задаваемых плагинов в переменной
plugin
влияет на объем используемой памяти, а также быстродействие Узла. Минимальный набор плагинов приведен в файле config_witness.ini
.5. Остановить незавершенные процессы старой версии на демоне. В зависимости от конфигурации останов может быть выполнен различными способами, например, с помощью следующих команд:
pkill -15 golosd
sudo sv stop golosd
6. Воспроизвести блокчейн. Предварительно убедиться в наличии файлов
/var/lib/golosd/blockchain/block_log
и /var/lib/blockchain/block_log.index
, в которых хранятся блоки и данные о состоянии системы и плагинов. Использование данных этих файлов избавляет от выполнения длительной операции синхронизации блоков по сети и, следовательно, сокращает время воспроизведения блокчейна.Исполнить:
/usr/local/bin/golosd --replay-blockchain
7. Выполнить проверку успешного обновления GolosChain
- Открыть лог-файл и убедиться в следующих фактах:
- в файл прекращено поступление новой информации;
- текст файла не содержит сообщения об ошибках.
- Подключиться к Узлу через cli_wallet по порту 8091, исполнив:/usr/local/bin/cli_wallet \--wallet="/var/lib/golosd/wallet.json" \--server-rpc-endpoint="ws://127.0.0.1:8091"Успешное подключение к Узлу будет означать успешное обновление.
Для установки обновленной версии GolosChain необходимо следовать следующим указаниям.
1. Создать на сервере пространство для размещения в нем репозитория golosd.
2. Установить необходимые пакеты. Система Ubuntu 16.04 обеспечивает автоматический поиск в сети требуемого набора пакетов и загрузку их в соответствующие им директории. Для этого необходимо исполнить:
sudo apt-get update
sudo apt-get install -y \
autoconf \
automake \
autotools-dev \
bsdmainutils \
build-essential \
cmake \
doxygen \
git \
ccache \
libboost-all-dev \
libreadline-dev \
libssl-dev \
libtool \
ncurses-dev \
pbzip2 \
pkg-config \
python3 \
python3-dev \
python3-pip \
runit
sudo pip3 install gcovr
3. В отведенное для репозитория место скопировать исходные файлы из github, используя следующие команды:
git clone https://github.com/golos-blockchain/golos.git && cd golos
git submodule update --init --recursive -f
В процессе копирования не должны появляться сообщения об ошибках.
4. Задать значения макро-переменных и сконфигурировать проект, используя следующие команды:
mkdir build && cd build
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_GOLOS_TESTNET=FALSE \
-DBUILD_SHARED_LIBRARIES=FALSE \
-DLOW_MEMORY_NODE=FALSE \
-DCHAINBASE_CHECK_LOCKING=FALSE \
..
5. Построить проект с установкой демона в
/usr/local/
, исполнив:make -j $(nproc) && sudo make install
6. Создать пользователя с именем golosd для демона:
sudo useradd -s /bin/bash -m -d /var/lib/golosd golosd
7. Скопировать исходный файл genesis формата JSON для блокчейна, исполнив:
sudo cp ../share/golosd/snapshot5392323.json /var/lib/golosd/
8. Создать директорию golosd в
/etc/
и скопировать в нее конфигурационные файлы:sudo mkdir -p /etc/golosd
sudo cp ../share/golosd/seednodes /etc/golosd/
sudo cp ../share/golosd/config/config.ini /etc/golosd/
9. Сменить имя владельца скопированным конфигурационным файлам:
sudo chown golosd:golosd -R /etc/golosd/
10. Создать сервисный файл для демона:
sudo mkdir -p /etc/service/golosd
sudo cp ../share/golosd/golosd.sh /etc/service/golosd/run
sudo chmod +x /etc/service/golosd/run
11. Запустить функционирование GolosChain, исполнив:
sudo sv start golosd
12. Выполнить проверку успешной установки.
- Открыть лог-файл и убедиться в следующих фактах:
- в файл прекращено поступление новой информации;
- текст файла не содержит сообщения об ошибках.
- Подключиться к Узлу через cli_wallet по порту 8091, исполнив:/usr/local/bin/cli_wallet \--wallet="/var/lib/golosd/wallet.json" \--server-rpc-endpoint="ws://127.0.0.1:8091"
Успешное подключение к Узлу будет означать успешную установку GolosChain.
Last modified 2yr ago