openLDAP高可用部署

yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools
关闭selinux
getenforce 
Disabled
​
#关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
​
#时间同步
ntpdate  -u cn.ntp.org.cn
​
#安装LDAP
yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools
​
#生成密码
slappasswd -s Ys4funPassword123.com
{SSHA}GDpheyNdNy0CGgriLJnPa9eB4y3oJpko
​
#修改域、管理员信息
vim /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif 
需要修改内容如下:
olcSuffix:dc=ys4fun,dc=com #修改dc名称
olcRootDN: cn=admin,dc=ys4fun,dc=com #修改cn名称、dc名称
olcRootPW: {SSHA}GDpheyNdNy0CGgriLJnPa9eB4y3oJpko #该行为新增行,指定管理员密码,该行为新增行(新增加一行)

image-20231016184758697

#修改监控文件信息
vim /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif
​
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth" read by dn.base="cn=admin,dc=ys4fun,dc=com" read by * none  #修改dn.base 部分,即dn.base="cn=admin,dc=ys4fun,dc=com"
#查看ldap版本号及检测
slapd -VV
slaptest -u
#设置DB
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
​
#修改ldap数据库配置目录归属用户
chown ldap:ldap -R /var/lib/ldap
​
#修改ldap数据库配置目录权限
chmod 700 -R /var/lib/ldap
​
#启动ldap
systemctl start  slapd
systemctl enable slapd
systemctl status slapd
​
#导入基本的数据库schema
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
​
​
#修改migrate_common.ph
vim /usr/share/migrationtools/migrate_common.ph
​
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "ys4fun.com";
​
# Default base 
$DEFAULT_BASE = "dc=ys4fun,dc=com";
$EXTENDED_SCHEMA = 1;
 systemctl restart slapd

配置自己的属性

cd /etc/openldap/slapd.d/cn=config/cn=schema
vim cn\=\{14\}ys4fun.ldif
​
#UTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 1cdd9020
dn: cn={14}ys4fun
objectClass: olcSchemaConfig
cn: {14}ys4fun
olcAttributeTypes: {0}( 1.3.6.1.4.1.4203.666.1.90 NAME 'userName' DESC 'logi
 n name' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.
 3.6.1.4.1.1466.115.121.1.15 )
olcAttributeTypes: {1}( 1.3.6.1.4.1.4203.666.1.91 NAME 'ysid' DESC 'yongshi 
 ID' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.
 1.4.1.1466.115.121.1.15 )
olcAttributeTypes: {2}( 1.3.6.1.4.1.4203.666.1.92 NAME 'phoneNumber' DESC 'p
 hone Number +86' EQUALITY telephoneNumberMatch SUBSTR telephoneNumberSubstr
 ingsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.50 )
olcAttributeTypes: {3}( 1.3.6.1.4.1.4203.666.1.93 NAME 'ysemail' DESC 'email
  address' EQUALITY caseIgnoreIA5Match SUBSTR caseIgnoreIA5SubstringsMatch S
 YNTAX 1.3.6.1.4.1.1466.115.121.1.26 )
olcAttributeTypes: {4}( 1.3.6.1.4.1.4203.666.1.94 NAME 'group' DESC 'group o
 f user' EQUALITY caseIgnoreMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )
olcAttributeTypes: {5}( 1.3.6.1.4.1.4203.666.1.95 NAME 'password' DESC 'user
 s login password' EQUALITY octetStringMatch SYNTAX 1.3.6.1.4.1.1466.115.121
 .1.40 )
olcObjectClasses: {0}( 2.16.840.1.113730.3.2.201 NAME 'ys4fun' DESC 'RFC2798
 : Internet Organizational Person' STRUCTURAL MUST ( userName $ displayName 
 $ userid $ telephoneNumber $ mail $ group $ userPassword ) )
structuralObjectClass: olcSchemaConfig
#下面的内容配置成自己的
entryUUID: 4341327a-005e-103e-94c0-51f179114b79
creatorsName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
createTimestamp: 20231016105528Z
entryCSN: 20231016105528.633267Z#000000#000#000000
modifiersName: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
modifyTimestamp: 20231016105528Z
​

ldap 双主高可用keepalived 部署

  • 添加syncprov module,两个节点上均执行

mkdir /data/
cd /data/
​
#创建 mod_syncprov.ldif 
# cat mod_syncprov.ldif 
# create new
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la
​
#执行添加操作
ldapadd -Y EXTERNAL -H ldapi:/// -f mod_syncprov.ldif
  • 创建syncprov.ldif,两个节点上均执行

    # cat syncprov.ldif 
    # create new
    dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
    objectClass: olcOverlayConfig
    objectClass: olcSyncProvConfig
    olcOverlay: syncprov
    olcSpCheckpoint:100 10
    olcSpSessionLog: 100
    ​
    #执行添加操作
    ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldif
    ​
    #####
    ​
    ## olcSpCheckpoint: 100 10:这个设置用于配置同步检查点(Checkpoint)的频率。它表示每100个操作(例如添加、删除或修改条目)将触发一次同步检查点,而检查点的写入间隔不超过10秒。同步检查点用于记录同步的状态,以便在发生故障时可以从上一个检查点恢复。
    ### olcSpSessionLog: 100:这个设置用于配置同步会话日志的大小。它表示同步会话日志将保留最近的100个条目。同步会话日志记录了同步操作的详细信息,可用于故障排除和审计。
    ​
  • 准备主主节点的配置文件

#ldap master01 10.65.10.57 配置文件
# cat master01.ldif 
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1
​
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://10.65.91.52:389/
  bindmethod=simple
  binddn="cn=admin,dc=moviebook,dc=cn"
  credentials=m2i3sc
  searchbase="dc=moviebook,dc=cn"
  scope=sub
  schemachecking=off
  attrs="*,+"
  type=refreshAndPersist
  retry="5 5 300 +"
  interval=interval=00:00:01:00
-
add: olcMirrorMode
olcMirrorMode: TRUE
-
add: olcDbIndex
olcDbIndex: entryUUID eq
-
add: olcDbIndex
olcDbIndex: entryCSN eq
​
#执行
ldapadd -Y EXTERNAL -H ldapi:/// -f master01.ldif -W
​
##################################################################
​
#ldap master02 10.65.91.52 配置文件
# cat master02.ldif 
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 2
​
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://10.65.10.57:389/
  bindmethod=simple
  binddn="cn=admin,dc=moviebook,dc=cn"
  credentials=m2i3sc
  searchbase="dc=moviebook,dc=cn"
  scope=sub
  schemachecking=off
  attrs="*,+"
  type=refreshAndPersist
  retry="5 5 300 +"
  interval=interval=00:00:01:00
-
add: olcMirrorMode
olcMirrorMode: TRUE
-
add: olcDbIndex
olcDbIndex: entryUUID eq
-
add: olcDbIndex
olcDbIndex: entryCSN eq
​
​
#执行
ldapadd -Y EXTERNAL -H ldapi:/// -f master02.ldif -W
​
################
参数说明:
​
     provider 为ldap master的地址 ;
     binddn:为域的基本信息,注这里一定要用管理员进行登录,否则同步不到用户的密码。
     credentials: ldap管理员的密码
     searchbase:选择要同步的独立域,根节点
     scope:设置所有的条目匹配
     schemachecking:设置同步更新时间检测
     type:同步模式为refreshAndPersist, refreshOnly 模式下后续操作由客户端轮询完成
     retry:同步更新重试次数和时间刚开始的5秒重试5次,以后每300秒重试一次
     attrs:复制全部属性
     interval 这里设置更新时间,这里为3秒一次,倒数第二个是分钟 以此类推。
#验证,登录ldap master01 创建一个用户
vim adduser.ldif
​
dn: userName=akc,ou=yongshi,dc=ys4fun,dc=com
objectClass: ys4fun
displayName: AI-akc
userName: akc
uid: 2105
group: yongshi
userPassword: {SSHA}Z/n5GQgh4jhFTh4hjAC6p7bl/ZiW0XU6
mail: akc@ys4fun.com
telephoneNumber: 18035159477
​
ldapadd -x -D "cn=admin,dc=ys4fun,dc=com"  -w Ys4funPassword123.com -f adduser.ldif 
#如何查看两个服务器是否都有这个用户
ldapsearch -x -b "dc=ys4fun,dc=com"  -D "cn=admin,dc=ys4fun,dc=com"  -w Ys4funPassword123.com uid=2105
​
#都有说明搭建成功

keepalived 部署

#安装 keepalived(两台机器均执行)
yum -y install keepalived
​
#10.66.10.28 keepalived配置
​
# cat /etc/keepalived/keepalived.conf 
global_defs {
     notification_email {
     xinliang_li@moviebook.cn
     }
     notification_email_from root@kubernetes1.yp14.cn
                 smtp_server exmail.qq.com
                 smtp_connect_timeout 30
                 router_id master01_11
}
​
vrrp_script check_svr {
    script "/root/keep/chk_server.sh"
    interval 20
    weight 5
 }
​
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 98
    priority 100
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    unicast_src_ip 10.66.10.28 label ens33:0
    unicast_peer {
        10.66.10.29
    }
​
    virtual_ipaddress {         ##主节点上的vip
        10.66.10.88/24 dev ens33 label ens33:0
        #vip2 dev eth0 label eth0:1    ##如果每个节点上有多个vip,一个一行填上,只填单个节点上的vip
    }
​
    track_script {
        check_svr
    }
}
​
​
​
#准备/root/keep/chk_server.sh文件
# cat /root/keep/chk_server.sh
#!/bin/bash
counter=$(ps -C slapd --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
    systemctl start slapd
    sleep 2
    counter=$(ps -C slapd --no-heading|wc -l)
    if [ "${counter}" = "0" ]; then
    systemctl stop keepalived
    fi
fi
​
​
#授权
chmod  755 /moviebook/scripts/chk_server.sh
​
#启动keepalived
systemctl start keepalived
systemctl enable keepalived
​
#10.66.10.29 keepalived配置
#  cat  /etc/keepalived/keepalived.conf 
global_defs {
     notification_email {
     xinliang_li@moviebook.cn
     }
     notification_email_from root@kubernetes1.yp14.cn
                 smtp_server exmail.qq.com
                 smtp_connect_timeout 30
                 router_id master01_12
}
​
vrrp_script check_svr {
    script "/root/keep/chk_server.sh"
    interval 20
    weight 5
 }
​
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 98
    priority 90
    advert_int 2
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    unicast_src_ip 10.66.10.29 label ens33:0
    unicast_peer {
        10.66.10.28
    }
​
    virtual_ipaddress {         ##主节点上的vip
        10.66.10.88/24 dev ens33 label ens33:0
        #vip2 dev eth0 label eth0:1    ##如果每个节点上有多个vip,一个一行填上,只填单个节点上的vip
    }
​
    track_script {
        check_svr
    }
}
​
​
#准备/root/keep/chk_server.sh文件
# cat /root/keep/chk_server.sh
#!/bin/bash
counter=$(ps -C slapd --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
    systemctl start slapd
    sleep 2
    counter=$(ps -C slapd --no-heading|wc -l)
    if [ "${counter}" = "0" ]; then
    systemctl stop keepalived
    fi
fi
​
​
#授权
chmod  755 /moviebook/scripts/chk_server.sh
​
#启动keepalived
systemctl start keepalived
systemctl enable keepalived
​
​
​
#验证高可用,对外ldap 将使用10.66.10.88:389 提供服务,测试停止10.66.10.28 ldap、keepalived,虚ip飘至  10.66.10.29,仍然正常使用,rancher 绑定ldap 虚IP使用服务
​
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
OpenLDAP 是一个开源的轻量级目录访问协议(LDAP)服务器,它可以在多个操作系统上运行,包括 Windows。要在 Windows 上实现 OpenLDAP可用性,可以考虑以下几个步骤: 1. 安装和配置 OpenLDAP:首先,需要在每个 Windows 服务器上安装 OpenLDAP。可以从 OpenLDAP 的官方网站下载最新版本的 Windows 安装程序,并按照安装向导进行安装。安装完成后,需要进行基本的配置,如设置域、创建管理员账户等。 2. 复制和同步数据:在可用性环境中,通常会有多个 OpenLDAP 服务器运行。为了确保数据的一致性,可以使用复制和同步机制来同步数据。OpenLDAP 提供了一些工具和配置选项,如 slurpd 和 syncrepl,可以用于实现数据的复制和同步。 3. 负载均衡:为了实现可用性和负载均衡,可以使用负载均衡器将客户端的请求分发到多个 OpenLDAP 服务器上。常见的负载均衡器包括 HAProxy、Nginx 等。负载均衡器可以根据负载情况动态地将请求发送到不同的服务器,从而提整体性能和可用性。 4. 故障转移和故障恢复:在可用性环境中,如果某个 OpenLDAP 服务器发生故障,需要有相应的机制来实现故障转移和故障恢复。可以使用一些自动化工具和技术,如故障检测、自动切换等,来实现故障转移和故障恢复。 需要注意的是,OpenLDAP 在 Windows 上的可用性实现可能会有一些特定的配置和限制。建议参考 OpenLDAP 的官方文档和相关资源,以了解更多详细信息和最佳实践。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

博学咪AIGC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值