summaryrefslogtreecommitdiff
path: root/docs/configuration/highavailability
diff options
context:
space:
mode:
authorYuriy Andamasov <yuriy@vyos.io>2026-05-10 17:19:31 +0300
committerYuriy Andamasov <yuriy@vyos.io>2026-05-10 17:19:31 +0300
commit3fd1787d50dda76619647dd95ea6e1d421204734 (patch)
tree3e4f5341e2b4c5618ba1fa6b52a5cda63c4c1c29 /docs/configuration/highavailability
parentd7e63e1923814a791dadf93453e8c090d26ca896 (diff)
downloadvyos-documentation-3fd1787d50dda76619647dd95ea6e1d421204734.tar.gz
vyos-documentation-3fd1787d50dda76619647dd95ea6e1d421204734.zip
chore: remove RST swap mechanism, archive rst-*.rst under docs/_rst_legacy/
The swap mechanism (RST-as-fallback for migrated MD pages) is dormant — docs/_rst_overrides.txt has been empty since the MyST flip trio (#1899/#1900/#1901) landed in May 2026. The mechanism's surface area (scripts/swap_sources.py, its 245-line test, RTD pre/post hooks, Makefile glue, conf.py dynamic loader) is dead weight, and the rst-*.rst shadows scattered across the source tree cause Context7's parser to misclassify the project as RST. Changes: - Move 253 rst-*.rst shadow files into docs/_rst_legacy/ preserving subdirectory structure. They remain in the repo for reference; Sphinx excludes the folder via exclude_patterns; Context7 excludes it via excludeFolders. - Strip swap_sources.py invocation from docs/Makefile (swap/restore targets, : swap deps, trap chains). - Strip jobs: pre_build/post_build block from .readthedocs.yml. - Strip rst-*.rst exclude entry and the _md_exclude.txt loader from docs/conf.py; replace with a single _rst_legacy exclude. - Delete scripts/swap_sources.py, tests/test_swap_sources.py, docs/_rst_overrides.txt. - Update context7.json: add docs/_rst_legacy to excludeFolders; fix stale "Branch current tracks…" rule to "Branch rolling tracks…" (default branch was renamed 2026-05-10). - Update AGENTS.md: drop the "RST override mechanism" section and the test-runner snippet for the deleted test; describe _rst_legacy as archive only. Verified: sphinx-build -b html with --keep-going produces identical warning set (68 unique), identical sitemap entry count (257), identical llms.txt entry count (22), zero rst-* URLs in any artifact. 🤖 Generated by [robots](https://vyos.io)
Diffstat (limited to 'docs/configuration/highavailability')
-rw-r--r--docs/configuration/highavailability/rst-index.rst545
1 files changed, 0 insertions, 545 deletions
diff --git a/docs/configuration/highavailability/rst-index.rst b/docs/configuration/highavailability/rst-index.rst
deleted file mode 100644
index 952a345b..00000000
--- a/docs/configuration/highavailability/rst-index.rst
+++ /dev/null
@@ -1,545 +0,0 @@
-:lastproofread: 2021-06-30
-
-.. _high-availability:
-
-#################
-High availability
-#################
-
-VRRP (Virtual Router Redundancy Protocol) provides active/backup redundancy for
-routers. Every VRRP router has a physical IP/IPv6 address, and a virtual
-address. On startup, routers elect the master, and the router with the highest
-priority becomes the master and assigns the virtual address to its interface.
-All routers with lower priorities become backup routers. The master then starts
-sending keepalive packets to notify other routers that it's available. If the
-master fails and stops sending keepalive packets, the router with the next
-highest priority becomes the new master and takes over the virtual address.
-
-VRRP keepalive packets use multicast, and VRRP setups are limited to a single
-datalink layer segment. You can setup multiple VRRP groups
-(also called virtual routers). Virtual routers are identified by a
-VRID (Virtual Router IDentifier). If you setup multiple groups on the same
-interface, their VRIDs must be unique if they use the same address family,
-but it's possible (even if not recommended for readability reasons) to use
-duplicate VRIDs on different interfaces.
-
-Basic setup
------------
-
-VRRP groups are created with the
-``set high-availability vrrp group $GROUP_NAME`` commands. The required
-parameters are interface, vrid, and address.
-
-minimal config
-
-.. code-block:: none
-
- set high-availability vrrp group Foo vrid 10
- set high-availability vrrp group Foo interface eth0
- set high-availability vrrp group Foo address 192.0.2.1/24
-
-You can verify your VRRP group status with the operational mode
-``run show vrrp`` command:
-
-.. code-block:: none
-
- vyos@vyos# run show vrrp
- Name Interface VRID State Last Transition
- ---------- ----------- ------ ------- -----------------
- Foo eth1 10 MASTER 2s
-
-IPv6 support
-------------
-
-The ``address`` parameter can be either an IPv4 or IPv6 address, but you can
-not mix IPv4 and IPv6 in the same group, and will need to create groups with
-different VRIDs specially for IPv4 and IPv6.
-If you want to use IPv4 + IPv6 address you can use option ``excluded-address``
-
-Address
--------
-The ``address`` can be configured either on the VRRP interface or on not VRRP
-interface.
-
-.. code-block:: none
-
- set high-availability vrrp group Foo address 192.0.2.1/24
- set high-availability vrrp group Foo address 203.0.113.22/24 interface eth2
- set high-availability vrrp group Foo address 198.51.100.33/24 interface eth3
-
-Disabling a VRRP group
-----------------------
-
-You can disable a VRRP group with ``disable`` option:
-
-.. code-block:: none
-
- set high-availability vrrp group Foo disable
-
-A disabled group will be removed from the VRRP process and your router will not
-participate in VRRP for that VRID. It will disappear from operational mode
-commands output, rather than enter the backup state.
-
-Exclude address
----------------
-
-Exclude IP addresses from ``VRRP packets``. This option ``excluded-address`` is
-used when you want to set IPv4 + IPv6 addresses on the same virtual interface
-or when used more than 20 IP addresses.
-
-.. code-block:: none
-
- set high-availability vrrp group Foo excluded-address '203.0.113.254/24'
- set high-availability vrrp group Foo excluded-address '2001:db8:aa::1/64'
- set high-availability vrrp group Foo excluded-address '2001:db8:22::1/64'
-
-Setting VRRP group priority
----------------------------
-
-VRRP priority can be set with ``priority`` option:
-
-.. code-block:: none
-
- set high-availability vrrp group Foo priority 200
-
-The priority must be an integer number from 1 to 255. Higher priority value
-increases router's precedence in the master elections.
-
-Sync groups
------------
-
-A sync group allows VRRP groups to transition together.
-
-.. code-block:: none
-
- edit high-availability vrrp
- set sync-group MAIN member VLAN9
- set sync-group MAIN member VLAN20
-
-In the following example, when VLAN9 transitions, VLAN20 will also transition:
-
-.. code-block:: none
-
- vrrp {
- group VLAN9 {
- interface eth0.9
- address 10.9.1.1/24
- priority 200
- vrid 9
- }
- group VLAN20 {
- interface eth0.20
- priority 200
- address 10.20.20.1/24
- vrid 20
- }
- sync-group MAIN {
- member VLAN20
- member VLAN9
- }
- }
-
-
-.. warning:: All items in a sync group should be similarly configured.
- If one VRRP group is set to a different preemption delay or priority,
- it would result in an endless transition loop.
-
-
-Preemption
-----------
-
-VRRP can use two modes: preemptive and non-preemptive. In the preemptive mode,
-if a router with a higher priority fails and then comes back, routers with lower
-priority will give up their master status. In non-preemptive mode, the newly
-elected master will keep the master status and the virtual address indefinitely.
-
-By default VRRP uses preemption. You can disable it with the "no-preempt"
-option:
-
-.. code-block:: none
-
- set high-availability vrrp group Foo no-preempt
-
-You can also configure the time interval for preemption with the "preempt-delay"
-option. For example, to set the higher priority router to take over in 180
-seconds, use:
-
-.. code-block:: none
-
- set high-availability vrrp group Foo preempt-delay 180
-
-Track
------
-
-Track option to track non VRRP interface states. VRRP changes status to
-``FAULT`` if one of the track interfaces in state ``down``.
-
-.. code-block:: none
-
- set high-availability vrrp group Foo track interface eth0
- set high-availability vrrp group Foo track interface eth1
-
-Ignore VRRP main interface faults
-
-.. code-block:: none
-
- set high-availability vrrp group Foo track exclude-vrrp-interface
-
-Unicast VRRP
-------------
-
-By default VRRP uses multicast packets. If your network does not support
-multicast for whatever reason, you can make VRRP use unicast communication
-instead.
-
-.. code-block:: none
-
- set high-availability vrrp group Foo peer-address 192.0.2.10
- set high-availability vrrp group Foo hello-source-address 192.0.2.15
-
-rfc3768-compatibility
----------------------
-
-RFC 3768 defines a virtual MAC address to each VRRP virtual router.
-This virtual router MAC address will be used as the source in all periodic VRRP
-messages sent by the active node. When the rfc3768-compatibility option is set,
-a new VRRP interface is created, to which the MAC address and the virtual IP
-address is automatically assigned.
-
-.. code-block:: none
-
- set high-availability vrrp group Foo rfc3768-compatibility
-
-Verification
-
-.. code-block:: none
-
- $show interfaces ethernet eth0v10
- eth0v10@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue
- state UP group default qlen 1000
- link/ether 00:00:5e:00:01:0a brd ff:ff:ff:ff:ff:ff
- inet 172.25.0.247/16 scope global eth0v10
- valid_lft forever preferred_lft forever
-
-.. warning:: RFC 3768 creates a virtual interface. If you want to apply
- the destination NAT rule to the traffic sent to the virtual MAC, set
- the created virtual interface as `inbound-interface`.
-
-Global options
---------------
-
-On most scenarios, there's no need to change specific parameters, and using
-default configuration is enough. But there are cases were extra configuration
-is needed.
-
-.. cfgcmd:: set high-availability vrrp global-parameters startup_delay <1-600>
-
- This option specifies a delay in seconds before vrrp instances start up
- after keepalived starts.
-
-Gratuitous ARP
---------------
-
-These configuration is not mandatory and in most cases there's no
-need to configure it. But if necessary, Gratuitous ARP can be configured in
-``global-parameters`` and/or in ``group`` section.
-
-.. cfgcmd:: set high-availability vrrp global-parameters garp interval
- <0.000-1000>
-
-.. cfgcmd:: set high-availability vrrp group <name> garp interval <0.000-1000>
-
- Set delay between gratuitous ARP messages sent on an interface.
-
- 0 if not defined.
-
-.. stop_vyoslinter
-
-.. cfgcmd:: set high-availability vrrp global-parameters garp master-delay <1-255>
-
-.. start_vyoslinter
-
-.. cfgcmd:: set high-availability vrrp group <name> garp master-delay <1-255>
-
- Set delay for second set of gratuitous ARPs after transition to MASTER.
-
- 5 if not defined.
-
-.. cfgcmd:: set high-availability vrrp global-parameters garp master-refresh
- <1-600>
-
-.. cfgcmd:: set high-availability vrrp group <name> garp master-refresh
- <1-600>
-
- Set minimum time interval for refreshing gratuitous ARPs while MASTER.
-
- 0 if not defined, which means no refreshing.
-
-.. cfgcmd:: set high-availability vrrp global-parameters garp
- master-refresh-repeat <1-600>
-
-.. cfgcmd:: set high-availability vrrp group <name> garp
- master-refresh-repeat <1-600>
-
- Set number of gratuitous ARP messages to send at a time while MASTER.
-
- 1 if not defined.
-
-.. cfgcmd:: set high-availability vrrp global-parameters garp master-repeat
- <1-600>
-
-.. cfgcmd:: set high-availability vrrp group <name> garp master-repeat
- <1-600>
-
- Set number of gratuitous ARP messages to send at a time after transition to
- MASTER.
-
- 5 if not defined.
-
-Version
--------
-
-.. cfgcmd:: set high-availability vrrp global-parameters version 2|3
-
- Set the default VRRP version to use. This defaults to 2, but IPv6 instances
- will always use version 3.
-
-Scripting
----------
-
-VRRP functionality can be extended with scripts. VyOS supports two kinds of
-scripts: health check scripts and transition scripts. Health check scripts
-execute custom checks in addition to the master router reachability. Transition
-scripts are executed when VRRP state changes from master to backup or fault and
-vice versa and can be used to enable or disable certain services, for example.
-
-.. note:: Simply placing script files in ``/config/scripts/`` does not mean the
- system can execute them. To make custom scripts executable, grant them
- **execute permissions**. Use the following command:
-
- .. code-block:: none
-
- chmod +x /config/scripts/script-name.sh
-
-.. warning:: It is not recommended to change VRRP configuration
- inside health-check and transition scripts.
-
-Health check scripts
-^^^^^^^^^^^^^^^^^^^^
-
-There is the ability to run an arbitrary script at regular intervals
-according to health-check parameters. If a script returns 0, it
-indicates success. If a script returns anything else, it will indicate
-that the VRRP instance should enter the FAULT state.
-
-This setup will make the VRRP process execute the
-``/config/scripts/vrrp-check.sh script`` every 60 seconds, and transition the
-group to the fault state if it fails (i.e. exits with non-zero status) three
-times:
-
-.. stop_vyoslinter
-
-.. code-block:: none
-
- set high-availability vrrp group Foo health-check script /config/scripts/vrrp-check.sh
- set high-availability vrrp group Foo health-check interval 60
- set high-availability vrrp group Foo health-check failure-count 3
-
-.. start_vyoslinter
-
-An optional ``timeout`` can be set to define the maximum number of seconds the
-script is allowed to run. This is useful for scripts that may hang or take
-longer than expected — setting the timeout higher than the interval allows
-longer-running scripts to complete before being considered failed.
-
-.. stop_vyoslinter
-
-.. code-block:: none
-
- set high-availability vrrp group Foo health-check script /config/scripts/vrrp-check.sh
- set high-availability vrrp group Foo health-check interval 20
- set high-availability vrrp group Foo health-check failure-count 3
- set high-availability vrrp group Foo health-check timeout 40
-
-.. start_vyoslinter
-
-When the vrrp group is a member of the sync group will use only
-the sync group health check script.
-This example shows how to configure it for the sync group:
-
-.. stop_vyoslinter
-
-.. code-block:: none
-
- set high-availability vrrp sync-group Bar health-check script /config/scripts/vrrp-check.sh
- set high-availability vrrp sync-group Bar health-check interval 60
- set high-availability vrrp sync-group Bar health-check failure-count 3
-
-.. start_vyoslinter
-
-Transition scripts
-^^^^^^^^^^^^^^^^^^
-
-Transition scripts can help you implement various fixups, such as starting and
-stopping services, or even modifying the VyOS config on VRRP transition.
-This setup will make the VRRP process execute the
-``/config/scripts/vrrp-fail.sh`` with argument ``Foo`` when VRRP fails,
-and the ``/config/scripts/vrrp-master.sh`` when the router becomes the master:
-
-.. stop_vyoslinter
-
-.. code-block:: none
-
- set high-availability vrrp group Foo transition-script backup "/config/scripts/vrrp-fail.sh Foo"
- set high-availability vrrp group Foo transition-script fault "/config/scripts/vrrp-fail.sh Foo"
- set high-availability vrrp group Foo transition-script master "/config/scripts/vrrp-master.sh Foo"
-
-.. start_vyoslinter
-
-To know more about scripting, check the :ref:`command-scripting` section.
-
-Virtual-server
---------------
-.. include:: /_include/need_improvement.txt
-
-Virtual Server allows to Load-balance traffic destination virtual-address:port
-between several real servers.
-
-Algorithm
-^^^^^^^^^
-Load-balancing schedule algorithm:
-
-* round-robin
-* weighted-round-robin
-* least-connection
-* weighted-least-connection
-* source-hashing
-* destination-hashing
-* locality-based-least-connection
-
-.. code-block:: none
-
- set high-availability virtual-server 203.0.113.1 algorithm 'least-connection'
-
-Forward method
-^^^^^^^^^^^^^^
-* NAT
-* direct
-* tunnel
-
-.. code-block:: none
-
- set high-availability virtual-server 203.0.113.1 forward-method 'nat'
-
-Health-check
-^^^^^^^^^^^^
-Custom health-check script allows checking real-server availability
-
-.. stop_vyoslinter
-
-.. code-block:: none
-
- set high-availability virtual-server 203.0.113.1 real-server 192.0.2.11 health-check script <path-to-script>
-
-.. start_vyoslinter
-
-Fwmark
-^^^^^^
-Firewall mark. It possible to loadbalancing traffic based on ``fwmark`` value
-
-.. code-block:: none
-
- set high-availability virtual-server 203.0.113.1 fwmark '111'
-
-Real server
-^^^^^^^^^^^
-Real server IP address and port
-
-.. stop_vyoslinter
-
-.. code-block:: none
-
- set high-availability virtual-server 203.0.113.1 real-server 192.0.2.11 port '80'
-
-.. start_vyoslinter
-
-
-Example
-^^^^^^^
-Virtual-server can be configured with VRRP virtual address or without VRRP.
-
-In the next example all traffic destined to ``203.0.113.1`` and port ``8280``
-protocol TCP is balanced between 2 real servers ``192.0.2.11`` and
-``192.0.2.12`` to port ``80``
-
-Real server is auto-excluded if port check with this server fail.
-
-.. stop_vyoslinter
-
-.. code-block:: none
-
- set interfaces ethernet eth0 address '203.0.113.11/24'
- set interfaces ethernet eth1 address '192.0.2.1/24'
- set high-availability vrrp group FOO interface 'eth0'
- set high-availability vrrp group FOO no-preempt
- set high-availability vrrp group FOO priority '150'
- set high-availability vrrp group FOO address '203.0.113.1/24'
- set high-availability vrrp group FOO vrid '10'
-
- set high-availability virtual-server 203.0.113.1 algorithm 'source-hashing'
- set high-availability virtual-server 203.0.113.1 delay-loop '10'
- set high-availability virtual-server 203.0.113.1 forward-method 'nat'
- set high-availability virtual-server 203.0.113.1 persistence-timeout '180'
- set high-availability virtual-server 203.0.113.1 port '8280'
- set high-availability virtual-server 203.0.113.1 protocol 'tcp'
- set high-availability virtual-server 203.0.113.1 real-server 192.0.2.11 port '80'
- set high-availability virtual-server 203.0.113.1 real-server 192.0.2.12 port '80'
-
-.. start_vyoslinter
-
-A firewall mark ``fwmark`` allows using multiple ports for high-availability
-virtual-server.
-It uses fwmark value.
-
-In this example all traffic destined to ports "80, 2222, 8888" protocol TCP
-marks to fwmark "111" and balanced between 2 real servers.
-Port "0" is required if multiple ports are used.
-
-.. stop_vyoslinter
-
-.. code-block:: none
-
- set interfaces ethernet eth0 address 'dhcp'
- set interfaces ethernet eth0 description 'WAN'
- set interfaces ethernet eth1 address '192.0.2.1/24'
- set interfaces ethernet eth1 description 'LAN'
-
- set policy route PR interface 'eth0'
- set policy route PR rule 10 destination port '80,2222,8888'
- set policy route PR rule 10 protocol 'tcp'
- set policy route PR rule 10 set mark '111'
-
- set high-availability virtual-server vyos fwmark '111'
- set high-availability virtual-server vyos protocol 'tcp'
- set high-availability virtual-server vyos real-server 192.0.2.11 health-check script '/config/scripts/check-real-server-first.sh'
- set high-availability virtual-server vyos real-server 192.0.2.11 port '0'
- set high-availability virtual-server vyos real-server 192.0.2.12 health-check script '/config/scripts/check-real-server-second.sh'
- set high-availability virtual-server vyos real-server 192.0.2.12 port '0'
-
- set nat source rule 100 outbound-interface name 'eth0'
- set nat source rule 100 source address '192.0.2.0/24'
- set nat source rule 100 translation address 'masquerade'
-
-.. start_vyoslinter
-
-Op-mode check virtual-server status
-
-.. code-block:: none
-
- vyos@r14:~$ run show virtual-server
- IP Virtual Server version 1.2.1 (size=4096)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- FWM 111 lc persistent 300
- -> 192.0.2.11:0 Masq 1 0 0
- -> 192.0.2.12:0 Masq 1 1 0