end0tknr's kipple - web写経開発

太宰府天満宮の狛犬って、妙にカワイイ

OpenLDAP同士でのマルチマスター なレプリケーション

┌──────────┐    ┌──────────┐
│OpenLDAP 1号        ├<─>┤OpenLDAP 2号        │
│(sso-1.end0tknr.com)│    │(sso-2.end0tknr.com)│
└──────────┘    └──────────┘

上のようにするには、以下の通り

1号機側

$ vi replica_ldap_1to2.ldif

# replace ServerID
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1

# mirror mode setup
dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001 provider=ldap://sso-2.end0tknr.com searchbase="dc=sso,dc=end0tknr,dc=com" schemachecking=on bindmethod=simple binddn="cn=Manager,dc=sso,dc=end0tknr,dc=com" credentials=ldapパスワード type=refreshAndPersist retry="60 +"
-
add: olcMirrorMode
olcMirrorMode: TRUE


$ ldapadd -x -w ldapパスワード -D cn=config -f replica_ldap_1.ldif.ldif

2号機側

$ vi replica_ldap_2to1.ldif

# replace ServerID
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 2

# mirror mode setup
dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001 provider=ldap://sso-1.end0tknr.com searchbase="dc=sso,dc=end0tknr,dc=com" schemachecking=on bindmethod=simple binddn="cn=Manager,dc=sso,dc=end0tknr,dc=com" credentials=ldapパスワード type=refreshAndPersist retry="60 +"
-
add: olcMirrorMode
olcMirrorMode: TRUE

$ ldapadd -x -w ldapパスワード -D cn=config -f replica_ldap_1to2.ldif

オマケ - 同期されるdata store作成

上記までにreplicaされているので、 以下は1 or 2号機のいずれかでのみ、実行すれば、OK

$ vi make_datastore.ldif

dn: dc=sso,dc=end0tknr,dc=com
objectclass: dcObject
objectclass: organization
o:  end0tknr
dc: sso

dn: cn=Manager,dc=sso,dc=end0tknr,dc=com
objectclass: organizationalRole
cn: Manager

dn: ou=People,dc=sso,dc=end0tknr,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Groups,dc=sso,dc=end0tknr,dc=com
objectClass: organizationalUnit
ou: Groups

dn: cn=sidNext,dc=sso,dc=end0tknr,dc=com
cn: sidNext
uidNumber: 1
objectClass: uidNext

dn: cn=defaultpolicy,dc=sso,dc=end0tknr,dc=com
objectClass: top
objectClass: device
objectClass: pwdPolicyChecker
objectClass: pwdPolicy
cn: defaultpolicy
pwdAttribute: userPassword

dn: cn=HelpDesk,dc=sso,dc=end0tknr,dc=com
objectclass: organizationalRole
cn: HelpDesk

dn: cn=SpcHelpDesk,cn=HelpDesk,dc=sso,dc=end0tknr,dc=com
objectClass: person
cn: SpcHelpDesk
sn: SpcHelpDesk
userPassword: {SSHA}<ないしょ>Zwf+WO1aXKzXTfrV

# ldapadd -x -w ldapパスワード -D cn=Manager,dc=sso,dc=end0tknr,dc=com \
    -f make_datastore.ldif