NDTS Gateway Installation

From Network for Advanced NMR
Jump to navigationJump to search

Gateway Installation

Prerequisites

  • A Gateway UUID supplied by the NAN Repository administrator
  • A Linux host (Ubuntu 20.04 or later recommended) reachable by all workstations
  • TCP port 60195 open inbound from those workstations

Installation Steps

# Copy the .gz file to the gateway computer
tar xf data-transport-gateway-<version>.tar.gz
cd dtgateway-installer
sudo ./install.sh
# → You will be prompted only for the Gateway UUID

Firewall Note

Open port 60195 to each NDTS workstation; no other inbound ports are required.

Verifying the Service

sudo systemctl status data-transport-gateway      # should show “active (running)”
sudo systemctl start  data-transport-gateway      # start if not running

Updating the Gateway

# Run the same installer script from a newer package
cd dtgateway-installer
sudo ./install.sh             # auto-detects an existing install; no prompts

Follow the directions above for verifying the service after updating the Gateway to ensure that the service is running.

Uninstalling the Gateway

sudo ./uninstall.sh           # script is included inside every package

Rolling Back the Gateway

Obtain the desired older package and run its install.sh. Rolling back more than one or two versions is not recommended.

NDTS Gateway Configuration

The following are optional configuration values that can be specified in the /opt/nandt- gateway/gateway_configuration.json file. The file must adhere to proper JSON formatting:

Configuration Options

Option Description Default
log_file_path Path to write the gateway log file /opt/nandt-gateway/nan-gateway.log
logging_level Minimum severity written to the log (fatal → debug) info
logging_format Python logging format string for each line %(asctime)s %(levelname)s %(module)s [%(process)d]: %(message)s
base_output_path Directory used for incoming experiment data /opt/nandt-gateway/data/received
https_endpoint HTTPS endpoint of the NDTS Receiver https://receiver.usnan.org
retry_limit Attempts to forward each dataset to the Receiver 5
retry_delay Seconds to wait between retry attempts 300
rsync_username SSH/rsync account on the Receiver nandt
rsync_node Node to which experiment files are rsync’d receiver.usnan.org
request_queue_size Outstanding daemon connections accepted before new ones are rejected. Increase this value if the gateway is rejecting requests from spectrometers evident in the workstation daemon log file showing network communication errors 50

Example JSON configuration file

{
  "log_file_path": "/opt/nandt-gateway/nan-gateway.log",
  "logging_level": "info",
  "logging_format": "%(asctime)s %(levelname)s %(module)s [%(process)d]: %(message)s",
  "base_output_path": "/opt/nandt-gateway/data/received",
  "https_endpoint": "https://receiver.usnan.org",
  "retry_limit": 5,
  "retry_delay": 300,
  "rsync_username": "nandt",
  "rsync_node": "receiver.usnan.org",
  "request_queue_size": 50
}

Logging Levels

Nothing below the set log level will be logged.

Level Description verbosity default
fatal Critical events only very low
error Problems that must be addressed for normal operation low
warning Unusual events that generally require no action medium
info Unusual or noteworthy events (recommended for production) high yes
debug Detailed diagnostic messages useful for troubleshooting, but should not be left on for normal operation extremely high

NDTS Gateway Components

All files reside under /opt/nandt-gateway unless noted. :contentReference[oaicite:1]{index=1}

  • main.py – entry point for the Python service
  • /etc/systemd/system/data-transport-gateway.service – systemd unit file
  • nan-gateway.log – runtime log (path overridable via log_file_path)
  • gateway_configuration.json – configuration described above
  • data/
    • received/ – transient storage for incoming experiment data
    • retransmitter.pid – PID of the active retransmitter helper
    • users.dat – current user / sample / project list
    • user_checksum.dat – checksum that governs list refreshes

NDTS Gateway Components

The NDTS Gateway consists of several key components installed under /opt/nandt-gateway, unless otherwise noted. Each plays a specific role in data transfer, configuration, or monitoring.

Gateway component files and their functions
File or Directory Description
main.py Entry point for the gateway's Python-based service
/etc/systemd/system/data-transport-gateway.service systemd unit file used to control the gateway service
nan-gateway.log Runtime log file (location can be changed via log_file_path in config)
gateway_configuration.json Gateway configuration file containing operational parameters
data/received/ Temporary storage location for incoming dataset files until data is successfully forwarded to the receiver
data/retransmitter.pid Contains the PID of the process that is attempting to re-send data that previously failed to be sent to the receiver. This is used internally by the gateway software to manage retransmitting data
data/users.dat Cached list of user/sample/project/study data pulled from the receiver
data/user_checksum.dat Checksum file used to determine when the users.dat file should be refreshed

All other files int he nandt-gateway directory are for the operation of the gateway, and are not of general interest

NDTS Operation

  • Experiment transfer – Workstation daemons connect on TCP 60195, announce a dataset, and stream it to received/. Successful transfers spawn a Transmitter process that forwards the data to the receiver; on success the local copy is deleted.
  • Retransmit – At start-up and after each daemon heartbeat, a Retransmitter scans received/. If a dataset’s original retry window has expired, it launches a new transmitter until delivery succeeds or the file is manually removed.
  • Heartbeat forwarding – Every daemon heartbeat is wrapped with the gateway UUID, local and UTC timestamps, then sent to the receiver by a short-lived Heartbeat Transmitter
  • User list propagation – Every 15s the gateway requests an updated list from the receiver; if the checksum differs it saves the new list to users.dat and serves it to workstations on demand.

NDTS Logging

Logging level are controlled by the logging_level parameter in the JSON configuration file (see above)

Example log excerpt:

2022-06-06 09:22:23,130 INFO main [61393]: Starting gateway retransmitter instance...
2022-06-06 09:22:23,130 INFO main [61393]: Experiment file path = /opt/nandt-gateway/data/received
2022-06-06 09:22:23,132 INFO main [61393]: Starting gateway receiver network endpoint...
2022-06-06 09:22:23,133 INFO GatewayReceiver [61393]: Starting file receiver...
2022-06-06 09:22:23,133 INFO GatewayRetransmitter [61405]: In GatewayRetransmit handle() method...
2022-06-06 09:22:23,134 INFO GatewayRetransmitter [61405]: No experiments to retransmit -- exiting...
2022-06-06 09:22:23,134 INFO GatewayRetransmitter [61405]: GatewayRetransmit handle() method completed...
2022-06-06 09:23:12,829 INFO GatewayTransmitter [61512]: Heartbeat sent to https://receiver.usnan.org/heartbeat

From the log file note:

  • The first message shows the spawning of the retransmitter. The subsequent lines that contain “INFO GatewayRetransmitter” after the timestamp show that there are no experiments to retransmit, so the retransmitter just exits.
  • The line that starts with “INFO GatewayReceiver” after the timestamp shows the file receiver starting, which means that it is awaiting connects from NDTS Daemons.
  • The last lines shows that a heartbeat came in from an NDTS Daemon, and the Gateway is forwarding it to the Receiver.