Page MenuHomeVyOS Platform

Improve CLI for high-availability virtual-server to work with multiple ports
Closed, ResolvedPublicFEATURE REQUEST

Description

Requested from the forum

  1. Currently, it is impossible to balance/bind several ports to the same virtual server (if not use fwmark)

Marking is unsuitable in some cases and does not allow flexible virtual-server ---> real-server port matching.
Example of current configuration:

set high-availability virtual-server 203.0.113.1 algorithm 'source-hashing'
set high-availability virtual-server 203.0.113.1 port '8080'
set high-availability virtual-server 203.0.113.1 real-server 192.0.2.11 port '8081'
set high-availability virtual-server 203.0.113.1 real-server 192.0.2.12 port '8082'

So if we need to balance also and port 8888 it will overwrite the current port 8080
The proposed change is to set the virtual-server as <tag> and use address to set the address explicit

Proposed new CLI

set high-availability virtual-server my_first_server address 203.0.113.1
set high-availability virtual-server my_first_server port 8080
set high-availability virtual-server my_first_server real-server 192.0.2.11 port '8881'
set high-availability virtual-server my_first_server real-server 192.0.2.12 port '8882'

set high-availability virtual-server my_second_server address 203.0.113.1
set high-availability virtual-server my_second_server port 8888
set high-availability virtual-server my_second_server real-server 192.0.2.111 port '8883'
set high-availability virtual-server my_second_server real-server 192.0.2.112 port '8883'

Expected keepalived configuration:

# Virtual-server configuration
# Vserver my_first_server
virtual_server 203.0.113.1 8080 {
    delay_loop 10
    lb_algo sh
    lb_kind NAT
    persistence_timeout 300
    protocol TCP
    real_server 192.0.2.11 8881 {
        weight 1
        TCP_CHECK {
        }
    }
    real_server 192.0.2.12 8882 {
        weight 1
        TCP_CHECK {
        }
    }
}

# Vserver my_second_server
virtual_server 203.0.113.1 8888 {
    delay_loop 10
    lb_algo sh
    lb_kind NAT
    persistence_timeout 300
    protocol TCP
    real_server 192.0.2.111 8883 {
        weight 1
        TCP_CHECK {
        }
    }
    real_server 192.0.2.112 8883 {
        weight 1
        TCP_CHECK {
        }
    }
}
  1. Virtual-server port should be optional. If we don't set the virtual-server port we don't expect ports and for real-server

Details

Difficulty level
Unknown (require assessment)
Version
VyOS 1.4-rolling-202307060317
Why the issue appeared?
Will be filled on close
Is it a breaking change?
Unspecified (possibly destroys the router)
Issue type
Improvement (missing useful functionality)

Event Timeline

Viacheslav changed Version from - to VyOS 1.4-rolling-202307060317.
Viacheslav changed the task status from Open to In progress.Jul 11 2023, 1:00 PM
Viacheslav claimed this task.

PR https://github.com/vyos/vyos-1x/pull/2084

set high-availability virtual-server R1-8881 address '203.0.113.1'
set high-availability virtual-server R1-8881 port '8881'
set high-availability virtual-server R1-8881 real-server 192.0.2.11 port '80'

set high-availability virtual-server R1-8882 address '203.0.113.1'
set high-availability virtual-server R1-8882 port '8882'
set high-availability virtual-server R1-8882 real-server 192.0.2.11 port '80'
Viacheslav changed the task status from In progress to Needs testing.Jul 11 2023, 6:59 PM
Viacheslav moved this task from Need Triage to Finished on the VyOS 1.4 Sagitta board.