Emmanuel Lecharny wrote:
Based on the previous elements, let's define what can be the
configuration, assuming we have one replication subsystem.

consumer :
- replicaId, an int between [0,999] : identify uniquely this consumer

Before you get too far, I should point out that replicaID is only significant within a single server. It's just a means of labeling each individual consumer config within one server. There is no requirement for uniqueness across multiple servers.

For OpenLDAP's MMR, we had to introduce the serverID parameter which *is* required to be unique across all masters. This goes into the sid field of the CSN, so it's a hex value [0-fff]. And also note that 0 is only valid for single-master replication, for MMR the sid must be non-zero.

- for each replication peer :
   o type, the replication type (RefreshAndPersist or ResfreshOnly).
Default to RefreshAndPersist.
   o interval, if type is ResfreshOnly : a hh/mm/ss interval between each
content polling
   o search base, the base DN to start the search on the producer
   o principal, the principal to use in order to connect on the producer
   o credential, the password to use to connect on the producer

I don't know if your network layer already handles it, so you haven't mentioned it here, but parameters for timeout / detecting a failed network connection and scheduling retries are also necessary.

producer :
currently, I see no specific information to set, but it's really a
preliminary proposal

One of the points to RFC4533 is that no producer-side configuration is required, although some optimization is possible.

Regarding the principal/credential information, as the passwords are
stored crypted using a one-way algorithm, we have to store it in clear.
This is not very safe. We can think about a better algorithm, like
encrypting the password using a 2 ways algorithm, but that means we have
to store a key on the server, which is a breach too. There is no free
lunch ...

Also provide the option of using SASL mechanisms. All of my production syncrepl configs use TLS and certificate-based authentication. You still get stuck needing the plaintext private key, but at least it's not a text string that can be easily spotted and memorized in passing.

I'm going to implement this configuration on the replication branch.

feel free to comment, and don't really care about the breakage that can
introduce in the code I will commit  : it's just there as a starting
point, nothing more.

Thanks !



--
  -- Howard Chu
  CTO, Symas Corp.           http://www.symas.com
  Director, Highland Sun     http://highlandsun.com/hyc/
  Chief Architect, OpenLDAP  http://www.openldap.org/project/

Reply via email to