Kea  2.3.5-git
isc::ha::HAConfig Class Reference

Storage for High Availability configuration. More...

#include <ha_config.h>

Classes

class  PeerConfig
 HA peer configuration. More...
 
class  StateConfig
 Configuration specific to a single HA state. More...
 
class  StateMachineConfig
 State machine configuration information. More...
 

Public Types

enum  HAMode { LOAD_BALANCING, HOT_STANDBY, PASSIVE_BACKUP }
 Mode of operation. More...
 
typedef std::map< std::string, PeerConfigPtrPeerConfigMap
 Map of the servers' configurations. More...
 
typedef boost::shared_ptr< PeerConfigPeerConfigPtr
 Pointer to the server's configuration. More...
 
typedef boost::shared_ptr< StateConfigStateConfigPtr
 Pointer to the state configuration. More...
 
typedef boost::shared_ptr< StateMachineConfigStateMachineConfigPtr
 Pointer to a state machine configuration. More...
 

Public Member Functions

 HAConfig ()
 Constructor. More...
 
bool amAllowingCommRecovery () const
 Convenience function checking if communication recovery is allowed. More...
 
bool amSendingLeaseUpdates () const
 Returns boolean flag indicating whether lease updates should be sent to the partner. More...
 
bool amSyncingLeases () const
 Returns boolean flag indicating whether the active servers should synchronize their lease databases upon startup. More...
 
bool amWaitingBackupAck () const
 Checks if the server is configured to wait for the acknowledgments to the lease updates from the backup server or not. More...
 
PeerConfigMap getAllServersConfig () const
 Returns configurations of all servers. More...
 
util::Optional< std::string > getCertFile () const
 Returns global cert-file. More...
 
uint32_t getDelayedUpdatesLimit () const
 Returns the maximum number of lease updates which can be held unsent in the communication-recovery state. More...
 
bool getEnableMultiThreading ()
 Checks if the server is configured for multi-threaded operation. More...
 
PeerConfigPtr getFailoverPeerConfig () const
 Returns configuration of the partner which takes part in failover. More...
 
HAMode getHAMode () const
 Returns mode of operation. More...
 
uint32_t getHeartbeatDelay () const
 Returns heartbeat delay in milliseconds. More...
 
uint32_t getHttpClientThreads ()
 Fetches the number of threads the HTTP client should use. More...
 
bool getHttpDedicatedListener ()
 Checks if the server is configured to use its own HTTP listener. More...
 
uint32_t getHttpListenerThreads ()
 Fetches the number of threads the HTTP listener should use. More...
 
util::Optional< std::string > getKeyFile () const
 Returns global key-file. More...
 
uint32_t getMaxAckDelay () const
 Returns maximum time for a client trying to communicate with DHCP server to complete the transaction. More...
 
uint32_t getMaxRejectedLeaseUpdates () const
 Returns a maximum number of clients for whom lease updates failed due to other than general error. More...
 
uint32_t getMaxResponseDelay () const
 Returns max response delay. More...
 
uint32_t getMaxUnackedClients () const
 Returns maximum number of clients which may fail to communicate with the DHCP server before entering partner down state. More...
 
PeerConfigMap getOtherServersConfig () const
 Returns configuration of other servers. More...
 
PeerConfigPtr getPeerConfig (const std::string &name) const
 Returns configuration of the specified server. More...
 
bool getRequireClientCerts () const
 Returns require-client-certs. More...
 
bool getRestrictCommands () const
 Returns restrict-commands. More...
 
StateMachineConfigPtr getStateMachineConfig () const
 Returns state machine configuration. More...
 
uint32_t getSyncPageLimit () const
 Returns maximum number of leases per page to be fetched during database synchronization. More...
 
uint32_t getSyncTimeout () const
 Returns timeout for lease database synchronization. More...
 
PeerConfigPtr getThisServerConfig () const
 Returns configuration of this server. More...
 
std::string getThisServerName () const
 Returns name of this server. More...
 
util::Optional< std::string > getTrustAnchor () const
 Returns global trust-anchor. More...
 
PeerConfigPtr selectNextPeerConfig (const std::string &name)
 Creates and returns pointer to the new peer's configuration. More...
 
void setCertFile (const util::Optional< std::string > &cert)
 Sets global cert-file. More...
 
void setDelayedUpdatesLimit (const uint32_t delayed_updates_limit)
 Sets new limit for the number of lease updates to be held unsent in the communication-recovery state. More...
 
