備忘録です。
構成:
ldap1
<-- multi master replication --> ldap2
<-- ELB
<-- read only(ssl) -- ldap-proxy1
こんなかんじで。
replication設定
とりあえずreplication関連の設定を抜粋してとっておきます。
(本物はchefでやっててattributeが散在でかなりわかりにくいので脳内整理したかっただけ)
# Global section
serverID 1
# syncrepl directive
syncrepl rid=001
provider="ldap://ldap2.hoge.com"
bindmethod=simple
binddn="uid=Rep,ou=System,dc=hoge,dc=com"
credentials={SSHA}vt1Wi0m**********************
searchbase="dc=hoge,dc=com"
schemachecking=on
type=refreshAndPersist
retry="60 +"
mirrormode on
# Global section
serverID 2
# syncrepl directive
syncrepl rid=001
provider="ldap://ldap1.hoge.com"
bindmethod=simple
binddn="uid=Rep,ou=System,dc=hoge,dc=com"
credentials={SSHA}vt1Wi0m**********************
searchbase="dc=hoge,dc=com"
schemachecking=on
type=refreshAndPersist
retry="60 +"
mirrormode on
# Global section
serverID 3
# syncrepl directive
syncrepl rid=001
provider="ldaps://elb.public.address:10636"
bindmethod=simple
binddn="uid=Rep,ou=System,dc=hoge,dc=com"
credentials={SSHA}vt1Wi0m**********************
searchbase="dc=hoge,dc=com"
schemachecking=on
type=refreshOnly
retry="60 +"
tls_cacert=/etc/openldap/certs/hoge.cacrt
tls_cacertdir=/etc/openldap/certs
tls_reqcert=demand
interval=00:00:00:30
mirrormode off
ELB設定
ELBはServerCertとKeyをいれて
listnerはSSL:10636->TCP:389で
Route53にA(ALIAS)レコード登録しといて
ldap-proxy1のproviderにldaps::/アドレス:listner-portと指定しcacert認識できるようにする
とつながる。
たぶん。
コツなど
typeをrefreshOnlyにすると常時接続じゃなくて時々再接続にいきましてSSLとかELB越しな場合にいいかんじに。
(常時接続系はELBとは相性悪いようだった)
mirrormode offだとreadonlyになります。
chefだとproviderとかserveridはnodeのjsonで管理に。
複数AWSアカウントまたぐ感じだとclient側のproviderはdata_bagsに入れるといいかんじでした。
VPCpeeringすればSSLにしなくてよくてもっと簡単かと。
今回はVPCpeeringはAWSアカウント間はできるけどやりたくないという話でSSLすることに。
参考
第20回 OpenLDAPの冗長化対策【2】:そろそろLDAPにしてみないか?|gihyo.jp … 技術評論社
Amazon ELBをうまくつかうには、KeepAliveを有効にしよう。Timeoutは60秒よりだいぶ長くしよう。その背景。 | debiancdn
AWS Blackbelt 2015シリーズ Elastic Load Balancing
以上。