diff options
| author | Christian Breunig <christian@breunig.cc> | 2023-09-21 07:15:04 +0200 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-21 07:15:04 +0200 | 
| commit | cb06343979c08b9b45ada95b8c96dcaeb5ea6466 (patch) | |
| tree | 6b3509577308fb5aba0fb315966236641bf63f0b | |
| parent | f9fd136402e87864a4449fa920cf036b9e97338b (diff) | |
| parent | cb297aea56da91144c53be1f396b64a26a8e5b04 (diff) | |
| download | vyos-1x-cb06343979c08b9b45ada95b8c96dcaeb5ea6466.tar.gz vyos-1x-cb06343979c08b9b45ada95b8c96dcaeb5ea6466.zip | |
Merge pull request #2294 from sever-sever/T5602
T5602: Reverse-proxy add option backup for backend server
| -rw-r--r-- | data/templates/load-balancing/haproxy.cfg.j2 | 2 | ||||
| -rw-r--r-- | interface-definitions/load-balancing-haproxy.xml.in | 6 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_load_balancing_reverse_proxy.py | 2 | 
3 files changed, 9 insertions, 1 deletions
| diff --git a/data/templates/load-balancing/haproxy.cfg.j2 b/data/templates/load-balancing/haproxy.cfg.j2 index 0a40e1ecf..a75ee9904 100644 --- a/data/templates/load-balancing/haproxy.cfg.j2 +++ b/data/templates/load-balancing/haproxy.cfg.j2 @@ -146,7 +146,7 @@ backend {{ back }}  {%         if back_config.server is vyos_defined %}  {%             set ssl_back =  'ssl ca-file /run/haproxy/' ~ back_config.ssl.ca_certificate ~ '.pem' if back_config.ssl.ca_certificate is vyos_defined else '' %}  {%             for server, server_config in back_config.server.items() %} -    server {{ server }} {{ server_config.address }}:{{ server_config.port }}{{ ' check' if server_config.check is vyos_defined }}{{ ' send-proxy' if server_config.send_proxy is vyos_defined }}{{ ' send-proxy-v2' if server_config.send_proxy_v2 is vyos_defined }} {{ ssl_back }} +    server {{ server }} {{ server_config.address }}:{{ server_config.port }}{{ ' check' if server_config.check is vyos_defined }}{{ ' backup' if server_config.backup is vyos_defined }}{{ ' send-proxy' if server_config.send_proxy is vyos_defined }}{{ ' send-proxy-v2' if server_config.send_proxy_v2 is vyos_defined }} {{ ssl_back }}  {%             endfor %}  {%         endif %}  {%         if back_config.timeout.check is vyos_defined %} diff --git a/interface-definitions/load-balancing-haproxy.xml.in b/interface-definitions/load-balancing-haproxy.xml.in index f955a2fb7..564c335ec 100644 --- a/interface-definitions/load-balancing-haproxy.xml.in +++ b/interface-definitions/load-balancing-haproxy.xml.in @@ -124,6 +124,12 @@                        </constraint>                      </properties>                    </leafNode> +                  <leafNode name="backup"> +                    <properties> +                      <help>Use backup server if other servers are not available</help> +                      <valueless/> +                    </properties> +                  </leafNode>                    <leafNode name="check">                      <properties>                        <help>Active health check backend server</help> diff --git a/smoketest/scripts/cli/test_load_balancing_reverse_proxy.py b/smoketest/scripts/cli/test_load_balancing_reverse_proxy.py index a33fd5c18..274b97f22 100755 --- a/smoketest/scripts/cli/test_load_balancing_reverse_proxy.py +++ b/smoketest/scripts/cli/test_load_balancing_reverse_proxy.py @@ -74,6 +74,7 @@ class TestLoadBalancingReverseProxy(VyOSUnitTestSHIM.TestCase):          self.cli_set(back_base + [bk_second_name, 'mode', mode])          self.cli_set(back_base + [bk_second_name, 'server', bk_second_name, 'address', bk_server_second])          self.cli_set(back_base + [bk_second_name, 'server', bk_second_name, 'port', bk_server_port]) +        self.cli_set(back_base + [bk_second_name, 'server', bk_second_name, 'backup'])          self.cli_set(base_path + ['global-parameters', 'max-connections', max_connections]) @@ -106,6 +107,7 @@ class TestLoadBalancingReverseProxy(VyOSUnitTestSHIM.TestCase):          self.assertIn(f'backend {bk_second_name}', config)          self.assertIn(f'mode {mode}', config)          self.assertIn(f'server {bk_second_name} {bk_server_second}:{bk_server_port}', config) +        self.assertIn(f'server {bk_second_name} {bk_server_second}:{bk_server_port} backup', config)  if __name__ == '__main__': | 
