Skip to content
Closed

Ha/main #5988

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# NetBird HA Test Environment Configuration
# Copy this file to .env and adjust values as needed
# NOTHING is hardcoded — all values come from this file

# --- Domain Configuration ---
NB_DOMAIN=nb-ha.local
NB_SIGNAL_DOMAIN=signal.nb-ha.local
NB_MGMT_DOMAIN=mgmt.nb-ha.local
NB_RELAY_DOMAIN=relay.nb-ha.local
NB_TURN_DOMAIN=turn.nb-ha.local
NB_DASHBOARD_DOMAIN=dashboard.nb-ha.local

# --- Redis Configuration ---
NB_REDIS_ADDRESS=redis.nb-ha.local:6379
NB_REDIS_PASSWORD=
NB_REDIS_DB=0
NB_REDIS_DIAL_TIMEOUT=5s
NB_REDIS_READ_TIMEOUT=3s
NB_REDIS_WRITE_TIMEOUT=3s
NB_REDIS_POOL_SIZE=10

# --- PostgreSQL Configuration ---
NB_POSTGRES_HOST=postgres.nb-ha.local
NB_POSTGRES_PORT=5432
NB_POSTGRES_USER=netbird
NB_POSTGRES_PASSWORD=netbird
NB_POSTGRES_DB=netbird
NB_POSTGRES_SSLMODE=disable

# --- Relay Configuration ---
NB_RELAY_SECRET=netbird-relay-secret-key-change-in-production
NB_RELAY_LISTEN_ADDRESS=0.0.0.0:443
NB_RELAY_EXPOSED_ADDRESS=relay.nb-ha.local:443

# --- TURN Configuration ---
NB_TURN_SECRET=netbird-turn-secret-key-change-in-production
NB_TURN_REALM=nb-ha.local
NB_TURN_PORT=3478

# --- Shared HA Configuration (Signal + Management) ---
NB_HA_ENABLED=true

# --- Signal HA Configuration ---
NB_SIGNAL_REGISTRY_KEY=nb:signal:registry
NB_SIGNAL_CHANNEL_PREFIX=nb:signal:instance:
NB_SIGNAL_PEER_TTL=60s
NB_SIGNAL_HEARTBEAT_INTERVAL=30s
NB_SIGNAL_SEND_TIMEOUT=10s

# --- Management HA Configuration ---
NB_MGMT_PEERS_REGISTRY_KEY=nb:mgmt:peers
NB_MGMT_ACCOUNT_CHANNEL_PREFIX=nb:mgmt:account:
NB_MGMT_LOCK_PREFIX=nb:mgmt:lock:
NB_MGMT_LOGIN_FILTER_KEY=nb:mgmt:loginfilter
NB_MGMT_EPHEMERAL_KEY=nb:mgmt:ephemeral
NB_MGMT_PEER_TTL=60s
NB_MGMT_HEARTBEAT_INTERVAL=30s
NB_MGMT_LOCK_TTL=30s

# --- Logging ---
NB_LOG_LEVEL=debug
NB_LOG_FILE=console

# --- Dashboard ---
NB_DASHBOARD_IMAGE=netbirdio/dashboard:latest

# --- Ports (host mapping) ---
NB_HOST_REDIS_PORT=6379
NB_HOST_POSTGRES_PORT=5432
NB_HOST_MGMT1_PORT=33073
NB_HOST_MGMT2_PORT=33074
NB_HOST_SIGNAL1_PORT=10000
NB_HOST_SIGNAL2_PORT=10001
NB_HOST_RELAY_PORT=443
NB_HOST_TURN_PORT=3478
NB_HOST_TURN_TLS_PORT=5349
NB_HOST_DASHBOARD_PORT=8080
NB_HOST_MGMT1_METRICS=9091
NB_HOST_MGMT2_METRICS=9092
NB_HOST_SIGNAL1_METRICS=9093
NB_HOST_SIGNAL2_METRICS=9094
NB_HOST_RELAY_METRICS=9095
434 changes: 300 additions & 134 deletions README.md

Large diffs are not rendered by default.

17 changes: 17 additions & 0 deletions README_FORK.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# NetBird HA Fork

**⚠️ This is a fork of [netbirdio/netbird](https://github.com/netbirdio/netbird) with added horizontal scaling support.**

## Changes from Upstream

- **Signal Server**: Active-active scaling via Redis distributed registry and pub/sub
- **Management Server**: Active-active scaling via Redis update broadcast and distributed locks
- **Configuration**: All HA parameters externally configurable (env vars + YAML)

## Rebase Strategy

See [docs/REBASE_GUIDE.md](docs/REBASE_GUIDE.md) for per-file conflict guidance and step-by-step rebase instructions.

## Original README

See [original_readme.md](original_readme.md) for the upstream NetBird project documentation.
6 changes: 4 additions & 2 deletions combined/cmd/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import (

"github.com/netbirdio/netbird/management/server/idp"
"github.com/netbirdio/netbird/management/server/types"
"github.com/netbirdio/netbird/signal/server"
"github.com/netbirdio/netbird/util"
"github.com/netbirdio/netbird/util/crypt"

Expand Down Expand Up @@ -110,8 +111,9 @@ type StunConfig struct {

// SignalConfig contains signal service settings
type SignalConfig struct {
Enabled bool `yaml:"enabled"`
LogLevel string `yaml:"logLevel"`
Enabled bool `yaml:"enabled"`
LogLevel string `yaml:"logLevel"`
HA server.SignalHAConfig `yaml:"ha"`
}

// ManagementConfig contains management service settings
Expand Down
2 changes: 1 addition & 1 deletion combined/cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ func (s *serverInstances) createSignalServer(ctx context.Context, cfg *CombinedC
}

var err error
s.signalSrv, err = signalServer.NewServer(ctx, s.metricsServer.Meter, "signal_")
s.signalSrv, err = signalServer.NewServer(ctx, s.metricsServer.Meter, &cfg.Signal.HA, "signal_")
if err != nil {
cleanupSTUNListeners(s.stunListeners)
return fmt.Errorf("failed to create signal server: %w", err)
Expand Down
Loading