Launch 7-node FrostFS inner ring

This commit is contained in:
Vitaliy Potyarkin 2024-09-25 08:28:45 +00:00
parent 2e97eeb4f0
commit bc83def7be
6 changed files with 91 additions and 46 deletions

View file

@ -5,8 +5,18 @@ NEOGO_VERSION?=0.106.3
NEOGO_RPC_ENDPOINT?=http://$(NEOGO_NODE1_IP):30333
NEOGO_NODE1_IP?=$(shell docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' morph1)
IR_NODE1_IP?=$(shell docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' innerring1)
ALPHABET=az buky vedi glagoli dobro yest zhivete
NODE_COUNT?=7
NODE_ID?=1
NODE_LETTER=$(word $(NODE_ID),$(ALPHABET))
export NODE_COUNT
export NODE_ID
export NODE_LETTER
SHELL=/bin/bash
.SHELLFLAGS=-euo pipefail -c
ADM?=bin/frostfs-adm-v$(FROSTFS_VERSION)
ADM_RELEASE_URL=https://git.frostfs.info/TrueCloudLab/frostfs-node/releases/download/v$(FROSTFS_VERSION)/frostfs-adm
@ -59,3 +69,7 @@ bin/locode.db:
define math
$(shell bash -c "echo $$(($(1)))")
endef
.PHONY: network-up
network-up:
-docker network create bringup

View file

@ -1,16 +1,39 @@
SHELL=/bin/bash
.SHELLFLAGS=-euo pipefail -c
include ../Makefile
NODE_CONFIG=data/config-$(NODE_LETTER)/innerring.yml
export NODE_CONFIG
.PHONY: up
up: wallet/az.json | $(IR) $(LOCODE)
$(IR) --config innerring.yml
.PHONY: up down down-fast
up: COMPOSE_ARGS=-d
up: network-up
down-fast: COMPOSE_ARGS=--timeout 0
down-fast: down
up down:
error=0; \
for NODE_ID in {1..$(NODE_COUNT)}; do \
GID=$$(id -g); \
export NODE_ID UID GID; \
docker-compose -p "innerring$$NODE_ID" $@ $(COMPOSE_ARGS) || error=$$?; \
done; \
exit $$error
wallet/az.json:
.PHONY: innerring
innerring: wallet $(NODE_CONFIG) | $(IR) $(LOCODE) $(CLI)
mkdir -p log
$(IR) --config $(NODE_CONFIG) 2>&1 | tee --append log/$@$(NODE_ID)-$(NODE_LETTER)
$(NODE_CONFIG): innerring.yml
mkdir -p $(dir $@)
ln -sf $(abspath ../morph/$@) $@
cp $< $@
sed -i \
-e 's/NODE_COUNT/$(NODE_COUNT)/g' \
-e 's/NODE_ID/$(NODE_ID)/g' \
-e 's/NODE_LETTER/$(NODE_LETTER)/g' \
-e 's/NODE_MINPEERS/$(NODE_MINPEERS)/g' \
$@
wallet:
ln -sf ../morph/$@ $@
.PHONY: healthcheck
healthcheck: | $(CLI)
$(CLI) control ir healthcheck -q --wallet wallet/az.json --endpoint 127.0.0.201:8099
$(CLI) control ir healthcheck -q --wallet wallet/az.json --endpoint $(IR_NODE1_IP):8099

View file

@ -0,0 +1,24 @@
version: '2'
networks:
bringup-network:
name: bringup
external: true
services:
innerring:
image: golang:latest
hostname: innerring${NODE_ID:?required variable not defined}
container_name: innerring${NODE_ID}
networks:
bringup-network:
user: "${UID}:${GID}"
environment:
- NODE_COUNT=$NODE_COUNT
- NODE_ID=$NODE_ID
- NODE_CONFIG=$NODE_CONFIG
- NODE_LETTER=$NODE_LETTER
volumes:
- ..:/bringup
working_dir: /bringup/innerring
command: ["make", "innerring", "NODE_ID=${NODE_ID}"]

View file

@ -5,24 +5,23 @@ logger:
control:
authorized_keys: # Q: Node keys are always assumed to be trusted?
grpc:
endpoint: 127.0.0.201:8099
endpoint: innerringNODE_ID:8099
# Wallet settings
wallet:
path: wallet/az.json # Path to NEP-6 NEO wallet file
# address: Nhfg3TbpwogLvDGVvAvqyThbsHgoSUKwtn # Account address in the wallet; ignore to use default address
path: wallet/NODE_LETTER.json # Path to NEP-6 NEO wallet file
password: m # Account password in the wallet
# Profiler section
pprof:
enabled: true
address: 127.0.0.201:6060 # Endpoint for application pprof profiling; disabled by default
address: innerringNODE_ID:6060 # Endpoint for application pprof profiling; disabled by default
shutdown_timeout: 30s # Timeout for profiling HTTP server graceful shutdown
# Application metrics section
prometheus:
enabled: true
address: 127.0.0.201:9090 # Endpoint for application prometheus metrics; disabled by default
address: innerringNODE_ID:9090 # Endpoint for application prometheus metrics; disabled by default
shutdown_timeout: 30s # Timeout for metrics HTTP server graceful shutdown
# Toggling the sidechain-only mode
@ -36,15 +35,15 @@ mainnet:
morph:
endpoint:
client: # List of websocket RPC endpoints in sidechain
- address: ws://10.200.104.2:30333/ws
- address: ws://morphNODE_ID:30333/ws
validators: # List of hex-encoded 33-byte public keys of sidechain validators to vote for at application startup
- 020978aaa717296f92c8b4c7821a4577e336c746bad10f12ff34d1a8555b582c99
- 020ea94e07f3ef6db2fe6ee3d49c1c48945222263c6e7eaa6c73a368bb6f1ac926
- 028ab6992e9a38b974ef792ee040e08d1f81ab86b80811019ddda668d46cda41ab
- 028c37315cb0bb6884869d98cf7bcf0ca7de70a42c5cb796f561dd32ed8295fe65
- 02b65e6cedcb3d02acb3443d3fa5ae21ff73c857e543d2b788aac675115e3fae0a
- 02cc27df449fc866665c6c0d067b52cd9a36fedd00adcbccd332ca9c53e0c0b5fd
- 02e41b8a1db521df5da73904f9110d07e28c673bee2ae1c68b103a04c2d0de30d7
- 03aa8d8a0b8f9f0c5b36ce37975cfbcab3df75e1f12c501e3ead6d5f49d6e0b6f2 # az
- 02a51fd92f9e518f46ad009cc4b1e6f6d2879c33c252e12368ca9a431f4aabcd4f # buky
- 02856ed40a58b1e4bec8e1288ef8d5b2b4d8652557c89f03da72cc3988f7b4cf61 # vedi
- 0398803ed9999ddcbe8eba0d88805fd6b2ee92553af78ab0e4364446e7cb7229b3 # glagoli
- 036f8f0e9c2cd033c5c7bf38f5fc45926950988cecbc6f6d47575781217786166a # dobro
- 023790dcc88bef1f500f549342d1ec7a4b7e48912555d93b71ed6561a309142893 # yest
- 0244cb3df7b5a81810b8bb9ff2f0442434b5e8ab7c278c09723c07b127ff30e347 # zhivete
# Network time settings
timers:

View file

@ -1,19 +1,9 @@
include ../Makefile
NODE_COUNT?=7
NODE_ID?=1
NODE_CONFIG=data/config-$(NODE_LETTER)/protocol.privnet.yml
NODE_LETTER=$(word $(NODE_ID),$(ALPHABET))
NODE_MINPEERS=$(call math,$(NODE_COUNT)>1)
export NODE_COUNT
export NODE_ID
export NODE_CONFIG
export NODE_LETTER
export NODE_MINPEERS
SHELL=/bin/bash
.SHELLFLAGS=-euo pipefail -c
.PHONY: up down down-fast
up: COMPOSE_ARGS=-d
up: network-up check-config
@ -28,10 +18,6 @@ up down:
done; \
exit $$error
.PHONY: network-up
network-up:
-docker network create bringup
.PHONY: check-config
check-config: wallet/az.json
$(NEOGO) wallet dump-keys -w $<
@ -46,9 +32,9 @@ morph: $(NODE_CONFIG) | $(NEOGO)
mkdir -p log
$(NEOGO) node --config-file $(NODE_CONFIG) --privnet --debug 2>&1 | tee --append log/$@$(NODE_ID)-$(NODE_LETTER)
$(NODE_CONFIG):
$(NODE_CONFIG): protocol.privnet.yml
mkdir -p $(dir $@)
cp protocol.privnet.yml $@
cp $< $@
sed -i \
-e 's/NODE_COUNT/$(NODE_COUNT)/g' \
-e 's/NODE_ID/$(NODE_ID)/g' \

View file

@ -4,14 +4,13 @@ ProtocolConfiguration:
TimePerBlock: 1s
MemPoolSize: 50000
StandbyCommittee:
# 02b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc2 # frostfs-dev-env node
- 020978aaa717296f92c8b4c7821a4577e336c746bad10f12ff34d1a8555b582c99
- 020ea94e07f3ef6db2fe6ee3d49c1c48945222263c6e7eaa6c73a368bb6f1ac926
- 028ab6992e9a38b974ef792ee040e08d1f81ab86b80811019ddda668d46cda41ab
- 028c37315cb0bb6884869d98cf7bcf0ca7de70a42c5cb796f561dd32ed8295fe65
- 02b65e6cedcb3d02acb3443d3fa5ae21ff73c857e543d2b788aac675115e3fae0a
- 02cc27df449fc866665c6c0d067b52cd9a36fedd00adcbccd332ca9c53e0c0b5fd
- 02e41b8a1db521df5da73904f9110d07e28c673bee2ae1c68b103a04c2d0de30d7
- 03aa8d8a0b8f9f0c5b36ce37975cfbcab3df75e1f12c501e3ead6d5f49d6e0b6f2 # az
- 02a51fd92f9e518f46ad009cc4b1e6f6d2879c33c252e12368ca9a431f4aabcd4f # buky
- 02856ed40a58b1e4bec8e1288ef8d5b2b4d8652557c89f03da72cc3988f7b4cf61 # vedi
- 0398803ed9999ddcbe8eba0d88805fd6b2ee92553af78ab0e4364446e7cb7229b3 # glagoli
- 036f8f0e9c2cd033c5c7bf38f5fc45926950988cecbc6f6d47575781217786166a # dobro
- 023790dcc88bef1f500f549342d1ec7a4b7e48912555d93b71ed6561a309142893 # yest
- 0244cb3df7b5a81810b8bb9ff2f0442434b5e8ab7c278c09723c07b127ff30e347 # zhivete
ValidatorsCount: NODE_COUNT
VerifyTransactions: true