void setEnableMultiThreading (bool enable_multi_threading)
 Sets whether or not server is configured for multi-threaded operation. More...
 
void setHAMode (const std::string &ha_mode)
 Sets new mode of operation. More...
 
void setHeartbeatDelay (const uint32_t heartbeat_delay)
 Sets new heartbeat delay in milliseconds. More...
 
void setHttpClientThreads (uint32_t http_client_threads)
 Sets the number of threads the HTTP client should use. More...
 
void setHttpDedicatedListener (bool http_dedicated_listener)
 Sets whether or not the server is configured to use its own HTTP listener. More...
 
void setHttpListenerThreads (uint32_t http_listener_threads)
 Sets the number of threads the HTTP listener should use. More...
 
void setKeyFile (const util::Optional< std::string > &key)
 Sets global key-file. More...
 
void setMaxAckDelay (const uint32_t max_ack_delay)
 Sets maximum time for a client trying to communicate with DHCP server to completed the transaction. More...
 
void setMaxRejectedLeaseUpdates (const uint32_t max_rejected_lease_updates)
 Sets the maximum number of clients for which lease updates can fail due to other than general error. More...
 
void setMaxResponseDelay (const uint32_t max_response_delay)
 Sets new max response delay. More...
 
void setMaxUnackedClients (const uint32_t max_unacked_clients)
 Set maximum number of clients which may fail to communicate with the DHCP server before entering partner down state. More...
 
void setRequireClientCerts (bool flag)
 Sets require-client-certs. More...
 
void setRestrictCommands (bool flag)
 Sets restrict-commands. More...
 
void setSendLeaseUpdates (const bool send_lease_updates)
 Sets boolean flag indicating whether lease updates should be sent to the partner. More...
 
void setSyncLeases (const bool sync_leases)
 Sets boolean flag indicating whether the active servers should synchronize their lease databases upon startup. More...
 
void setSyncPageLimit (const uint32_t sync_page_limit)
 Sets new page limit size for leases fetched from the partner during database synchronization. More...
 
void setSyncTimeout (const uint32_t sync_timeout)
 Sets new lease database syncing timeout in milliseconds. More...
 
void setThisServerName (const std::string &this_server_name)
 Sets name of this server. More...
 
void setTrustAnchor (const util::Optional< std::string > &ca)
 Sets global trust-anchor. More...
 
void setWaitBackupAck (const bool wait_backup_ack)
 Configures the server to wait/not wait for the lease update acknowledgments from the backup servers. More...
 
void validate ()
 Validates configuration. More...
 

Static Public Member Functions

static std::string HAModeToString (const HAMode &ha_mode)
 Returns HA mode name. More...
 
static HAMode stringToHAMode (const std::string &ha_mode)
 Decodes HA mode provided as string. More...
 

Public Attributes

util::Optional< std::string > cert_file_
 Certificate file. More...
 
uint32_t delayed_updates_limit_
 Maximum number of lease updates held for later send in communication-recovery. More...
 
bool enable_multi_threading_
 Enable multi-threading. More...
 
HAMode ha_mode_
 Mode of operation. More...
 
uint32_t heartbeat_delay_
 Heartbeat delay in milliseconds. More...
 
uint32_t http_client_threads_
 Number of HTTP client threads. More...
 
bool http_dedicated_listener_
 Enable use of own HTTP listener. More...
 
uint32_t http_listener_threads_
 Number of HTTP listener threads. More...
 
util::Optional< std::string > key_file_
 Private key file. More...
 
uint32_t max_ack_delay_
 Maximum DHCP message ack delay. More...
 
uint32_t max_rejected_lease_updates_
 Limit of rejected lease updates before termination. More...
 
uint32_t max_response_delay_
 Max delay in response to heartbeats. More...
 
uint32_t max_unacked_clients_
 Maximum number of unacked clients. More...
 
PeerConfigMap peers_
 Map of peers' configurations. More...
 
bool require_client_certs_
 Require client certs flag. More...
 
bool restrict_commands_
 Restrict commands to HA flag. More...
 
bool send_lease_updates_
 Send lease updates to partner? More...
 
StateMachineConfigPtr state_machine_
 State machine configuration. More...
 
bool sync_leases_
 Synchronize databases on startup? More...
 
uint32_t sync_page_limit_
 Page size limit while synchronizing leases. More...
 
uint32_t sync_timeout_
 Timeout for syncing lease database (ms) More...
 
std::string this_server_name_
 This server name. More...
 
