Hi,

I need advice in respect of configuring HA on a pair of Raspberry Pi 3B+
units running Kea 1.4.0.P1-3 on Ubuntu 18.10

------------------------------keactrl.conf----------------------------
# This is a configuration file for keactrl script which controls
# the startup, shutdown, reconfiguration and gathering the status
# of the Kea's processes.

# prefix holds the location where the Kea is installed.
prefix=/usr

# Location of Kea configuration files.
kea_dhcp4_config_file=/etc/kea/kea-dhcp4.conf
kea_dhcp6_config_file=/etc/kea/kea-dhcp6.conf
kea_dhcp_ddns_config_file=/etc/kea/kea-dhcp-ddns.conf
kea_ctrl_agent_config_file=/etc/kea/kea-ctrl-agent.conf

# Location of Kea binaries.
exec_prefix=${prefix}
dhcp4_srv=${exec_prefix}/sbin/kea-dhcp4
dhcp6_srv=${exec_prefix}/sbin/kea-dhcp6
dhcp_ddns_srv=${exec_prefix}/sbin/kea-dhcp-ddns
ctrl_agent_srv=${exec_prefix}/sbin/kea-ctrl-agent

# Start DHCPv4 server?
dhcp4=yes

# Start DHCPv6 server?
dhcp6=yes

# Start DHCP DDNS server?
dhcp_ddns=yes

# Start Control Agent?
ctrl_agent=yes

# Be verbose?
kea_verbose=no
------------------------------keactrl.conf----------------------------

------------------------------kea-ctrl-agent.conf---------------------
{

// This is a basic configuration for the Kea Control Agent.
// RESTful interface to be available at http://127.0.0.1:8080/
"Control-agent": {
    "http-host": "192.168.26.246",
    "http-port": 8080,

    // Specify location of the files to which the Control Agent
    // should connect to forward commands to the DHCPv4 and DHCPv6
    // server via unix domain socket.
    "control-sockets": {
        "dhcp4": {
            "socket-type": "unix",
            "socket-name": "/tmp/kea-dhcp4-ctrl.sock"
        },
        "dhcp6": {
            "socket-type": "unix",
            "socket-name": "/tmp/kea-dhcp6-ctrl.sock"
        }
    },


    // Specify hooks libraries that are attached to the Control Agent.
    // Such hooks libraries should support 'control_command_receive'
    // hook point. This is currently commented out because it has to
    // point to the existing hooks library. Otherwise the Control
    // Agent will fail to start.
    "hooks-libraries": [
       {
       "library": "/usr/lib/arm-linux-gnueabihf/hooks/control-agent-commands.so",
       "parameters": {
           "param1": "foo"
         }
       },
      {
        "library": "/usr/lib/arm-linux-gnueabihf/hooks/libdhcp_ha.so",
        "parameters" : {
                         "high-availability": [ {
                               "this-server-name": "sauron",
                               "mode": "load-balancing",
                               "send-leases-updates": true,
                               "sync-leases": true,
                               "heartbeat-delay": 10000,
                               "max-response-delay": 10000,
                               "max-ack-delay": 5000,
                               "max-unacked-clients": 10,
                               "peers": [
                                   {
                                       "name": "sauron",
                                       "url": "http://192.168.26.246:8080/";,
                                       "role": "primary",
                                       "auto-failover": true
                                   },
                                   {
                                       "name": "mordor",
                                       "url": "http://122.168.26.248:8080/";,
                                       "role": "secondary",
                                       "auto-failover": true
                                   }
                               ]
                           } ]
                       }
      }
    ]
},

// Logging configuration starts here. Kea uses different loggers to log various
// activities. For details (e.g. names of loggers), see Chapter 18.
"Logging":
{
  "loggers": [
    {
        // This specifies the logging for Control Agent daemon.
        "name": "kea-ctrl-agent",
        "output_options": [
            {
                "output": "/var/log/kea/kea-ctrl-agent.log"

                // This governs whether the log output is flushed to disk after
                // every write.
                // "flush": false,

                // This specifies the maximum size of the file before it is
                // rotated.
                // "maxsize": 1048576,

                // This specifies the maximum number of rotated files to keep.
                // "maxver": 8
            }
        ],
        // This specifies the severity of log messages to keep. Supported values
        // are: FATAL, ERROR, WARN, INFO, DEBUG
        "severity": "INFO",

        // If DEBUG level is specified, this value is used. 0 is least verbose,
        // 99 is most verbose. Be cautious, Kea can generate lots and lots
        // of logs if told to do so.
        "debuglevel": 0
    }
  ]
}
}
------------------------------kea-ctrl-agent.conf---------------------


