Adding a second node

NethServer Version: core 3.21.1
Module: your_module

I am trying to add a new node to my cluster. I’ve taken a look at the post linked to below, and as far as I can tell, I have met requirements. I’ve installed, added the node to the cluster, and it shows up in the Nodes

I can ssh from one to another, the worker node can resolve the address of the leader. But the leader node says the cluster node is offline.

How do I make sure the ports at 55820 are open? I do notice that if I do

ss -lntu | grep 55820

udp   UNCONN 0      0              0.0.0.0:55820      0.0.0.0:*
udp   UNCONN 0      0                 [::]:55820         [::]:*

But if I go

ss -lntu | grep 443
tcp LISTEN 0 4096 *:443 *:*

Is the VPN port only listening on 0.0.0.0?

Anyway - I am out of ideas. Any help appreciated. Cheers

Don

Hi Don,

The 0.0.0.0 vs * you saw is just ss formatting — both mean “all interfaces,” nothing’s wrong there.

A few things to check to narrow down where the VPN join is failing:

  1. Check the WireGuard handshake status on both nodes:

    wg
    

    Look at the latest handshake line for the peer. If it’s recent (updated roughly every minute), the tunnel is up. If stale or missing, traffic isn’t flowing over UDP/55820 — a firewall/NAT issue, not NS8’s node logic.

  2. Ping the VPN IPs directly, not just the LAN hostnames:

    ping 10.5.4.1
    ping 10.5.4.2
    

    (adjust to your actual cluster VPN addresses). If SSH works over the LAN but ping fails over the VPN overlay, the tunnel isn’t passing traffic even if the socket is listening.

  3. Check Redis on the worker node:

    systemctl status redis
    

    Cluster state/node status reflects Redis replica status, so if it’s not running on the worker or it can’t reach the leader, the leader on its side will keep showing it offline even if VPN and SSH are fine.

Let us know what you get from these and we can dig further.

Hi - thanks for the reply. Tying to find my netstat and nslookup. :frowning:

On the Cluster Status page of the web management app it says “All nodes are online” Going to the nodes page, the worker node has an alert. In See details, I get ‘Cluster node 4 is offline’.

Anyway -

wg on the Leader

[root@eastman ~]# wg
interface: wg0
public key: <deleted>
private key: (hidden)
listening port: 55820

peer: <deleted>
endpoint: <external IP>:55820
allowed ips: 10.5.4.4/32
latest handshake: 53 seconds ago
transfer: 46.46 MiB received, 58.03 MiB sent
persistent keepalive: every 25 seconds

On the Worker

[root@te-kuru ~]# wg
interface: wg0
public key: <deleted>
private key: (hidden)
listening port: 55820

peer: <deleted>
endpoint: <external IP>:55820
allowed ips: 10.5.4.1/32
latest handshake: 42 seconds ago
transfer: 54.54 MiB received, 46.01 MiB sent
persistent keepalive: every 25 seconds
[root@te-kuru ~]#

The keys look like they match.

Ping
I can ping from one to the other, and vice versa, using allowed ips.

Redis

I restarted Redis to see if that would help. No.

[root@te-kuru ~]# systemctl status redis
● redis.service - Core Redis DB
Loaded: loaded (/etc/systemd/system/redis.service; enabled; preset: disabled)
Active: active (running) since Thu 2026-09-10 03:42:43 BST; 3min 41s ago
Docs: 

Process: 8089 ExecStartPre=/bin/rm -f /run/redis.pid /run/redis.cid (code=exited, status=0/SUCCESS)
Process: 8090 ExecStart=/usr/bin/podman run --conmon-pidfile=/run/redis.pid --cidfile=/run/redis.cid --cgroups=no-conmon --detach --log-opt=tag=redis --replac>
Process: 8117 ExecStartPost=/usr/local/bin/redis-wait-ready --retries 30 --period 1 (code=exited, status=0/SUCCESS)
Process: 8126 ExecStartPost=/usr/local/bin/acl-load (code=exited, status=0/SUCCESS)
Main PID: 8102 (conmon)
Tasks: 1 (limit: 48130)
Memory: 712.0K (peak: 26.8M)
CPU: 546ms
CGroup: /system.slice/redis.service
└─8102 /usr/bin/conmon --api-version 1 -c 1af133e6df5a636d2612c97342c581c41ab0eaf84b06781729678ff309bceb5b -u 1af133e6df5a636d2612c97342c581c41ab0eaf>

