[Kea-users] Kea-upgrading from 2.6 to the latest

Kraishak Mahtha kraishak.edu at gmail.com
Fri Mar 20 07:45:12 UTC 2026


Hi all,

I was previously using Kea version 2.6, where my server configuration was
structured as outlined below. I am currently upgrading to the latest Kea
version and planning to implement a hub-spoke High Availability (HA)
architecture, with an additional server acting as a backup in hot-standby
mode.

While working on this transition, I am facing some uncertainty regarding
how address pools should be associated within the server failover
relationship in this model. During my review of the documentation, I came
across the ha-server-name parameter under user context; however, its role
in the updated configuration is not entirely clear to me.

In the earlier setup, when multiple pools were defined within a subnet, we
used client classes to associate specific pools with the DHCP failover
configuration. With the newer HA model, I would like to understand whether
the same approach should still be followed—i.e., associating client classes
with individual pools—or if it is recommended to use user-context (for
example, ha-server-name) and allow the server to determine the appropriate
pool dynamically, similar to the behavior in ISC DHCP.

Could someone please guide me on the recommended approach for migrating or
adapting my existing configuration to the latest version, specifically for
a hub-spoke setup?




































































































*{"Dhcp4": {    "interfaces-config": {"interfaces": ["ens160"]},
"authoritative": true,    "multi-threading": {        "packet-queue-size":
28,        "enable-multi-threading": true,        "thread-pool-size": 4
},    "lease-database": {        "name": "/tmp/dhcp4.leases",
"persist": true,        "type": "memfile"    },    "hooks-libraries": [
    {            "library": "/var/lib/kea/hooks/lib/dhcp_ha.so",
"parameters": {"high-availability": [{                "mode":
"load-balancing",                "heartbeat-delay": 10000,
"trust-anchor": "",                "multi-threading": {
"http-dedicated-listener": true,
"enable-multi-threading": true,                    "http-client-threads":
4,                    "http-listener-threads": 4                },
      "max-response-delay": 60000,                "cert-file": "",
      "this-server-name": "dev-ipv4-stack-remote-20",
"max-ack-delay": 4000,                "peers": [                    {
                  "role": "primary",                        "name":
"dev-ipv4-stack-remote-20",                        "auto-failover": true,
                      "url": "http://10.1.11.20:8001
<http://10.1.11.20:8001>"                    },                    {
                "role": "secondary",                        "name":
"kea-dhcp-21",                        "auto-failover": true,
        "url": "http://10.1.11.27:8001 <http://10.1.11.27:8001>"
        }                ],                "key-file": "",
"max-unacked-clients": 5            }]}        }],    "subnet4": [{
"subnet": "14.0.0.0/24 <http://14.0.0.0/24>",        "valid-lifetime":
86400,        "option-data": [            {                "data":
"test.com <http://test.com>",                "name": "domain-name"
  },            {                "data": "86400",                "name":
"dhcp-lease-time"            },            {                "data":
"255.255.255.0",                "name": "subnet-mask"            },
    {                "data": "14.0.0.1",                "name": "routers"
          }        ],        "pools": [            {
"client-class": "allow-client_HA_dev-ipv4-stack-remote-20",
"pool": "14.0.0.12-14.0.0.19"            },            {
"client-class": "allow-client_HA_kea-dhcp-21",                "pool":
"14.0.0.2-14.0.0.9"            }        ],        "id": 785075    }],
"client-classes": [        {"name": "deny-client"},        {
"test": "(not(member('deny-client')))",            "name": "allow-client"
      },        {            "test": "member('allow-client') and
member('HA_dev-ipv4-stack-remote-20')",            "name":
"allow-client_HA_dev-ipv4-stack-remote-20"        },        {
"test": "member('allow-client') and member('HA_kea-dhcp-21')",
"name": "allow-client_HA_kea-dhcp-21"        }    ]}}Thanks in Advance*
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.isc.org/pipermail/kea-users/attachments/20260320/021cde30/attachment.htm>


More information about the Kea-users mailing list