------------------------------kea-dhcp4.conf--------------------------
{

# DHCPv4 configuration starts here.
"Dhcp4":
{
# Add names of interfaces to listen on.
  "interfaces-config": {
    "interfaces": [ "eth0" ],
    "dhcp-socket-type": "raw"
  },

    "control-sockets": {
            "socket-type": "unix",
            "socket-name": "/tmp/kea-dhcp4-ctrl.sock"
    },

# Use Memfile lease database backend to store leases in a CSV file.
  "lease-database": { "type": "memfile", "persist": true, "name": "/var/kea/dhcp4.leases" },
  "hooks-libraries": [
      {
         "library": "/usr/lib/arm-linux-gnueabihf/hooks/libdhcp_lease_cmds.so",
         "parameters": {}
      },
      {
        "library": "/usr/lib/arm-linux-gnueabihf/hooks/libdhcp_ha.so",
        "parameters" : {
                         "high-availability": [ {
                               "this-server-name": "sauron",
                               "mode": "load-balancing",
                               "send-leases-updates": true,
                               "sync-leases": true,
                               "heartbeat-delay": 10000,
                               "max-response-delay": 10000,
                               "max-ack-delay": 5000,
                               "max-unacked-clients": 10,
                               "peers": [
                                   {
                                       "name": "sauron",
                                       "url": "http://192.168.26.246:8080/";,
                                       "role": "primary",
                                       "auto-failover": true
                                   },
                                   {
                                       "name": "mordor",
                                       "url": "http://192.168.26.248:8080/";,
                                       "role": "secondary",
                                       "auto-failover": true
                                   }
                               ]
                           } ],
                         "service": [ "dhcp4" ],
                         "arguments": { "server-name": "mordor", "max-period": 600 },
                         "command": "ha-sync"
                       }
      }
   ],
# Configure Global DHCP Options
  "option-data": [
     {
        "name": "domain-name",
        "data": "pi-net.corp"
     },
     {
        "name": "domain-name-servers",
        "data": "192.168.26.246, 192.168.26.247, 192.168.26.248, 192.168.26.249"
     },
     {
        "name": "ntp-servers",
        "data": "192.168.26.246, 192.168.26.247, 192.168.26.248, 192.168.26.249"
     },
     {
        "name": "routers",
        "data": "192.168.26.10"
     }
  ],
  "expired-leases-processing": {
    "reclaim-timer-wait-time": 10,
    "flush-reclaimed-timer-wait-time": 25,
    "hold-reclaimed-time": 3600,
    "max-reclaim-leases": 100,
    "max-reclaim-time": 250,
    "unwarned-reclaim-cycles": 5
  },

# Global (inherited by all subnets) lease lifetime is mandatory parameter.
  "valid-lifetime": 4000,

  "subnet4": [
      {    "subnet": "192.168.26.0/24",
           "id": 1996,
           "pools": [ { "pool": "192.168.26.20 - 192.168.26.29" } ],
           "reservations": [
               {
                  "hw-address": "00:00:00:00:00:00",
                  "ip-address": "192.168.26.124"
               }
           ]
       }
   ]
  },
# Logging configuration starts here. It tells Kea servers to store
# all log messages (on severity INFO or more) in a file.
# debuglevel variable is used on DEBUG level only.
  "Logging":
  {
    "loggers": [ {
      "name": "kea-dhcp4",
      "output_options": [ { "output": "/var/log/kea/kea-dhcp4.log" } ],
      "severity": "INFO",
      "debuglevel": 0
    } ]
  }

}
------------------------------kea-dhcp4.conf--------------------------

------------------------------kea-dhcp6.conf--------------------------
{

# DHCPv6 configuration starts here.
"Dhcp6":
{
# Add names of interfaces to listen on.
  "interfaces-config": {
    "interfaces": [ "eth0" ]
  },

    "control-sockets": {
        "dhcp6": {
            "socket-type": "unix",
            "socket-name": "/tmp/kea-dhcp6-ctrl.sock"
        }
    },


#  "mac-sources": [ "duid" ],

# Use Memfile lease database backend to store leases in a CSV file.
  "lease-database": {
    "type": "memfile",
    "persist": true,
    "name": "/var/kea/dhcp6.leases"
  },
# Configure Global DHCP Options
  "option-data": [
     {
        "name": "dns-servers",
        "code": 23,
        "space": "dhcp6",
        "csv-format": true,
        "data": "fd22:d18a:1556:1:9123:9736:2151:6722, fd22:f3476:584a:f:921d:b11b:1a66:41a6"
     },
     {
        "name": "sntp-servers",
        "data": "fd22:f3476:584a:f:9123:9736:2151:6722, fd22:f3476:584a:f:921d:b11b:1a66:41a6"
     }
  ],
# Setup reclamation of the expired leases and leases affinity.
# Expired leases will be reclaimed every 10 seconds. Every 25
# seconds reclaimed leases, which have expired more than 3600
# seconds ago, will be removed. The limits for leases reclamation
# are 100 leases or 250 ms for a single cycle. A warning message
# will be logged if there are still expired leases in the
# database after 5 consecutive reclamation cycles.
  "expired-leases-processing": {
    "reclaim-timer-wait-time": 10,
    "flush-reclaimed-timer-wait-time": 25,
    "hold-reclaimed-time": 3600,
    "max-reclaim-leases": 100,
    "max-reclaim-time": 250,
    "unwarned-reclaim-cycles": 5
  },
# Addresses will be assigned with preferred and valid lifetimes
# being 3000 and 4000, respectively. Client is told to start
# renewing after 1000 seconds. If the server does not respond
# after 2000 seconds since the lease was granted, client is supposed
# to start REBIND procedure (emergency renewal that allows switching
# to a different server).
  "preferred-lifetime": 3000,
  "valid-lifetime": 4000,
  "renew-timer": 1000,
  "rebind-timer": 2000,

  "subnet6": [
     {    "subnet": "fd22:f3476:584a:f::/64",
          "id": 2011,
          "pools": [ { "pool": "fd22:f3476:584a:f::/64" } ]
     }
   ]
},

# Logging configuration starts here. It tells Kea servers to store
# all log messages (on severity INFO or more) in a file.
# debuglevel variable is used on DEBUG level only.
"Logging":
{
  "loggers": [
    {
      "name": "kea-dhcp6",
      "output_options": [
          {
            "output": "/var/log/kea/kea-dhcp6.log"
          }
      ],
#      "severity": "INFO",
      "severity": "DEBUG",
      "debuglevel": 7
    }
  ]
}

}
------------------------------kea-dhcp6.conf--------------------------

I can not get the HA pair to sync.
TIA
russell

_______________________________________________
Kea-users mailing list
[email protected]
https://lists.isc.org/mailman/listinfo/kea-users

Reply via email to