Hi,

on the replication branch, we are now able to connect to an OpenLDAP server, and subscribe as a slave with the refreshOnly or refreshAndPersist operations. This is very experimental atm, and we need more than the current configuration in order to implement this in the server.

So far, here are the needed informations :
- a replicaId (or RID), uniquely identifying the server
- a replication type : RefreshOnly or RefreshAndPersist
- an interval for a RefreshOnly replication
- a search base, which will be the part of the tree to replicate
- a principal, used to connect on the master server
- a password

Currently, the lacking informations are :
- the replication type
- the search base
- the principal
- the password

We have a Replica class holding similar informations, namely a SocketAddress, as we where based on a proprietary protocol to handle the replication in the previous version (Mitosis). As the new replication model will be based on RFC 4533, we need to change this.

So the ReplicationInterceptor configuration will change. Currently, it looks like that :

   <replicationInterceptor>
     <configuration>
       <replicationConfiguration logMaxAge="5"
                                 replicaId="instance_a"
                                 replicationInterval="2"
                                 responseTimeout="10"
                                 serverPort="10390">
         <s:property name="peerReplicas">
           <s:set>
             <s:value>instanc...@localhost:1234</s:value>
             <s:value>instanc...@localhost:1234</s:value>
           </s:set>
         </s:property>
       </replicationConfiguration>
     </configuration>
   </replicationInterceptor>


We will remove the logMaxAge, responseTimeout and serverPort parameters. The peerReplicas will contain an LdapURL with the list of server we want to replicate from. Those replicas will look like :

ldap://[<principalDN>:<password>]@<server>[:<port>]/<baseDN>

We will end with a configuration like :

   <replicationInterceptor>
     <configuration>
       <replicationConfiguration sync="RefreshOnly"   (or "RefreshAndPersist")
                                 replicaId="001"
                                 replicationInterval="00:05:00">  (every 5 
minutes)
         <s:property name="peerReplicas">
           <s:set>
             
<s:value>ldap://uid=admin,ou=system:[email protected]:10389/ou=people,dc=apache,dc=org</s:value>
             
<s:value>ldap://uid=admin,ou=system:[email protected]:10389/ou=projects,dc=apache,dc=org</s:value>
           </s:set>
         </s:property>
       </replicationConfiguration>
     </configuration>
   </replicationInterceptor>

(the replicaId is now a 3 digits value, as the OpenLDAP looks like rid=000,sid=000,csn=20090311230920.705931Z#000000#001#000000).

We may want to be more specific with the peerReplicas, like for instance define a different replication Interval for each search base. That could be done using such a configuration :

   <replicationInterceptor>
     <configuration>
       <replicationConfiguration replicaId="001">
         <s:property name="peerReplicas">
           <s:set>
             <replica>
               <type>refreshAndPersist</type>
               <principalDn>uid=admin,ou=system</principalDn>
               <password>secret</password>
               <server>ldap1.apache.org</server>
               <port>10389</port>
               <baseDN>ou=people,dc=apache,dc=org</baseDN>
             </replica>
             <replica>
               <type>refreshOnly</type>
               <principalDn>uid=admin,ou=system</principalDn>
               <password>secret</password>
               <server>ldap1.apache.org</server>
               <port>10389</port>
               <baseDN>cn=config,ou=system</baseDN>
               <interval>01:00:00</interval>
             </replica>
           </s:set>
         </s:property>
       </replicationConfiguration>
     </configuration>
   </replicationInterceptor>


This is a very preliminary proposal. Feel free to comment it.

--
--
cordialement, regards,
Emmanuel Lécharny
www.iktek.com
directory.apache.org


Reply via email to