Sep 10 03:45:38 te-kuru redis[8102]: 33:C 10 Sep 2026 02:45:38.716 * BGSAVE done, 3243 keys saved, 0 keys skipped, 1178702 bytes written.
Sep 10 03:45:38 te-kuru redis[8102]: 33:C 10 Sep 2026 02:45:38.724 * DB saved on disk
Sep 10 03:45:38 te-kuru redis[8102]: 33:C 10 Sep 2026 02:45:38.724 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 0 MB
Sep 10 03:45:38 te-kuru redis[8102]: 1:S 10 Sep 2026 02:45:38.806 * Background saving terminated with success
Sep 10 03:45:44 te-kuru redis[8102]: 1:S 10 Sep 2026 02:45:44.033 * 1 changes in 5 seconds. Saving...
Sep 10 03:45:44 te-kuru redis[8102]: 1:S 10 Sep 2026 02:45:44.033 * Background saving started by pid 34
Sep 10 03:45:44 te-kuru redis[8102]: 34:C 10 Sep 2026 02:45:44.044 * BGSAVE done, 3252 keys saved, 0 keys skipped, 1181661 bytes written.
Sep 10 03:45:44 te-kuru redis[8102]: 34:C 10 Sep 2026 02:45:44.051 * DB saved on disk
Sep 10 03:45:44 te-kuru redis[8102]: 34:C 10 Sep 2026 02:45:44.051 * Fork CoW for RDB: current 1 MB, peak 1 MB, average 0 MB
Sep 10 03:45:44 te-kuru redis[8102]: 1:S 10 Sep 2026 02:45:44.134 * Background saving terminated with success

[root@te-kuru ~]#

Cheers

The VPN tunnel itself looks fine (handshakes recent on both sides, keys match, ping works). So the issue is likely higher up, in how cluster status is being tracked/reported.

A few things to help pin it down:

  1. On the Nodes page, is the alert icon red or yellow? Red means the Redis replica’s idle time is above 8 seconds; yellow is a different alert, so if you see yellow, open the node details for the specific message.

  2. Does the offline status flap if you reload the page a few times in a row, or is it consistently showing offline every time?

  3. Redis replication status — please paste the output of this on both nodes:

    redis-cli info replication
    

    This will show whether the worker’s Redis is actually replicating from the leader (or vice versa), which is separate from just “is the redis service running.”

Thanks for the detailed output so far, it’s helping rule things out.

On the Nodes page (/cluster-admin/#/nodes) it looks orange and says ‘1 Alert’.

On the page for the node (/cluster-admin/#/nodes/4) it is red and says Cluster node 4 is offline.

Does not seem to flap. Loaded loads of times with no change.

[root@eastman ~]# redis-cli info replication
# Replication
role:master
connected_slaves:1
slave0:ip=10.5.4.4,port=6379,state=online,offset=20783080,lag=1,io-thread=0
master_failover_state:no-failover
master_replid:8a2ebdd3fdac403dfb92304c8e9b7e3ce97b5db9
master_replid2:74760ef94c32f20c30534e1cb30e95c62d8d6300
master_repl_offset:20783080
second_repl_offset:18159126
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:19733206
repl_backlog_histlen:1049875


[root@te-kuru ~]# redis-cli info replication
# Replication
role:slave
master_host:10.5.4.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_read_repl_offset:20742089
slave_repl_offset:20742089
replica_full_sync_buffer_size:0
replica_full_sync_buffer_peak:0
master_current_sync_attempts:3
master_total_sync_attempts:4
master_link_up_since_seconds:79188
master_client_io_thread:0
total_disconnect_time_sec:1
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:8a2ebdd3fdac403dfb92304c8e9b7e3ce97b5db9
master_replid2:74760ef94c32f20c30534e1cb30e95c62d8d6300
master_repl_offset:20742089
second_repl_offset:18159126
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:19688752
repl_backlog_histlen:1053338

This description resembles an alert message from Prometheus Alertmanager.

First, you can look also at System Logs page, search “node_exporter” to see if there’s recent activity from it.

Check if node_exporter is still running on node 4:

systemctl status node_exporter

Try to restart it:

systemctl restart node_exporter

That seems to be it

[root@te-kuru ~]# systemctl status node_exporter
○ node_exporter.service - Prometheus node_exporter
Loaded: loaded (/etc/systemd/system/node_exporter.service; disabled; preset: disabled)
Active: inactive (dead)
[root@te-kuru ~]# systemctl start node_exporter
[root@te-kuru ~]# systemctl status node_exporter
● node_exporter.service - Prometheus node_exporter
Loaded: loaded (/etc/systemd/system/node_exporter.service; disabled; preset: disabled)
Active: active (running) since Tue 2026-09-15 00:30:17 BST; 2s ago
Process: 16518 ExecStartPre=/bin/rm -f /run/node_exporter.pid /run/node_exporter.cid (code=exit>
Process: 16519 ExecStartPre=/usr/bin/mkdir -p ./node_exporter (code=exited, status=0/SUCCESS)
Process: 16520 ExecStart=/usr/bin/podman run --conmon-pidfile /run/node_exporter.pid --cidfile >
Main PID: 16532 (conmon)
Tasks: 1 (limit: 48130)
Memory: 748.0K (peak: 22.5M)
CPU: 75ms
CGroup: /system.slice/node_exporter.service
└─16532 /usr/bin/conmon --api-version 1 -c cb164a150380e8457794bf042195b448944a68cb7e4>

Sep 15 00:30:17 te-kuru node_exporter[16532]: time=2026-09-14T23:30:17.739Z level=INFO source=node_>

…

(END)

I’ve enabled it and rebooted the node, and everything appears to have started up again.

Thanks for the help with this.

A disabled node_exporter service is a symptom of errors during the cluster join procedure. You should either reinstall te-kuru worker and join it again as a new node (node 5?), or at least make sure core services are enabled on it at boot, running:

systemctl status node_exporter.service promtail.service rclone-gateway.service
systemctl enable --now node_exporter.service promtail.service rclone-gateway.service