util::Optional< std::string > trust_anchor_
 Trust anchor. More...
 
bool wait_backup_ack_
 Wait for lease update ack from backup? More...
 

Detailed Description

Storage for High Availability configuration.

Definition at line 33 of file ha_config.h.

Member Typedef Documentation

◆ PeerConfigMap

typedef std::map<std::string, PeerConfigPtr> isc::ha::HAConfig::PeerConfigMap

Map of the servers' configurations.

Definition at line 232 of file ha_config.h.

◆ PeerConfigPtr

typedef boost::shared_ptr<PeerConfig> isc::ha::HAConfig::PeerConfigPtr

Pointer to the server's configuration.

Definition at line 229 of file ha_config.h.

◆ StateConfigPtr

typedef boost::shared_ptr<StateConfig> isc::ha::HAConfig::StateConfigPtr

Pointer to the state configuration.

Definition at line 280 of file ha_config.h.

◆ StateMachineConfigPtr

Pointer to a state machine configuration.

Definition at line 312 of file ha_config.h.

Member Enumeration Documentation

◆ HAMode

Mode of operation.

Currently supported modes are:

  • load-balancing
  • hot-standby
  • passive-backup
Enumerator
LOAD_BALANCING 
HOT_STANDBY 
PASSIVE_BACKUP 

Definition at line 42 of file ha_config.h.

Constructor & Destructor Documentation

◆ HAConfig()

isc::ha::HAConfig::HAConfig ( )

Constructor.

Definition at line 162 of file ha_config.cc.

Member Function Documentation

◆ amAllowingCommRecovery()

bool isc::ha::HAConfig::amAllowingCommRecovery ( ) const
inline

Convenience function checking if communication recovery is allowed.

Communication recovery is only allowed in load-balancing configurations. It is enabled by setting delayed-updates-limit to a value greater than 0.

Returns
true if communication recovery is enabled, false otherwise.

Definition at line 475 of file ha_config.h.

◆ amSendingLeaseUpdates()

bool isc::ha::HAConfig::amSendingLeaseUpdates ( ) const
inline

Returns boolean flag indicating whether lease updates should be sent to the partner.

Definition at line 370 of file ha_config.h.

◆ amSyncingLeases()

bool isc::ha::HAConfig::amSyncingLeases ( ) const
inline

Returns boolean flag indicating whether the active servers should synchronize their lease databases upon startup.

Definition at line 389 of file ha_config.h.

◆ amWaitingBackupAck()

bool isc::ha::HAConfig::amWaitingBackupAck ( ) const
inline

Checks if the server is configured to wait for the acknowledgments to the lease updates from the backup server or not.

Returns
true if the server is configured to wait for the acknowledgments or false otherwise.

Definition at line 601 of file ha_config.h.

◆ getAllServersConfig()

PeerConfigMap isc::ha::HAConfig::getAllServersConfig ( ) const
inline

Returns configurations of all servers.

Returns
Map of pointers to the servers' configurations.

Definition at line 764 of file ha_config.h.

◆ getCertFile()

util::Optional<std::string> isc::ha::HAConfig::getCertFile ( ) const
inline

Returns global cert-file.

Definition at line 681 of file ha_config.h.

◆ getDelayedUpdatesLimit()

uint32_t isc::ha::HAConfig::getDelayedUpdatesLimit ( ) const
inline

Returns the maximum number of lease updates which can be held unsent in the communication-recovery state.

If the server is in the communication-recovery state it is unable to send lease updates to the partner. Instead it keeps lease updates, hoping to send them when the communication is resumed. This value designates a limit of how many such updates can be held. If this number is exceeded the server continues to respond to the clients but will have to go through regular lease database synchronization when the communication is resumed.

Returns
Limit of the lease backlog size in communication-recovery.

Definition at line 448 of file ha_config.h.

◆ getEnableMultiThreading()

bool isc::ha::HAConfig::getEnableMultiThreading ( )
inline

Checks if the server is configured for multi-threaded operation.

Returns
true if the server is configured for multi-threaded operation

Definition at line 608 of file ha_config.h.

◆ getFailoverPeerConfig()

HAConfig::PeerConfigPtr isc::ha::HAConfig::getFailoverPeerConfig ( ) const

Returns configuration of the partner which takes part in failover.

The server for which the configuration is returned is a "primary", "secondary" or "standby". This method is typically used to locate the configuration of the server to which heartbeat command is to be sent.

