Oracle Fusion Middleware Administration Guide for Oracle Directory Server Enterprise Edition

Configuring Client Affinity

Client affinity reduces the risk of propagation delay in load-balanced deployments. For information about client affinity, see Client Affinity in Oracle Fusion Middleware Reference for Oracle Directory Server Enterprise Edition. This section explains how to configure affinity between a client connection and a data source, and provides sample configurations.

ProcedureTo Configure Client Affinity

This procedure describes how to configure affinity between a client connection and a data source.

You can use DSCC to perform this task. For information, see Directory Service Control Center Interface and the DSCC online help.

  1. View the current load balancing algorithm by viewing the properties of the data source pool.


    $ dpconf get-ldap-data-source-pool-prop -h host -p port pool-name
    

    The default properties of a data source pool are as follows:


    client-affinity-bind-dn-filters     :  any
    client-affinity-criteria            :  connection
    client-affinity-ip-address-filters  :  any
    client-affinity-policy              :  write-affinity-after-write
    client-affinity-timeout             :  20s
    description                         :  -
    enable-client-affinity              :  false
    load-balancing-algorithm            :  proportional

    These parameters configure client affinity: client-affinity-bind-dn-filters, client-affinity-criteria, client-affinity-ip-address-filters, client-affinity-policy, client-affinity-timeout, and enable-client-affinity. For a description of the properties and a list of their valid values, type:


    dpconf help-properties ldap-data-source-pool client-affinity-bind-dn-filters \
    client-affinity-criteria client-affinity-policy client-affinity-ip-address-filters\
     client-affinity-timeout enable-client-affinity

    For more information about the properties, see these man pages: client-affinity-bind-dn-filters(5dpconf), client-affinity-criteria(5dpconf), client-affinity-ip-address-filters(5dpconf)client-affinity-policy(5dpconf), client-affinity-timeout(5dpconf), and enable-client-affinity(5dpconf).

  2. Enable client affinity.


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     enable-client-affinity:true
  3. Select a policy for client affinity.


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     client-affinity-policy:selected-policy
    

    where selected-policy is one of the following:

    write-affinity-after-write

    Affinity for write requests after the first write request

    read-write-affinity-after-write

    Affinity for all requests after the first write request

    read-write-affinity-after-any

    Affinity for all requests after the first read request or write request

    read-affinity-after-write

    Affinity for the first read request after a write request

  4. Configure the duration of the client affinity.


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     client-affinity-timeout:time-out[unit]

    The default unit for timeout is milliseconds.

    The above setting is applicable to the only connection under consideration. It is not applicable to all the connections from a particular client.

Example Configurations for Client Affinity

This section contains example configurations related to client affinity, and includes examples for replication delay, verifying write operations, and connection-based routing.

ProcedureTo Configure Client Affinity for Replication Delay When a Data Source Pool Contains Masters and Consumers

This procedure configures client affinity for all read and write operations that occur up to three seconds after the first write operation.

You can use DSCC to perform this task. For information, see Directory Service Control Center Interface and the DSCC online help.

  1. Configure the affinity parameters for the data source pool.


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     client-affinity-policy:read-write-affinity-after-write client-affinity-timeout:3000 \
     enable-client-affinity:true

ProcedureTo Configure Client Affinity to Verify Each Write Operation With a Read Operation

This procedure configures client affinity for the first read operation after each write operation. The example could be for an application where a specified bind DN validates each write operation by performing a read operation.

You can use DSCC to perform this task. For information, see Directory Service Control Center Interface and the DSCC online help.

  1. Configure the affinity parameters for the data source pool.


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     client-affinity-policy:read-affinity-after-write enable-client-affinity:true

ProcedureTo Configure Client Affinity for Client—Based Routing

If an application makes an update using one connection from the pool but then uses a different connection to do the search for that entry, the affinity setting on the connection used to do the update is not used because the search is done from a different connection. The search operation could also be routed to a different server than where the update was performed. In this case, the affinity feature works only within the same client connection.

To resolve this, affinity should be defined at the client level such as an IP address or bind DN. When an update is made by a client, all the connections from that client follow the same affinity rule.

  1. Specify the criteria to determine if the requests are coming from the same client.


    dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
    client-affinity-criteria:ip-address-and-bind-dn 

    For all the options, see client-affinity-criteria(5dpconf).

    The server matches the bind DN as well as the IP address of the client requests, if the entries meet the criteria then they are from the same client.

  2. Specify the regular expressions that the bind DN of the connection must match to consider that requests come from the same client.


    dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
    client-affinity-bind-dn-filters:"uid=boss*"
  3. Specify the IPv4 or IPv6 address that the IP address of the connection must match to consider that requests come from the same client.


    dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
    client-affinity-ip-address-filters:129.157.192.108

ProcedureTo Configure Client Affinity for Connection-Based Routing

In versions prior to Directory Proxy Server 6.0, one connection was opened between a client and an LDAP server. The same connection was used for all requests from the client until the connection was closed. This type of routing is called connection-based routing. This procedure describes how to configure client affinity for connection-based routing.

You can use DSCC to perform this task. For information, see Directory Service Control Center Interface and the DSCC online help.

Before You Begin

Ensure that all data sources are attached to the data source pool and that client-cred-mode is set to use-client-identity.

  1. Configure the affinity parameters for the data source pool.


    $ dpconf set-ldap-data-source-pool-prop -h host -p port pool-name \
     client-affinity-policy:read-write-affinity-after-any enable-client-affinity:true