Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • W Waarp Gateway
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 48
    • Issues 48
    • List
    • Boards
    • Service Desk
    • Milestones
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Applications
  • Waarp Gateway
  • Waarp Gateway
  • Issues
  • #268
Closed
Open
Issue created Jul 27, 2021 by Bruno Carlin@bruno.carlinOwner

Add a way to differentiate the listen addresses for each node of a cluster

Every Gateway node in a cluster share the same configuration and the same database. They have the same definition of servers, including the listenAddress.

This poses a problem, because they cannot all listen on the same IP address.

Proposed solution

Add a table in the database to override settings for a given node of the cluster.

Each node must be given a identifier unique to the cluster. The table could have the following structure:

  • Cluster id = Gateway name
  • Node id
  • Key
  • Value
  • PK: (clusterid, node id, key)

The node identifier will be given as a command line argument when the server is launched, with support for an env var and a fallback on the hostname.

When a listener is started, the table is searched for an override for the node with the key listenAddress::OLDADDRESS and the value NEWADDRESS where:

  • OLDADDRESS is the address to replace (typically the address of the load balancer)
  • NEWADDRESS is the address to use

Key examples:

  • listenAddress::127.0.0.1
  • listenAddress::lb.fully.qualified.name
  • listenAddress::[67b4::92a3]

If none is found, the server's listenAddress is used, making it possible to use other external mechanism (NAT, /etc/hosts, etc.)

Edited Jul 28, 2021 by Bruno Carlin
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking