数据迁移
原始数据备份命令如下:
ldapsearch -LLL -x -h 218.97.51.117 -p 389 -D "cn=Admin,ou=Administrator,dc=cpccd,dc=com" -w Cpcnet\!\@\#\$\%\^ -b "dc=cpccd,dc=com" > openldap-backupfull.ldif
环境准备:
ubuntu安装docker:
更新ubuntu
sudo apt update sudo apt upgrade sudo apt full-upgrade
添加 Docker 库
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release
添加 Docker 的官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加 Docker 官方库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
更新 Ubuntu 源列表
sudo apt update
安装docker
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
检查可以安装的docker版本
apt-cache madison docker-ce
安装最新的docker-ce
apt install docker-ce=5:24.0.1-1~ubuntu.22.04~jammy docker-ce-cli=5:24.0.1-1~ubuntu.22.04~jammy containerd.io
启动docker
sudo systemctl start docker
docker服务在每次启动时自动启动
sudo systemctl enable docker
查看docker版本
sudo docker version
docker compose部署openldap
docker-compose.yaml文件路径
/usr/local/docker/openldap2.0/docker-compose.yaml
docker-compose.yaml具体内容如下:
version: "3.7" services: openldap-bitnami: user: root image: bitnami/openldap:2.5.13 container_name: openldap1 volumes: - ./openldap-bitnami-data:/bitnami/openldap environment: - LDAP_ORGANISATION=CPC CD - LDAP_ROOT=dc=cpccd,dc=com - LDAP_ADMIN_USERNAME=admin - LDAP_ADMIN_PASSWORD=Cpcnet!@#$$%^ - LDAP_ULIMIT_MOFILES=107374182400 - LDAP_CONFIG_ADMIN_ENABLED=yes - LDAP_CONFIG_ADMIN_USERNAME=admin - LDAP_CONFIG_ADMIN_PASSWORD=admin - LDAP_ALLOW_ANON_BINDING=no - LDAP_USER_DC=people ports: - 1389:1389 - 1636:1636 networks: - openldap-bitnami networks: openldap-bitnami: name: openldap-bitnami
运行命令:
Docker-compose up –d
验证ldap容器是否创建成功命令如下:
ldapsearch -x -H ldap://localhost:389 -b 'dc=cpccd,dc=com' -D 'cn=admin,dc=cpccd,dc=com' -w 'Cpcnet!@#$%^'
为每一个openldap服务添加同步用的用户
需要使用管理账号登录,分别在所有节点导入以下配置。
syncrepl_user.ldif
version: 1 dn: uid=rpuser,ou=people,dc=demo,dc=com objectClass: top objectClass: person objectClass: organizationalPerson objectClass: simpleSecurityObject objectClass: shadowAccount objectClass: inetOrgPerson cn: rpuser sn: rpuser uid: rpuser userPassword: {SSHA}oBWZtlM7e3CbUagQeUPqkVeFUmg2+4liXvRfVQ==
用户dn:rpuser,ou=people,dc=demo,dc=com"
密码:rpuser
ldapmodify -a -x -H ldap://localhost:389 -D 'cn=admin,dc=cpccd,dc=com' -w 'Cpcnet!@#$%^' -f syncrepl_user.ldif
各节点同步文件
需要使用配置管理账号登录,在所有同步节点导入以下配置。
syncrepl_config.ldif
#enable syncprov module dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulePath: /opt/bitnami/openldap/lib/openldap olcModuleLoad: syncprov.so #enable syncprov for every folder dn: olcOverlay=syncprov,olcDatabase={2}mdb,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov olcSpSessionlog: 100 #unlimit fetch size dn: cn=config changetype: modify replace: olcSizeLimit olcSizeLimit: 10000 #set server id dn: cn=config changetype: modify replace: olcServerID olcServerID: 1 #syncrepl directive dn: olcDatabase={2}mdb,cn=config changetype: modify replace: olcSyncRepl olcSyncRepl: rid=001 provider=ldap://需要同步的ip:389/ bindmethod=simple binddn="uid=rpuser,ou=people,dc=cpccd,dc=com" credentials=rpuser searchbase="dc=cpccd,dc=com" scope=sub schemachecking=on type=refreshAndPersist retry="5 +" interval=00:00:30:00 - add: olcMirrorMode olcMirrorMode: TRUE olcSyncRepl: rid=002 provider=ldap://需要同步的ip:389/ bindmethod=simple binddn="uid=rpuser,ou=people,dc=cpccd,dc=com" credentials=rpuser searchbase="dc=cpccd,dc=com" scope=sub schemachecking=on type=refreshAndPersist retry="5 +" interval=00:00:30:00 - add: olcMirrorMode olcMirrorMode: TRUE olcSyncRepl: rid=003 provider=ldap://需要同步的ip:389/ bindmethod=simple binddn="uid=rpuser,ou=people,dc=cpccd,dc=com" credentials=rpuser searchbase="dc=cpccd,dc=com" scope=sub schemachecking=on type=refreshAndPersist retry="5 +" interval=00:00:30:00 - add: olcMirrorMode olcMirrorMode: TRUE
该脚本设置了搜索的大小限制为10000,从dc=cpccd,dc=com搜索并同步数据,每30秒同步一次,失败会在5秒后重试。请根据实际的环境和项目要求进行修改。
ldapadd -Wx -D "cn=admin,cn=config" -H ldap://localhost:389 -f syncrepl_config.ldif
修改用户权限
需要使用配置管理账号登录,在所有节点分别导入以下配置。
db_config.ldif
dn: cn=config changetype: modify replace: olcSizeLimit olcSizeLimit: 10000 #db max size dn: olcDatabase={2}mdb,cn=config changeType: modify add: olcDbMaxSize olcDbMaxSize: 1000000000
执行以下命令:
ldapmodify -Wx -D "cn=admin,cn=config" -H ldap://localhost:389 -f db_config.ldif
选择任意一台ldap服务器进行数据导入:
ldapmodify -a -x -H ldap://localhost:389 -D 'cn=admin,dc=cpccd,dc=com' -w Cpcnet\!\@\#\$\%\^ -f openldap-backupfull.ldif -v -c
查看导入结果:
ldapsearch -x -H ldap://localhost:389 -b 'dc=cpccd,dc=com' -D 'cn=admin,ou=Administrator,dc=cpccd,dc=com' -w 'Cpcnet!@#$%^' 'mail=demo01@citictel-cpc.com'
以上命令都是根据博主自己openldap情况编写。请根据情况修改!
本文作者:Allen Tang
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!