Returns
Pointer to the partner's configuration.
Exceptions
InvalidOperationif there is no suitable configuration found.

Definition at line 250 of file ha_config.cc.

References isc::ha::HAConfig::PeerConfig::BACKUP, getOtherServersConfig(), getThisServerName(), and isc_throw.

+ Here is the call graph for this function:

◆ getHAMode()

HAMode isc::ha::HAConfig::getHAMode ( ) const
inline

Returns mode of operation.

Definition at line 341 of file ha_config.h.

◆ getHeartbeatDelay()

uint32_t isc::ha::HAConfig::getHeartbeatDelay ( ) const
inline

Returns heartbeat delay in milliseconds.

This value indicates the delay in sending a heartbeat command after last heartbeat or some other command to the partner. A value of zero disables the heartbeat.

Returns
Heartbeat delay in milliseconds.

Definition at line 486 of file ha_config.h.

◆ getHttpClientThreads()

uint32_t isc::ha::HAConfig::getHttpClientThreads ( )
inline

Fetches the number of threads the HTTP client should use.

Returns
number of threads the client is configured to use.

Definition at line 657 of file ha_config.h.

◆ getHttpDedicatedListener()

bool isc::ha::HAConfig::getHttpDedicatedListener ( )
inline

Checks if the server is configured to use its own HTTP listener.

When this is true, the server should instantiate an HTTP listener instance which listens on this server's URL. If false, this server will rely on a kea-control-agent.

Returns
true if the server is configured to use its own HTTP listener.

Definition at line 627 of file ha_config.h.

◆ getHttpListenerThreads()

uint32_t isc::ha::HAConfig::getHttpListenerThreads ( )
inline

Fetches the number of threads the HTTP listener should use.

Returns
number of threads the listener is configured to use.

Definition at line 643 of file ha_config.h.

◆ getKeyFile()

util::Optional<std::string> isc::ha::HAConfig::getKeyFile ( ) const
inline

Returns global key-file.

Definition at line 693 of file ha_config.h.

◆ getMaxAckDelay()

uint32_t isc::ha::HAConfig::getMaxAckDelay ( ) const
inline

Returns maximum time for a client trying to communicate with DHCP server to complete the transaction.

Returns
Maximum delay in milliseconds.

Definition at line 525 of file ha_config.h.

◆ getMaxRejectedLeaseUpdates()

uint32_t isc::ha::HAConfig::getMaxRejectedLeaseUpdates ( ) const
inline

Returns a maximum number of clients for whom lease updates failed due to other than general error.

A lease update may fail due to a conflict with the partner's configuration. The server distinguishes such errors from general errors (e.g., related to communication issues) to avoid transitioning to the partner-down state when there is in fact a problem with a lease or the configuration. On the other hand, if such problematic leases accumulate, the server can no longer provide the HA service and should transition to the terminated state. Consequently, an administrator must fix the configuration problem. This function returns the maximum number of clients with conflicting leases before the server transitions to the terminated state.

Returns
Maximum number of rejected lease updates before the server terminates the HA service.

Definition at line 568 of file ha_config.h.

◆ getMaxResponseDelay()

uint32_t isc::ha::HAConfig::getMaxResponseDelay ( ) const
inline

Returns max response delay.

Max response delay is the maximum time that the server is waiting for its partner to respond to the heartbeats (and lease updates) before it assumes the communications interrupted state.

Definition at line 506 of file ha_config.h.

◆ getMaxUnackedClients()

uint32_t isc::ha::HAConfig::getMaxUnackedClients ( ) const
inline

Returns maximum number of clients which may fail to communicate with the DHCP server before entering partner down state.

Returns
Maximum number of clients.

Definition at line 541 of file ha_config.h.

◆ getOtherServersConfig()

HAConfig::PeerConfigMap isc::ha::HAConfig::getOtherServersConfig ( ) const

Returns configuration of other servers.

Returns a map of pointers to the configuration of all servers except this.

Returns
Map of pointers to the servers' configurations.

Definition at line 268 of file ha_config.cc.

References isc::data::copy(), getThisServerName(), and peers_.

Referenced by getFailoverPeerConfig().

+ Here is the call graph for this function:

◆ getPeerConfig()

HAConfig::PeerConfigPtr isc::ha::HAConfig::getPeerConfig ( const std::string &  name) const

Returns configuration of the specified server.

Parameters
nameServer name.
Returns
Pointer to the partner's configuration.
Exceptions
InvalidOperationif there is no suitable configuration found.

