[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: MirrorMode and chaining - are slaves needed?

Gavin Henry wrote:
> ----- "Ryan Steele" <ryans@aweber.com> wrote:
>> I want to use MirrorMode, but between six nodes instead of two (the
>> example in the Admin Guide uses three, so I figured
>> using more than just two nodes was fine).  As such, I need an active
>> master to ensure that two masters don't write to
>> the same entry or entries at (or near) the same time and cause a
>> conflict/partition.
> Sorry Ryan, but I think you misunderstand MirrorMode. MirrorMode is Active-Active
> Hot-standby. It's designed for just *two* nodes. The example in the admin guide is
> for full Multi-Master, but only showing three masters.
> Anything more that two is Multi-Master.

Hm, but the N-Way MultiMaster documentation has MirrorMode directives... perhaps that's the source of my confusion.
Does each master in an N-Way MultiMaster setup, in likeness with the documentation, have an olcMirrorMode directive?

>> I figured that having six masters in MirrorMode, instead of two
>> masters and four slaves, would allow me to cut down on
>> configuration while boosting my redundancy.  I would use chaining on
>> all of them to both keep the configs identical
>> (less management overhead) and ensure that I don't run in to the
>> aforementioned conflict scenarios.  Is there anything
>> I've failed to consider in deciding that using six masters in
>> MirrorMode is more desirable than having two masters in
>> MirrorMode with four slaves?
> See above. If you have 6 Multi-Master and replicate cn=config and the rest of the
> data, you will have your desired outcome.

Well, my desired outcome is to have a multi-master setup that guarantees the consistency of single-master setup, so I'm
fine with any configuration that adheres to those paradigms.

>> I thought it sounded more simple - six masters with identical
>> configurations (both cn=config and backend database
>> replicated via identical syncprov/syncrepl configurations on each
>> node), with all writes being directed to the active
>> master; the chaining just guarantees that any writes erroneously sent
>> to an inactive master would be forwarded on to the
>> active master.
> They handle this all themselves via SyncRepl when in Multimaster mode. As all writes
> have to go to all masters.

Correct, but if I allow the initial writes to be made on more than one node, I could end up with a situation where two
or more masters perform writes on the same entry or dependent entries, which could result in failed writes and/or
partitioning of the data between nodes.  So, I'll still need my external traffic shaper to direct the initial writes to
only one node to ensure consistency, but as you mentioned I do not need to refer the writes to the active master (which
could be done with carefully crafted ACLs, but would add unnecessary complication).

That being said, do I simply need to keep the MirrorMode directives and external traffic shaper, and eliminate any
chaining/referrals to achieve my desired setup?