August 30, 2022

Как подселять ноды? Редактирование портов в нодах Cosmos для запуска нескольких нод на одном сервере.

Здравствуйте, многие задаются вопросом, можно ли установить несколько нод на один сервер? В этой небольшой статье мы постараемся объяснить как подселять ноды на один сервер.

Основная проблема работоспособности нескольких нод на одном сервере это конфликт сетевых портов используемых нодами, так ноды основанные на Cosmos используют по умолчанию порты 26656; 26657; 6060; 26658; 26660; 9090; 9091. Но и несомненным плюсом Cosmos нод является то что порты легко изменить в конфигурационном файле.

Для того чтобы определить какие порты у нас заняты воспользуемся инструментом netstat (если он у вас не установлен то установить : sudo apt install net-tools )

sudo netstat -ltupan

В выводе будут показаны используемые порты и какой сервис их использует

Далее если какие то порты пересекаются с Cosmos нодой (Если у вас на сервере уже стоит космос нода то пересечение будет), то идем в конфиг и правим его, т.е. задаем новые порты для ноды.

Дальнейшие примеры будут для ноды SEI, так как в космосе всё в основном стандартно просто меняете папку ноды (вместо .sei/ на свою)

Для того чтобы не запутаться рекомендуется создать свою схему замены портов, можно менять например первую цифру, или придумать свой пул нумерации, главное не забывать что максимальное количество портов 65536

Теперь рассмотрим где находятся интересующие нас порты, открываем config.toml

nano $HOME/.sei/config/config.toml

Первый интересующий нас порт находится здесь

Второй порт здесь

Третий и четвертый здесь

И пятый здесь

После замены портов сохраняем конфиг, ctrl+o enter, и выходим из редактора, ctrl+x.

Теперь нужно заменить порты в app.toml

nano $HOME/.sei/config/app.toml

Интересующие нас порты находятся здесь

После замены портов сохраняем конфиг, ctrl+o enter, и выходим из редактора, ctrl+x.

И последний нужный нам порт находится в client.toml (!!! Внимательно номер этого порта должен быть такой же как и номер второго порта в config.toml !!!)

nano $HOME/.sei/config/client.toml

Так же можно заменить порты при помощи команды sed ( порты которые нужно заменить выделены подчеркиванием, для примера в пятизначных портах первая цифра заменена на 1, в четырёхзначных 1 добавлена в начале)

Команда замены для config.toml

sed -i.bak -e "s%^proxy_app = \"tcp://127.0.0.1:26658\"%proxy_app = \"tcp://127.0.0.1:16658\"%; s%^laddr = \"tcp://127.0.0.1:26657\"%laddr = \"tcp://127.0.0.1:16657\"%; s%^pprof_laddr = \"localhost:6060\"%pprof_laddr = \"localhost:16060\"%; s%^laddr = \"tcp://0.0.0.0:26656\"%laddr = \"tcp://0.0.0.0:16656\"%; s%^prometheus_listen_addr = \":26660\"%prometheus_listen_addr = \":16660\"%" $HOME/.sei/config/config.toml

Команда замены для app.toml

sed -i.bak -e "s%^address = \"0.0.0.0:9090\"%address = \"0.0.0.0:19090\"%; s%^address = \"0.0.0.0:9091\"%address = \"0.0.0.0:19091\"%" $HOME/.sei/config/app.toml

Команда замены для client.toml

sed -i.bak -e "s%^node = \"tcp://localhost:26657\"%node = \"tcp://localhost:16657\"%" $HOME/.sei/config/client.toml

Если конфиг файлы редактировались после запуска ноды, то не забудьте ее перезапустить.

sudo systemctl restart seid

Так же после запуска нескольких нод на одном сервере не забывайте, проверять загруженность ресурсов. Рекомендуем для терминала использовать инструмент htop, так как наглядно видно сколько ресурсов занято и какой из процессов сколько забирает.

Большое спасибо, за внимание и уделенное время

Наш телеграмм канал по нодам — https://t.me/mmsnodes
Наш телеграмм чат по нодам - https://t.me/mmsnodeschat
Наш телеграмм канал по экосистеме Cosmos - https://t.me/cosmochannel_mms

С уважением, MMS_Team