summaryrefslogtreecommitdiffstats
path: root/doc/examples/template-ha-mt-tls/info.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/examples/template-ha-mt-tls/info.md')
-rw-r--r--doc/examples/template-ha-mt-tls/info.md87
1 files changed, 87 insertions, 0 deletions
diff --git a/doc/examples/template-ha-mt-tls/info.md b/doc/examples/template-ha-mt-tls/info.md
new file mode 100644
index 0000000..f551220
--- /dev/null
+++ b/doc/examples/template-ha-mt-tls/info.md
@@ -0,0 +1,87 @@
+Template: Secure High Availability Kea DHCP with Multi-Threading
+----------------------------------------------------------------
+
+Below are some templates to assist in configuring a secure Kea DHCP server with
+multi-threading. These templates make the following assumptions:
+
+- The administrator wants to set up High Availability (HA) with multi-threading.
+- The machines running Kea with multi-threading have at least four CPU cores.
+- The connection to the peer is secured using TLS.
+
+The logical setup consists of two hosts, each running a Kea DHCPv4 server and a Control Agent (CA).
+In the multi-threading setup, the CA is not required, as the server is using its
+own dedicated HTTP listener to communicate with the peer. However, the CA can still
+be used to handle user commands.
+
+.. code-block:: none
+
+ +-host-1-+ +-host-2-+
+ | | | |
+ | CA | | CA | ===== - HTTPS connection
+ | # | | # |
+ | # | | # | ##### - UNIX socket
+ | # | | # |
+ | DHCPv4 ========= DHCPv4 |
+ | | | |
+ +--------+ +--------+
+
+The CAs on host-1 and host-2 both listen on port 8001, and the server's dedicated HTTP
+listener uses port 8000. The DHCP servers communicate with each other via the dedicated HTTP
+listener, which forwards only the lease-update commands to the peer server.
+
+Deployment Considerations
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The setup is not expected to scale automatically. This example uses four threads for
+processing DHCP traffic, four threads for listening and handling HA peer HTTP requests,
+and four threads for sending lease updates to the HA peer. The thread queue used to
+store incoming DHCP requests is set to 64, but proper testing and benchmarks are required
+to determine the appropriate values for best performance on the deployment setup.
+
+In this example, there are two hosts running Kea:
+
+- 192.168.1.2 - primary HA server (active, handles all the traffic)
+
+- 192.168.1.3 - secondary HA server (passive, ready to take over if the primary fails)
+
+The network is 192.168.1.0/24. It is assumed that 192.168.1.1 is the default router.
+
+The whole subnet is split into dynamic pools:
+
+- 192.168.1.100 - 192.168.1.199 - this is the dynamic pool. When new devices appear in the network,
+ they are assigned dynamic addresses from this pool.
+
+To deploy this setup, follow the steps provided in the power user home setup with the following distinctions:
+
+1. Install the CA only if the administrator is planning to manage Kea using the RESTful API.
+ Otherwise, the CA is not required for the High Availability Kea server with multi-threading.
+
+2. Alter the following to match the local setup:
+
+ - The paths to ``trust-anchor``, ``cert-file``, and ``key-file`` must be set to the
+ respective values corresponding to the deployment machine.
+
+ - The addressing must be updated, if using something other than 192.168.1.0/24. Make sure the CA port
+ configuration (``http-host`` and ``http-port`` in ``kea-ca.conf``) is different from the DHCPv4 server
+ configuration (``url`` in ``hook-libraries/parameters/high-availability/peers`` in ``kea-dhcp4.conf``).
+ The CA is used to handle only management commands, as the HA module sends lease updates using
+ the dedicated HTTP listener to the peer.
+
+3. Verify the communication between the HA peers by checking the Kea logs.
+
+4. Verify that communication between the hosts works in the opposite direction as well
+ (host-2 can connect to host-1), by repeating step 3 from host-2 using host-1's IP address and port.
+
+5. Install the CA and DHCPv4 on host-2, as in steps 1 and 2. The config file for the
+ standby server is very similar to the one on the primary server, other than the definition of
+ the ``this-server-name`` field (and possibly the interface names).
+
+Possible Extensions
+~~~~~~~~~~~~~~~~~~~
+
+This sample configuration is basic but functional. Once it is set up and running, administrators
+may wish to consider the following changes:
+
+- If using a database, it is also possible to configure TLS for the database backend (for
+ lease, host, configuration backend, or forensic logging). See :ref:`database-connectivity`
+ for more information.