Definition at line 240 of file ha_config.cc.

References isc_throw, and peers_.

Referenced by getThisServerConfig().

◆ getRequireClientCerts()

bool isc::ha::HAConfig::getRequireClientCerts ( ) const
inline

Returns require-client-certs.

Definition at line 705 of file ha_config.h.

Referenced by validate().

◆ getRestrictCommands()

bool isc::ha::HAConfig::getRestrictCommands ( ) const
inline

Returns restrict-commands.

Definition at line 717 of file ha_config.h.

◆ getStateMachineConfig()

StateMachineConfigPtr isc::ha::HAConfig::getStateMachineConfig ( ) const
inline

Returns state machine configuration.

Returns
Pointer to the state machine configuration.

Definition at line 771 of file ha_config.h.

◆ getSyncPageLimit()

uint32_t isc::ha::HAConfig::getSyncPageLimit ( ) const
inline

Returns maximum number of leases per page to be fetched during database synchronization.

Returns
Maximum number of leases per page.

Definition at line 424 of file ha_config.h.

◆ getSyncTimeout()

uint32_t isc::ha::HAConfig::getSyncTimeout ( ) const
inline

Returns timeout for lease database synchronization.

Returns
Timeout in milliseconds.

Definition at line 409 of file ha_config.h.

◆ getThisServerConfig()

HAConfig::PeerConfigPtr isc::ha::HAConfig::getThisServerConfig ( ) const

Returns configuration of this server.

Returns
Pointer to the configuration of this server.

Definition at line 263 of file ha_config.cc.

References getPeerConfig(), and getThisServerName().

+ Here is the call graph for this function:

◆ getThisServerName()

std::string isc::ha::HAConfig::getThisServerName ( ) const
inline

Returns name of this server.

Definition at line 330 of file ha_config.h.

Referenced by getFailoverPeerConfig(), getOtherServersConfig(), getThisServerConfig(), and validate().

◆ getTrustAnchor()

util::Optional<std::string> isc::ha::HAConfig::getTrustAnchor ( ) const
inline

Returns global trust-anchor.

Definition at line 669 of file ha_config.h.

◆ HAModeToString()

std::string isc::ha::HAConfig::HAModeToString ( const HAMode ha_mode)
static

Returns HA mode name.

Parameters
ha_modeHA mode which name should be returned.
Returns
HA mode name.

Definition at line 225 of file ha_config.cc.

References HOT_STANDBY, LOAD_BALANCING, and PASSIVE_BACKUP.

Referenced by isc::ha::HAImpl::commandProcessed(), and isc::ha::HAService::HAService().

◆ selectNextPeerConfig()

HAConfig::PeerConfigPtr isc::ha::HAConfig::selectNextPeerConfig ( const std::string &  name)

Creates and returns pointer to the new peer's configuration.

This method is called during peers configuration parsing, when the parser starts reading configuration of the next peer on the list. It will store parsed values into this object.

Parameters
nameName of the server for which new configuration should be created.
Exceptions
BadValueif there is already a configuration for the given server name.

Definition at line 175 of file ha_config.cc.

References isc_throw, and peers_.

◆ setCertFile()

void isc::ha::HAConfig::setCertFile ( const util::Optional< std::string > &  cert)
inline

Sets global cert-file.

Parameters
certCertificate file name.

Definition at line 688 of file ha_config.h.

◆ setDelayedUpdatesLimit()

void isc::ha::HAConfig::setDelayedUpdatesLimit ( const uint32_t  delayed_updates_limit)
inline

Sets new limit for the number of lease updates to be held unsent in the communication-recovery state.

If the server is in the communication-recovery state it is unable to send lease updates to the partner. Instead it keeps lease updates, hoping to send them when the communication is resumed. This value designates a limit of how many such updates can be held. If this number is exceeded the server continues to respond to the clients but will have to go through regular lease database synchronization when the communication is resumed.

Parameters
delayed_updates_limitnew limit.

Definition at line 464 of file ha_config.h.

◆ setEnableMultiThreading()

void isc::ha::HAConfig::setEnableMultiThreading ( bool  enable_multi_threading)
inline

Sets whether or not server is configured for multi-threaded operation.

Parameters
enable_multi_threadingboolean flag that enables multi-threaded operation when true.

Definition at line 616 of file ha_config.h.

◆ setHAMode()

void isc::ha::HAConfig::setHAMode ( const std::string &  ha_mode)

Sets new mode of operation.

The following modes of operation are supported:

  • load-balancing
  • hot-standby
Parameters
ha_modeHigh Availability mode operation in textual form.
Exceptions
BadValueif non-supported mode of operation has been specified.

Definition at line 205 of file ha_config.cc.

References ha_mode_, and stringToHAMode().

+ Here is the call graph for this function:

◆ setHeartbeatDelay()

void isc::ha::HAConfig::setHeartbeatDelay ( const uint32_t  heartbeat_delay)
inline

Sets new heartbeat delay in milliseconds.

This value indicates the delay in sending a heartbeat command after last heartbeat or some other command to the partner. A value of zero disables the heartbeat.

Parameters
heartbeat_delaynew heartbeat delay value.

Definition at line 497 of file ha_config.h.

◆ setHttpClientThreads()

void isc::ha::HAConfig::setHttpClientThreads ( uint32_t  http_client_threads)
inline

Sets the number of threads the HTTP client should use.

Parameters
http_client_threadsnumber of threads the client should use.

Definition at line 664 of file ha_config.h.

◆ setHttpDedicatedListener()

void isc::ha::HAConfig::setHttpDedicatedListener ( bool  http_dedicated_listener)
inline

Sets whether or not the server is configured to use its own HTTP listener.

Parameters
http_dedicated_listenerflag that enables the use of a dedicated listener when true.

Definition at line 636 of file ha_config.h.

◆ setHttpListenerThreads()

void isc::ha::HAConfig::setHttpListenerThreads ( uint32_t  http_listener_threads)
inline

Sets the number of threads the HTTP listener should use.

Parameters
http_listener_threadsnumber of threads the listener should use.

Definition at line 650 of file ha_config.h.

◆ setKeyFile()

void isc::ha::HAConfig::setKeyFile ( const util::Optional< std::string > &  key)
inline

Sets global key-file.

Parameters
keyPrivate key file name.

Definition at line 700 of file ha_config.h.

◆ setMaxAckDelay()

void isc::ha::HAConfig::setMaxAckDelay ( const uint32_t  max_ack_delay)
inline

Sets maximum time for a client trying to communicate with DHCP server to completed the transaction.

Parameters
max_ack_delaymaximum time in milliseconds.

Definition at line 533 of file ha_config.h.

◆ setMaxRejectedLeaseUpdates()

void isc::ha::HAConfig::setMaxRejectedLeaseUpdates ( const uint32_t  max_rejected_lease_updates)
inline

Sets the maximum number of clients for which lease updates can fail due to other than general error.

The service is terminated when the actual number of rejected clients is equal or greater that number.

Parameters
max_rejected_clientsmaximum number of distinct clients for which the lease updates can fail before the server terminates the HA service. A special value of 0 configures the server to never transition to the terminated state as a result of the lease updates issues.

Definition at line 582 of file ha_config.h.

◆ setMaxResponseDelay()

void isc::ha::HAConfig::setMaxResponseDelay ( const uint32_t  max_response_delay)
inline

Sets new max response delay.

Max response delay is the maximum time that the server is waiting for its partner to respond to the heartbeats (and lease updates) before it assumes the communications interrupted state.

Parameters
max_response_delay

Definition at line 517 of file ha_config.h.

◆ setMaxUnackedClients()

void isc::ha::HAConfig::setMaxUnackedClients ( const uint32_t  max_unacked_clients)
inline

Set maximum number of clients which may fail to communicate with the DHCP server before entering partner down state.

Parameters
max_unacked_clientsmaximum number of clients.

Definition at line 549 of file ha_config.h.

◆ setRequireClientCerts()

void isc::ha::HAConfig::setRequireClientCerts ( bool  flag)
inline

Sets require-client-certs.

Parameters
flagRequire client certs flag value.

Definition at line 712 of file ha_config.h.

◆ setRestrictCommands()

void isc::ha::HAConfig::setRestrictCommands ( bool  flag)
inline

Sets restrict-commands.

Parameters
flagRestrict commands to HA flag value.

Definition at line 724 of file ha_config.h.

◆ setSendLeaseUpdates()

void isc::ha::HAConfig::setSendLeaseUpdates ( const bool  send_lease_updates)
inline

Sets boolean flag indicating whether lease updates should be sent to the partner.

Disabling lease updates is useful in cases when lease database replication is enabled, e.g. MySQL database replication. The database itself takes care of updating the backup database with new data. Sending lease updates is enabled by default.

