Репликация LDAP (облегченного протокола доступа к каталогам) — важнейший аспект обеспечения согласованности и доступности данных в службах каталогов. В этой статье мы рассмотрим различные методы репликации LDAP, а также приведем примеры кода, которые помогут вам эффективно реализовать репликацию в вашей среде.
- Репликация Master-Slave:
Репликация Master-Slave — это широко используемый метод, при котором один сервер LDAP (главный) хранит достоверную копию каталога, а один или несколько серверов LDAP (ведомые) реплицируют данные с главного.
Пример кода (OpenLDAP):
В следующем примере демонстрируется настройка главного и подчиненного серверов с использованием OpenLDAP:
Конфигурация главного сервера (slapd.conf):
database bdb
suffix "dc=mydomain,dc=com"
rootdn "cn=admin,dc=mydomain,dc=com"
rootpw {SSHA}hashed_password
...
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
Конфигурация подчиненного сервера (slapd.conf):
database bdb
suffix "dc=mydomain,dc=com"
rootdn "cn=admin,dc=mydomain,dc=com"
rootpw {SSHA}hashed_password
...
syncrepl rid=1
provider=ldap://master.example.com
type=refreshAndPersist
interval=00:00:01:00
searchbase="dc=mydomain,dc=com"
filter="(objectClass=*)"
scope=sub
schemachecking=off
bindmethod=simple
binddn="cn=admin,dc=mydomain,dc=com"
credentials="admin_password"
- Мульти-главная репликация:
Репликация с несколькими хозяевами позволяет нескольким серверам LDAP выступать в качестве главных, то есть все они содержат достоверные копии каталога. Изменения, внесенные на любом сервере, распространяются на другие серверы.
Пример кода (OpenLDAP):
Вот пример конфигурации для репликации с несколькими хозяевами с использованием OpenLDAP:
Конфигурация сервера 1 (slapd.conf):
database bdb
suffix "dc=mydomain,dc=com"
rootdn "cn=admin,dc=mydomain,dc=com"
rootpw {SSHA}hashed_password
...
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
...
overlay accesslog
logdb "cn=logdb"
Конфигурация сервера 2 (slapd.conf):
database bdb
suffix "dc=mydomain,dc=com"
rootdn "cn=admin,dc=mydomain,dc=com"
rootpw {SSHA}hashed_password
...
syncrepl rid=001
provider=ldap://server1.example.com
type=refreshAndPersist
interval=00:00:01:00
searchbase="dc=mydomain,dc=com"
filter="(objectClass=*)"
scope=sub
schemachecking=off
bindmethod=simple
binddn="cn=admin,dc=mydomain,dc=com"
credentials="admin_password"
...
overlay accesslog
logdb "cn=logdb"
- Репликация с дельта-синхронизацией:
Репликация дельта-синхронизации предполагает синхронизацию только изменений, внесенных с момента последней синхронизации. Этот метод снижает использование полосы пропускания сети и затраты на репликацию.
Пример кода (Active Directory):
Вот пример сценария PowerShell, демонстрирующего репликацию с дельта-синхронизацией для Active Directory:
# Connect to the Active Directory domain
$domain = "example.com"
$root = [ADSI]"LDAP://$domain"
# Specify the replication filter
$filter = "(&(objectCategory=*)(uSNChanged>=600000))"
# Perform the delta synchronization
$replicationScope = "Base"
$replicationOptions = [System.DirectoryServices.Protocols.SyncReplicationOptions]::IncrementalValues
$replicationCookie = $null
$pageSize = 1000
do {
$request = new-object System.DirectoryServices.Protocols.SearchRequest -ArgumentList $root, $filter, $replicationScope
$request.PageSize = $pageSize
$request.Controls.Add((new-object System.DirectoryServices.Protocols.DsmlDirectoryIdentifier).GetDirectoryControl($replicationOptions, $replicationCookie))
$response = $root.SendRequest($request)
# Process the response and update the replication cookie
# ...
$replicationCookie = $response.Controls[0].GetValue()
} while ($response.Controls[0].IsPresent)
Репликация LDAP жизненно важна для поддержания согласованности и доступности данных в службах каталогов. В этой статье мы рассмотрели три популярных метода репликации: Master-Slave, Multi-Master и Delta-Synchronization. Предоставленные примеры кода могут служить отправной точкой для реализации репликации LDAP в различных средах, таких как OpenLDAP и Active Directory.
Не забудьте скорректировать примеры кода в зависимости от конкретной среды вашего сервера LDAP. Репликация LDAP гарантирует, что изменения, внесенные в каталог, распространяются на все реплики, обеспечивая надежный доступ к актуальной информации.