Chapter 3. Configuring multi-supplier replication using the command line
In a multi-supplier replication environment, two or more writable suppliers replicate data with each other. For example, set up multi-supplier replication to provide a fail-over environment and distribute the load over multiple servers. Clients can then perform read and write operations on any host that is a read-write replica.
This section assumes that you have an existing Directory Server instance running on a host named supplier1.example.com
. The procedures describe how to add another read-write replica named supplier2.example.com
to the topology, and how to configure multi-supplier replication for the dc=example,dc=com
suffix.
3.1. Preparing the new supplier using the command line Copy linkLink copied to clipboard!
To prepare the supplier2.example.com
host, enable replication. This process:
- Configures the role of this server in the replication topology
- Defines the suffix that is replicated
- Creates the replication manager account the supplier uses to connect to this host
Perform this procedure on the supplier that you want to add to the replication topology.
Prerequisites
- You installed the Directory Server instance. For details, see Setting up a new instance on the command line using a .inf file.
-
The database for the
dc=example,dc=com
suffix exists.
Procedure
Enable replication for the
dc=example,dc=com
suffix:dsconf <supplier2_instance_name> replication enable --suffix "dc=example,dc=com" --role "supplier" --replica-id 1 --bind-dn "cn=replication manager,cn=config" --bind-passwd "password"
# dsconf <supplier2_instance_name> replication enable --suffix "dc=example,dc=com" --role "supplier" --replica-id 1 --bind-dn "cn=replication manager,cn=config" --bind-passwd "password"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow This command configures the
supplier2.example.com
host as a supplier for thedc=example,dc=com
suffix, and sets the replica ID of this entry to1
. Additionally, the command creates thecn=replication manager,cn=config
user with the specified password and allows this account to replicate changes for the suffix to this host.ImportantThe replica ID must be a unique integer between
1
and65534
for a suffix across all suppliers in the topology.
Verification
Display the replication configuration:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow These parameters indicate:
-
nsDS5ReplicaBindDN
specifies the replication manager account. -
nsDS5ReplicaRoot
sets the suffix that is replicated. -
nsDS5ReplicaType
set to3
defines that this host is a supplier.
-
3.2. Configuring the existing server as a supplier to the new server using the command line Copy linkLink copied to clipboard!
To prepare the existing server supplier1.example.com
as a supplier, you need to:
- Enable replication for the suffix.
- Create a replication agreement to the new supplier.
- Initialize the new supplier.
Perform this procedure on the existing supplier in the replication topology.
Prerequisites
-
You enabled replication for the
dc=example,dc=com
suffix on the supplier to join.
Procedure
Enable replication for the
dc=example,dc=com
suffix:dsconf <supplier1_instance_name> replication enable --suffix "dc=example,dc=com" --role "supplier" --replica-id 2 --bind-dn "cn=replication manager,cn=config" --bind-passwd "password"
# dsconf <supplier1_instance_name> replication enable --suffix "dc=example,dc=com" --role "supplier" --replica-id 2 --bind-dn "cn=replication manager,cn=config" --bind-passwd "password"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow This command configures the
supplier1.example.com
host as a supplier for thedc=example,dc=com
suffix, and sets the replica ID of this entry to2
. Additionally, the command creates thecn=replication manager,cn=config
user with the specified password and allows this account to replicate changes for the suffix to this host.ImportantThe replica ID must be a unique integer between
1
and65534
for a suffix across all suppliers in the topology.Add the replication agreement and initialize the new server:
dsconf <supplier1_instance_name> repl-agmt create --suffix "dc=example,dc=com" --host "supplier2.example.com" --port 389 --conn-protocol LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method SIMPLE --init example-agreement-supplier1-to-supplier2
# dsconf <supplier1_instance_name> repl-agmt create --suffix "dc=example,dc=com" --host "supplier2.example.com" --port 389 --conn-protocol LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method SIMPLE --init example-agreement-supplier1-to-supplier2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow This command creates a replication agreement named
example-agreement-supplier1-to-supplier2
. The replication agreement defines settings, such as the new supplier’s host name, protocol, and authentication information that the supplier uses when connecting and replicating data to the new supplier.After the agreement was created, Directory Server initializes
supplier2.example.com
. Depending on the amount of data to replicate, initialization can be time-consuming.
Verification
Display the replication configuration:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow These parameters indicate:
-
nsDS5ReplicaBindDN
specifies the replication manager account. -
nsDS5ReplicaRoot
sets the suffix that is replicated. -
nsDS5ReplicaType
set to3
defines that this host is a supplier.
-
Verify whether the initialization was successful:
dsconf <supplier1_instance_name> repl-agmt init-status --suffix "dc=example,dc=com" example-agreement-supplier1-to-supplier2
# dsconf <supplier1_instance_name> repl-agmt init-status --suffix "dc=example,dc=com" example-agreement-supplier1-to-supplier2 Agreement successfully initialized.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Display the replication status:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify the
Replication Status
andLast Update Status
fields.
Troubleshooting
By default, the replication idle timeout for all agreements on a server is 1 hour. If the initialization of large databases fails due to timeouts, set the
nsslapd-idletimeout
parameter to a higher value. For example, to set the parameter to7200
(2 hours), enter:dsconf <supplier1_instance_name> config replace nsslapd-idletimeout=7200
# dsconf <supplier1_instance_name> config replace nsslapd-idletimeout=7200
Copy to Clipboard Copied! Toggle word wrap Toggle overflow To set an unlimited period, set
nsslapd-idletimeout
to0
.
3.3. Configuring the new server as a supplier to the existing server using the command line Copy linkLink copied to clipboard!
To prepare the new server supplier2.example.com
as a supplier, use either of the following methods:
- Enable replication for the suffix.
- Create a replication agreement to the existing server.
Do not initialize the existing supplier from the new server. Otherwise, the empty database from the new server overrides the database on the existing supplier.
Apply the following procedure on the existing supplier:
- Create a replication agreement to the new server.
- Initialize the new server.
Prerequisites
-
You enabled replication for the
dc=example,dc=com
suffix on the new server. -
You enabled replication for the
dc=example,dc=com
suffix on the existing server. - The new server to join is successfully initialized.
Procedure
Add the replication agreement to the existing instance:
dsconf <supplier2_instance_name> repl-agmt create --suffix "dc=example,dc=com" --host "supplier1.example.com" --port 389 --conn-protocol LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method SIMPLE example-agreement-supplier2-to-supplier1
# dsconf <supplier2_instance_name> repl-agmt create --suffix "dc=example,dc=com" --host "supplier1.example.com" --port 389 --conn-protocol LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method SIMPLE example-agreement-supplier2-to-supplier1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Add the replication agreement to the new instance by using
--init
option:dsconf <supplier1_instance_name> repl-agmt create --suffix "dc=example,dc=com" --host "supplier2.example.com" --port 389 --conn-protocol LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method SIMPLE --init example-agreement-supplier1-to-supplier2
# dsconf <supplier1_instance_name> repl-agmt create --suffix "dc=example,dc=com" --host "supplier2.example.com" --port 389 --conn-protocol LDAP --bind-dn "cn=replication manager,cn=config" --bind-passwd "password" --bind-method SIMPLE --init example-agreement-supplier1-to-supplier2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Verification
Display the agreement status:
dsconf <supplier2_instance_name> repl-agmt init-status --suffix "dc=example,dc=com" example-agreement-supplier2-to-supplier1
# dsconf <supplier2_instance_name> repl-agmt init-status --suffix "dc=example,dc=com" example-agreement-supplier2-to-supplier1 Agreement successfully initialized.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Display the replication status:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Verify the
Replication Status
andLast Update Status
fields.
Troubleshooting
By default, the replication idle timeout for all agreements on a server is 1 hour. If the initialization of large databases fails due to timeouts, set the
nsslapd-idletimeout
parameter to a higher value. For example, to set the parameter to7200
(2 hours), enter:dsconf <supplier2_instance_name> config replace nsslapd-idletimeout=7200
# dsconf <supplier2_instance_name> config replace nsslapd-idletimeout=7200
Copy to Clipboard Copied! Toggle word wrap Toggle overflow To set an unlimited period, set
nsslapd-idletimeout
to0
.