Parameters
send_lease_updatesnew value for the flag.

Definition at line 383 of file ha_config.h.

◆ setSyncLeases()

void isc::ha::HAConfig::setSyncLeases ( const bool  sync_leases)
inline

Sets boolean flag indicating whether the active servers should synchronize their lease databases upon startup.

Disabling lease database synchronization is useful in cases when lease database replication is enabled. See the description of the setSendLeaseUpdates. Lease database synchronization is enabled by default on active HA servers.

Parameters
sync_leasesnew value for the flag.

Definition at line 402 of file ha_config.h.

◆ setSyncPageLimit()

void isc::ha::HAConfig::setSyncPageLimit ( const uint32_t  sync_page_limit)
inline

Sets new page limit size for leases fetched from the partner during database synchronization.

Parameters
sync_page_limitNew page limit value.

Definition at line 432 of file ha_config.h.

◆ setSyncTimeout()

void isc::ha::HAConfig::setSyncTimeout ( const uint32_t  sync_timeout)
inline

Sets new lease database syncing timeout in milliseconds.

Parameters
sync_timeoutnew timeout for lease database synchronization.

Definition at line 416 of file ha_config.h.

◆ setThisServerName()

void isc::ha::HAConfig::setThisServerName ( const std::string &  this_server_name)

Sets name of this server.

Parameters
this_server_nameThis server name.
Exceptions
BadValueIf the provided server name is empty.

Definition at line 193 of file ha_config.cc.

References isc_throw, this_server_name_, and isc::util::str::trim().

+ Here is the call graph for this function:

◆ setTrustAnchor()

void isc::ha::HAConfig::setTrustAnchor ( const util::Optional< std::string > &  ca)
inline

Sets global trust-anchor.

Parameters
caTrust anchor aka Certificate Authority.

Definition at line 676 of file ha_config.h.

◆ setWaitBackupAck()

void isc::ha::HAConfig::setWaitBackupAck ( const bool  wait_backup_ack)
inline

Configures the server to wait/not wait for the lease update acknowledgments from the backup servers.

Parameters
wait_backup_ackindicates that the server should wait for the lease update acknowledgments from the backup servers (if true) or that it should not (if false).

Definition at line 592 of file ha_config.h.

◆ stringToHAMode()

HAConfig::HAMode isc::ha::HAConfig::stringToHAMode ( const std::string &  ha_mode)
static

Decodes HA mode provided as string.

Parameters
ha_modeHA mode as string.
Returns
HA mode converted from string.
Exceptions
BadValueif specified HA mode name is unsupported.

Definition at line 210 of file ha_config.cc.

References HOT_STANDBY, isc_throw, LOAD_BALANCING, and PASSIVE_BACKUP.

Referenced by setHAMode().

◆ validate()

void isc::ha::HAConfig::validate ( )

Validates configuration.

In addition to sanity checking the configuration, it will check HA+MT configuration against Core multi-threading configuration add adjust HA+MT values as follows:

  1. If DHCP multi-threading is disabled, HA+MT will be disabled.
  2. If http-listener-threads is 0, it will be replaced with the number of DHCP threads
  3. If http-client-threads is 0, it will be replaced with the number of DHCP threads

As a side effect it fills the TLS context of peers when TLS is enabled.

Exceptions
HAConfigValidationErrorif configuration is invalid.

Definition at line 275 of file ha_config.cc.

References cert_file_, isc::asiolink::CLIENT, delayed_updates_limit_, enable_multi_threading_, isc::util::Optional< T >::get(), getRequireClientCerts(), getThisServerName(), isc::ha::HA_CONFIG_DHCP_MT_DISABLED, isc::ha::HA_CONFIG_DHCP_MT_DISABLED_AND_KEA_MT_ENABLED, isc::ha::HA_CONFIG_SYSTEM_MT_UNSUPPORTED, isc::ha::ha_logger, ha_mode_, HOT_STANDBY, http_client_threads_, http_listener_threads_, isc_throw, key_file_, LOAD_BALANCING, LOG_INFO, LOG_WARN, PASSIVE_BACKUP, peers_, isc::ha::HAConfig::PeerConfig::PRIMARY, isc::ha::HAConfig::PeerConfig::SECONDARY, isc::asiolink::SERVER, isc::ha::HAConfig::PeerConfig::STANDBY, trust_anchor_, isc::util::Optional< T >::unspecified(), wait_backup_ack_, and isc::Exception::what().

+ Here is the call graph for this function:

