本文主要講述在docker環境下如何進行 OpenLDAP 多主復制,至於 OpenLDAP 原理可以先參考這篇文章了解:https://cloud.tencent.com/developer/article/1490857
首先先拉取docker鏡像
服務端鏡像
docker pull osixia/openldap
客戶端鏡像
docker pull ldapaccountmanager/lam
啟動兩個服務端容器
LDAP_ORGANISATION LDAP組織名,可以自定義設置,如果不設置默認為 Example Inc ,一般定義公司名
LDAP_DOMAIN LDAP域名,可以自定義設置,如果不設置默認為 example.org,一般定義公司域名
LDAP_REPLICATION=true 開啟多主復制
hostname 名稱可以自定義,但是必須和LDAP_REPLICATION_HOSTS 其中的值一致
LDAP_REPLICATION_HOSTS 為同步的服務器列表,必須和hostname對應上,並且保證兩台機器網絡互相訪問正常
LDAP_ADMIN_PASSWORD 可以自定義設置,如果不設置默認為admin
容器1:
docker run --name ldap1 --restart=always --hostname ldap1.example.com --env LDAP_ORGANISATION="example" --env LDAP_DOMAIN="example.com" --env LDAP_REPLICATION_HOSTS="#PYTHON2BASH:['ldap://ldap1.example.com','ldap://ldap2.example.com']" --env LDAP_REPLICATION=true --env LDAP_ADMIN_PASSWORD="12345" -p 389:389 --detach osixia/openldap:latest
容器2:
docker run --name ldap2 --restart=always --hostname ldap2.example.com --env LDAP_ORGANISATION="example" --env LDAP_DOMAIN="example.com" --env LDAP_REPLICATION_HOSTS="#PYTHON2BASH:['ldap://ldap1.example.com','ldap://ldap2.example.com']" --env LDAP_REPLICATION=true --env LDAP_ADMIN_PASSWORD="12345" -p 389:389 --detach osixia/openldap:latest
分別獲取 ldap1 和 ldap2 ip (如果是同一台機器部署的內網可以這樣獲取ip,如果不是同一台機器部署的網絡,則不需要獲取內網ip,直接配置對應的公網ip即可)
docker inspect -f "{{ .NetworkSettings.IPAddress }}" ldap1
docker inspect -f "{{ .NetworkSettings.IPAddress }}" ldap2
設置對應容器host,保證兩個容器之間網絡互通
docker exec ldap1 bash -c "echo【設置ldap2的ip】ldap2.example.com >> /etc/hosts"
docker exec ldap2 bash -c "echo【設置ldap1的ip】ldap1.example.com >> /etc/hosts"
啟動客戶端服務(4389端口可以隨意配置)
docker run -d --restart=always --name ldap-account-manager -p 4389:80 --detach ldapaccountmanager/lam:latest
客戶端訪問 (對應客戶端服務的ip+端口)
登錄前請進行相關設置,請參考以下設置規則
(1)先進行登錄前的設置,點擊右上角 LAM configuration 菜單進行設置
(2)點擊 Edit server profiles 菜單,進行相關設置, 默認密碼為 lam
(3)設置對應服務端IP和LDAP域名(IP為容器對應內網IP,或者公網IP,驗證數據同步時,設置不同容器IP連接即可,LDAP域名要和容器運行時候設置 LDAP_DOMAIN 一致,格式為 dc=example,dc=com),和客戶端管理員用戶(默認admin)
(4)默認初始化兩個組(這個可以不設置,注意格式為:ou=people,dc=example,dc=com ,ou可以自定義,dc要和容器運行時候設置 LDAP_DOMAIN 一致)
(5)設置完成后,進入首頁進行登錄,密碼為容器運行時候設置 LDAP_ADMIN_PASSWORD 密碼
(6)登錄容器 ldap1 添加一個用戶,觀察 ldap2 是否能正常同步,如下圖測試可以正常同步數據
添加相關用戶測試可參考下面的文章進行配置
參考文章:
1.https://github.com/osixia/docker-openldap 官方文檔
2.https://www.58jb.com/html/ldap-run-on-centos7.html ldap容器配置
3.https://www.58jb.com/html/use-ldap-account-manager.html 在ldap中添加多個不同的組和用戶