Member Data Documentation

◆ cert_file_

util::Optional<std::string> isc::ha::HAConfig::cert_file_

Certificate file.

Definition at line 811 of file ha_config.h.

Referenced by validate().

◆ delayed_updates_limit_

uint32_t isc::ha::HAConfig::delayed_updates_limit_

Maximum number of lease updates held for later send in communication-recovery.

Definition at line 798 of file ha_config.h.

Referenced by validate().

◆ enable_multi_threading_

bool isc::ha::HAConfig::enable_multi_threading_

Enable multi-threading.

Definition at line 806 of file ha_config.h.

Referenced by validate().

◆ ha_mode_

HAMode isc::ha::HAConfig::ha_mode_

Mode of operation.

Definition at line 792 of file ha_config.h.

Referenced by setHAMode(), and validate().

◆ heartbeat_delay_

uint32_t isc::ha::HAConfig::heartbeat_delay_

Heartbeat delay in milliseconds.

Definition at line 800 of file ha_config.h.

◆ http_client_threads_

uint32_t isc::ha::HAConfig::http_client_threads_

Number of HTTP client threads.

Definition at line 809 of file ha_config.h.

Referenced by validate().

◆ http_dedicated_listener_

bool isc::ha::HAConfig::http_dedicated_listener_

Enable use of own HTTP listener.

Definition at line 807 of file ha_config.h.

◆ http_listener_threads_

uint32_t isc::ha::HAConfig::http_listener_threads_

Number of HTTP listener threads.

Definition at line 808 of file ha_config.h.

Referenced by validate().

◆ key_file_

util::Optional<std::string> isc::ha::HAConfig::key_file_

Private key file.

Definition at line 812 of file ha_config.h.

Referenced by validate().

◆ max_ack_delay_

uint32_t isc::ha::HAConfig::max_ack_delay_

Maximum DHCP message ack delay.

Definition at line 802 of file ha_config.h.

◆ max_rejected_lease_updates_

uint32_t isc::ha::HAConfig::max_rejected_lease_updates_

Limit of rejected lease updates before termination.

Definition at line 804 of file ha_config.h.

◆ max_response_delay_

uint32_t isc::ha::HAConfig::max_response_delay_

Max delay in response to heartbeats.

Definition at line 801 of file ha_config.h.

◆ max_unacked_clients_

uint32_t isc::ha::HAConfig::max_unacked_clients_

Maximum number of unacked clients.

Definition at line 803 of file ha_config.h.

◆ peers_

PeerConfigMap isc::ha::HAConfig::peers_

Map of peers' configurations.

Definition at line 815 of file ha_config.h.

Referenced by getOtherServersConfig(), getPeerConfig(), selectNextPeerConfig(), and validate().

◆ require_client_certs_

bool isc::ha::HAConfig::require_client_certs_

Require client certs flag.

Definition at line 813 of file ha_config.h.

◆ restrict_commands_

bool isc::ha::HAConfig::restrict_commands_

Restrict commands to HA flag.

Definition at line 814 of file ha_config.h.

◆ send_lease_updates_

bool isc::ha::HAConfig::send_lease_updates_

Send lease updates to partner?

Definition at line 793 of file ha_config.h.

◆ state_machine_

StateMachineConfigPtr isc::ha::HAConfig::state_machine_

State machine configuration.

Definition at line 816 of file ha_config.h.

◆ sync_leases_

bool isc::ha::HAConfig::sync_leases_

Synchronize databases on startup?

Definition at line 794 of file ha_config.h.

◆ sync_page_limit_

uint32_t isc::ha::HAConfig::sync_page_limit_

Page size limit while synchronizing leases.

Definition at line 796 of file ha_config.h.

◆ sync_timeout_

uint32_t isc::ha::HAConfig::sync_timeout_

Timeout for syncing lease database (ms)

Definition at line 795 of file ha_config.h.

◆ this_server_name_

std::string isc::ha::HAConfig::this_server_name_

This server name.

Definition at line 791 of file ha_config.h.

Referenced by setThisServerName().

◆ trust_anchor_

util::Optional<std::string> isc::ha::HAConfig::trust_anchor_

Trust anchor.

Definition at line 810 of file ha_config.h.

Referenced by validate().

◆ wait_backup_ack_

bool isc::ha::HAConfig::wait_backup_ack_

Wait for lease update ack from backup?

Definition at line 805 of file ha_config.h.

Referenced by validate().


The documentation for this class was generated from the following files: