2023年6月21日发(作者:)
Ldap双主模式+keepalived实现ldap⾼可⽤⼀.安装OpenLDAP yum install openldap openldap-clients openldap-servers安装完直接启动```systemctl start slapd```设置管理员密码 ```slappasswd -h {SSHA}
```然后会让你输⼊⼀个明⽂密码,返回给你⼀个加密的密码,记住这个返回的密码使⽤ldapsearch命令查询管理员的dn:ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config "olcRootDN=cn=Manager,dc=my-domain,dc=com" dn olcRootDN olcRootPW这⾥返回的dn是olcDatabase={2}hdb,cn=config,密码等信息也都⼀并返回。这⾥有⽤的是dn和密码的加密⽅式,⽐如这⾥是SSHA,dn是后⾯修改的Entry DN,⽽知道密码的加密⽅式就可以使⽤该加密⽅式⽣成新密码。使⽤ldapmodify修改条⽬vim
#这是第1步获取的管理员dndn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace: olcSuffix#你想要改成的域名的后缀olcSuffix: dc=xinniu,dc=com#olcSuffix这⼏⾏⼀定要加,否则修改之后会出错,后⾯重启openldap都会失败dn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace: olcRootDN#你想要改成的域名olcRootDN: cn=admin,dc=xinniu,dc=comdn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace: olcRootPW#这⾥就是刚才保存下来的那个加密后的密码olcRootPW: {SSHA}uYnICxla0NrUC5b/ha4i1JeOTCoUchV+如图:使⽤下⾯的命令来修改管理员条⽬:ldapmodify -Y EXTERNAL -H ldapi:/// -f
如果出现:modifying entry "olcDatabase={2}bdb,cn=config"导⼊基本数据结构我们需要向 LDAP 中导⼊⼀些基本的 Schema。这些 Schema ⽂件位于 /etc/openldap/schema/ ⽬录中,schema控制着条⽬拥有哪些对象类和属性ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/开启ldap⽇志mkdir -p /var/log/slapdchown ldap:ldap /var/log/slapd/touch /var/log/slapd/wn ldap . /var/log/slapd/o "local4.* /var/log/slapd/" >> /etc/到此就设定好了管理员的密码。可以⽤客户端去管理openldap了打算使⽤phpldapadmin来管理openldap,这个⼯具使⽤的⼈较多,⽹上⽂档多,出现问题容易解决。⼆.安装phpldapadmin(ldap管理⼯具)⾸先安装Apache和PHP:yum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml然后安装phpldapadmin: yum -y install phpldapadminhttpd与phpldapadmin进⾏集成:修改配置⽂件:[root@localhost ~]# vim /etc/phpldapadmin/#397⾏取消注释,398⾏添加注释 $servers->setValue('login','attr','dn'); // $servers->setValue('login','attr','uid');这⾥需要修改,如果不修改,phpldapadmin会去⽤uid去搜索条⽬,不会⽤dn去搜索,导致报密码错误。[root@localhost ~]# phpldapadmin的ip过滤规则默认是拒绝所有ip访问,先去修改⼀下规则,我们才可以访问vim /etc/httpd/conf.d/##这是Apache2.2和以前的修改⽅法// 修改配置把下⾯的Deny from all 改为Allow from all##这是apache2.4和以后的修改⽅法#允许172.16.10.16访问Require ip 172.16.10.16#允许172.16这个⽹段访问Require ip 172.16.0.0/16#允许所有ip访问Require all granted我们可以根据⾃⼰需要修改来修改完之后启动: systemctl restart httpd界⾯:登陆⽤户名,默认是 cn=Manager,dc=my-domain,dc=com(这个也可以改的,仿照修改密码的步骤)密码就输⼊刚开始设置的密码登陆进去后,我的管理界⾯报这个信息:This base cannot be created with PLA显⽰结果如下:经过查询,原因是根结点需要初始化后才能使⽤,最终处理如下:1、创建⼀个⽂件,为创建初始化根节点做准备⼯作,如下所⽰:dn: dc=xinniu,dc=com#域名的后缀o: ldapobjectclass: dcObjectobjectclass: organization2、执⾏ldapadd -f -x -D cn=admin,dc=xinniu,dc=com -W 输⼊之前配置OpenLDAP的密码后,即可完成创建LDAP根节点,如下图所⽰:完成以上操作后,再回到phpldapadmin页⾯,可以看到,已经正常出现了根节点,并可以创建相关OU、Group、Account等对象,如下图所⽰:到这⾥就搭建好了⼀台openldap+phpldapadmin的服务器了,在另外⼀台也按照此步骤操作搭建好另⼀台。三.配置双主复制功能,在主1和主2上执⾏下⾯的步骤ldap双主复制功能的实现依赖于syncprov模块,这个模块位于/usr/lib64/openldap⽬录下_[root@server1] vim mod_# create newdn: cn=module,cn=configobjectClass: olcModuleListcn: moduleolcModulePath: /usr/lib64/openldapolcModuleLoad: 导⼊配置[root@server1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f mod_[root@server1] vim # create newdn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=configobjectClass: olcOverlayConfigobjectClass: olcSyncProvConfigolcOverlay: syncprovolcSpSessionLog: 100导⼊配置[root@server1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f 在主1和主2上执⾏下⾯的步骤,只需要替换olcServerID和provider的值[root@server1] ~/ldif$ vim # create newdn: cn=configchangetype: modifyreplace: olcServerID# specify uniq ID number on each serverolcServerID: 1# 唯⼀值,主2上替换为2dn: olcDatabase={2}hdb,cn=configchangetype: modifyadd: olcSyncReplolcSyncRepl: rid=001 provider=ldap://basic-server-2:389/ ##此处为主2服务器地址,主2此处相应地上替换为主1服务器地址 bindmethod=simple binddn="cn=admin,dc=xinniu,dc=com" credentials=bigdata123! #管理员的明⽂密码 searchbase="dc=xinniu,dc=com" scope=sub schemachecking=on type=refreshAndPersist retry="30 5 300 3" interval=00:00:05:00-add: olcMirrorModeolcMirrorMode: TRUEdn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=configchangetype: addobjectClass: olcOverlayConfigobjectClass: olcSyncProvConfigolcOverlay: syncprov导⼊配置root@SERVER ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f 四.验证这部完成之后,我们在master1的管理界⾯上创建⼀个条⽬,再打开master2的管理界⾯,如果可以看到我们刚才创建的条⽬,那么就说明双主已经配置成功了。五.Keepalived搭建1.安装#两个节点都要操作yum -y install keepalived很简单,⼀条命令就安装好了2.配置#两个节点都要操作cp /etc/keepalived/ /etc/keepalived/ /etc/keepalived/#node1的配置:! Configuration File for keepalivedglobal_defs { notification_email { xhh@ } notification_email_from root@ smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id ldap_A #节点标识}vrrp_script chk { script "/etc/keepalived/script/" interval 3 weight -5}vrrp_instance VI_1 { state MASTER interface eth0 #使⽤的⽹卡为eth0 virtual_router_id 150 #虚拟路由标识,两个节点必须⼀致 priority 100 #优先级,两个节点的优先级⾼者为master nopreempt #不抢占 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.18.22.88 #虚拟ip } notify_master "/etc/keepalived/script/to_" notify_backup "/etc/keepalived/script/to_" notify_stop "/etc/keepalived/script/to_" track_script { chk }}#node2的配置! Configuration File for keepalivedglobal_defs { notification_email { xhh@ } notification_email_from root@ smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id ldap_B #节点标识}vrrp_script chk { script "/etc/keepalived/script/ >> /tmp/log/ 2>&1" interval 3 weight -5}vrrp_instance VI_1 { state BACKUP interface eth0 #使⽤的⽹卡为eth0 virtual_router_id 150 #虚拟路由标识,两个节点必须⼀致 priority 98 #优先级 nopreempt #不抢占 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.18.22.88 } notify_master "/etc/keepalived/script/to_" notify_backup "/etc/keepalived/script/to_" notify_stop "/etc/keepalived/script/to_" track_script { chk }}另外⼏个脚本的内容(两个节点⼀致):#!/bin/bashcounter=$(ps -C slapd --no-heading|wc -l)if [ "${counter}" = "0" ]; then sudo systemctl start slapd sleep 2 counter=$(ps -C slapd --no-heading|wc -l) if [ "${counter}" = "0" ]; then sudo systemctl stop keepalived fifi/etc/keepalived/script/to_:#!/bin/bashsudo systemctl start slapd;sh /etc/keepalived/script/send_ "Ldap主备切换" "$(hostname)切换为Active"/etc/keepalived/script/to_:#!/bin/bashsudo systemctl start slapd;sh /etc/keepalived/script/send_ "Ldap主备切换" "$(hostname)切换为Backup"/etc/keepalived/script/to_:#!/bin/bashsh /etc/keepalived/script/send_ "Ldap主备切换" "$(hostname)切换为Stop"/etc/keepalived/script/send_:#!/bin/bashSUBJECT=$1CONTENT=$2echo "${CONTENT}" | mail -s "${SUBJECT}" dongguashaorou@有⼀点需要注意,以上这⼏个脚本,需要⼀个⽤户来执⾏:keepalived_script,所以需要创建这个⽤户,还要把这个⽤户加到/etc/sudoers中,否则脚本中systemctl启动slapd服务,压根没有权限,这个点⽹上的⽂档都没有提到,调试了⼀段时间才发现这个问题。其他的,如果发现脚本配置以后没有⽣效,那么1.检查⽂件的格式,看是否出错,2.脚本的输出可以重定向到⽂件,然后可以发现问题。前两天搭建好了,今天开启iptables防⽕墙后就有问题了:1.两个节点的虚拟ip不能飘移了,发⽣了脑裂,两边都有虚拟ip2.其他节点可以从真实ip访问服务,但是⽆法从虚拟ip访问服务折腾⼀番后发现要在2台真实节点的iptables配置(/etc/sysconfig/iptables)上⾯分别加上下⾯2⾏-A INPUT -d 172.18.22.88(虚拟ip) -j ACCEPT-A INPUT -p vrrp -j ACCEPT之后重启iptables,再重启keepalived即可访问服务最后,后⾯发现阿⾥云的机器上⾯⽤这个keepalive真的不太好使,很多节点上去telnet虚拟ip的端⼝会出现不通的情况,就不打算⽤了,ldap的访问量很⼩,是个⽐较稳定的服务,本来为了以防万⼀,再引⼊新的问题还不如不⽤,最终还是⽤了haproxy去做了个loadbalance,⽐这个还简单多了。不过实际上keepalived和haproxy并不是⼀个⽤途的东西,只是我觉得服务也没那么容易挂,最可靠的⽅案其实是,haproxy和keepalived都⽤上,⽤keepalived去监控haproxy。附上⼀下haproxy的部分配置listen ldap :25001mode tcpoption tcplogbalance leastconnserver ldap1 172.18.20.27:389 checkserver ldap2 172.18.20.35:389 check
2023年6月21日发(作者:)
Ldap双主模式+keepalived实现ldap⾼可⽤⼀.安装OpenLDAP yum install openldap openldap-clients openldap-servers安装完直接启动```systemctl start slapd```设置管理员密码 ```slappasswd -h {SSHA}
```然后会让你输⼊⼀个明⽂密码,返回给你⼀个加密的密码,记住这个返回的密码使⽤ldapsearch命令查询管理员的dn:ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config "olcRootDN=cn=Manager,dc=my-domain,dc=com" dn olcRootDN olcRootPW这⾥返回的dn是olcDatabase={2}hdb,cn=config,密码等信息也都⼀并返回。这⾥有⽤的是dn和密码的加密⽅式,⽐如这⾥是SSHA,dn是后⾯修改的Entry DN,⽽知道密码的加密⽅式就可以使⽤该加密⽅式⽣成新密码。使⽤ldapmodify修改条⽬vim
#这是第1步获取的管理员dndn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace: olcSuffix#你想要改成的域名的后缀olcSuffix: dc=xinniu,dc=com#olcSuffix这⼏⾏⼀定要加,否则修改之后会出错,后⾯重启openldap都会失败dn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace: olcRootDN#你想要改成的域名olcRootDN: cn=admin,dc=xinniu,dc=comdn: olcDatabase={2}hdb,cn=configchangetype: modifyreplace: olcRootPW#这⾥就是刚才保存下来的那个加密后的密码olcRootPW: {SSHA}uYnICxla0NrUC5b/ha4i1JeOTCoUchV+如图:使⽤下⾯的命令来修改管理员条⽬:ldapmodify -Y EXTERNAL -H ldapi:/// -f
如果出现:modifying entry "olcDatabase={2}bdb,cn=config"导⼊基本数据结构我们需要向 LDAP 中导⼊⼀些基本的 Schema。这些 Schema ⽂件位于 /etc/openldap/schema/ ⽬录中,schema控制着条⽬拥有哪些对象类和属性ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/apadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/开启ldap⽇志mkdir -p /var/log/slapdchown ldap:ldap /var/log/slapd/touch /var/log/slapd/wn ldap . /var/log/slapd/o "local4.* /var/log/slapd/" >> /etc/到此就设定好了管理员的密码。可以⽤客户端去管理openldap了打算使⽤phpldapadmin来管理openldap,这个⼯具使⽤的⼈较多,⽹上⽂档多,出现问题容易解决。⼆.安装phpldapadmin(ldap管理⼯具)⾸先安装Apache和PHP:yum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml然后安装phpldapadmin: yum -y install phpldapadminhttpd与phpldapadmin进⾏集成:修改配置⽂件:[root@localhost ~]# vim /etc/phpldapadmin/#397⾏取消注释,398⾏添加注释 $servers->setValue('login','attr','dn'); // $servers->setValue('login','attr','uid');这⾥需要修改,如果不修改,phpldapadmin会去⽤uid去搜索条⽬,不会⽤dn去搜索,导致报密码错误。[root@localhost ~]# phpldapadmin的ip过滤规则默认是拒绝所有ip访问,先去修改⼀下规则,我们才可以访问vim /etc/httpd/conf.d/##这是Apache2.2和以前的修改⽅法// 修改配置把下⾯的Deny from all 改为Allow from all##这是apache2.4和以后的修改⽅法#允许172.16.10.16访问Require ip 172.16.10.16#允许172.16这个⽹段访问Require ip 172.16.0.0/16#允许所有ip访问Require all granted我们可以根据⾃⼰需要修改来修改完之后启动: systemctl restart httpd界⾯:登陆⽤户名,默认是 cn=Manager,dc=my-domain,dc=com(这个也可以改的,仿照修改密码的步骤)密码就输⼊刚开始设置的密码登陆进去后,我的管理界⾯报这个信息:This base cannot be created with PLA显⽰结果如下:经过查询,原因是根结点需要初始化后才能使⽤,最终处理如下:1、创建⼀个⽂件,为创建初始化根节点做准备⼯作,如下所⽰:dn: dc=xinniu,dc=com#域名的后缀o: ldapobjectclass: dcObjectobjectclass: organization2、执⾏ldapadd -f -x -D cn=admin,dc=xinniu,dc=com -W 输⼊之前配置OpenLDAP的密码后,即可完成创建LDAP根节点,如下图所⽰:完成以上操作后,再回到phpldapadmin页⾯,可以看到,已经正常出现了根节点,并可以创建相关OU、Group、Account等对象,如下图所⽰:到这⾥就搭建好了⼀台openldap+phpldapadmin的服务器了,在另外⼀台也按照此步骤操作搭建好另⼀台。三.配置双主复制功能,在主1和主2上执⾏下⾯的步骤ldap双主复制功能的实现依赖于syncprov模块,这个模块位于/usr/lib64/openldap⽬录下_[root@server1] vim mod_# create newdn: cn=module,cn=configobjectClass: olcModuleListcn: moduleolcModulePath: /usr/lib64/openldapolcModuleLoad: 导⼊配置[root@server1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f mod_[root@server1] vim # create newdn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=configobjectClass: olcOverlayConfigobjectClass: olcSyncProvConfigolcOverlay: syncprovolcSpSessionLog: 100导⼊配置[root@server1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f 在主1和主2上执⾏下⾯的步骤,只需要替换olcServerID和provider的值[root@server1] ~/ldif$ vim # create newdn: cn=configchangetype: modifyreplace: olcServerID# specify uniq ID number on each serverolcServerID: 1# 唯⼀值,主2上替换为2dn: olcDatabase={2}hdb,cn=configchangetype: modifyadd: olcSyncReplolcSyncRepl: rid=001 provider=ldap://basic-server-2:389/ ##此处为主2服务器地址,主2此处相应地上替换为主1服务器地址 bindmethod=simple binddn="cn=admin,dc=xinniu,dc=com" credentials=bigdata123! #管理员的明⽂密码 searchbase="dc=xinniu,dc=com" scope=sub schemachecking=on type=refreshAndPersist retry="30 5 300 3" interval=00:00:05:00-add: olcMirrorModeolcMirrorMode: TRUEdn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=configchangetype: addobjectClass: olcOverlayConfigobjectClass: olcSyncProvConfigolcOverlay: syncprov导⼊配置root@SERVER ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f 四.验证这部完成之后,我们在master1的管理界⾯上创建⼀个条⽬,再打开master2的管理界⾯,如果可以看到我们刚才创建的条⽬,那么就说明双主已经配置成功了。五.Keepalived搭建1.安装#两个节点都要操作yum -y install keepalived很简单,⼀条命令就安装好了2.配置#两个节点都要操作cp /etc/keepalived/ /etc/keepalived/ /etc/keepalived/#node1的配置:! Configuration File for keepalivedglobal_defs { notification_email { xhh@ } notification_email_from root@ smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id ldap_A #节点标识}vrrp_script chk { script "/etc/keepalived/script/" interval 3 weight -5}vrrp_instance VI_1 { state MASTER interface eth0 #使⽤的⽹卡为eth0 virtual_router_id 150 #虚拟路由标识,两个节点必须⼀致 priority 100 #优先级,两个节点的优先级⾼者为master nopreempt #不抢占 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.18.22.88 #虚拟ip } notify_master "/etc/keepalived/script/to_" notify_backup "/etc/keepalived/script/to_" notify_stop "/etc/keepalived/script/to_" track_script { chk }}#node2的配置! Configuration File for keepalivedglobal_defs { notification_email { xhh@ } notification_email_from root@ smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id ldap_B #节点标识}vrrp_script chk { script "/etc/keepalived/script/ >> /tmp/log/ 2>&1" interval 3 weight -5}vrrp_instance VI_1 { state BACKUP interface eth0 #使⽤的⽹卡为eth0 virtual_router_id 150 #虚拟路由标识,两个节点必须⼀致 priority 98 #优先级 nopreempt #不抢占 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 172.18.22.88 } notify_master "/etc/keepalived/script/to_" notify_backup "/etc/keepalived/script/to_" notify_stop "/etc/keepalived/script/to_" track_script { chk }}另外⼏个脚本的内容(两个节点⼀致):#!/bin/bashcounter=$(ps -C slapd --no-heading|wc -l)if [ "${counter}" = "0" ]; then sudo systemctl start slapd sleep 2 counter=$(ps -C slapd --no-heading|wc -l) if [ "${counter}" = "0" ]; then sudo systemctl stop keepalived fifi/etc/keepalived/script/to_:#!/bin/bashsudo systemctl start slapd;sh /etc/keepalived/script/send_ "Ldap主备切换" "$(hostname)切换为Active"/etc/keepalived/script/to_:#!/bin/bashsudo systemctl start slapd;sh /etc/keepalived/script/send_ "Ldap主备切换" "$(hostname)切换为Backup"/etc/keepalived/script/to_:#!/bin/bashsh /etc/keepalived/script/send_ "Ldap主备切换" "$(hostname)切换为Stop"/etc/keepalived/script/send_:#!/bin/bashSUBJECT=$1CONTENT=$2echo "${CONTENT}" | mail -s "${SUBJECT}" dongguashaorou@有⼀点需要注意,以上这⼏个脚本,需要⼀个⽤户来执⾏:keepalived_script,所以需要创建这个⽤户,还要把这个⽤户加到/etc/sudoers中,否则脚本中systemctl启动slapd服务,压根没有权限,这个点⽹上的⽂档都没有提到,调试了⼀段时间才发现这个问题。其他的,如果发现脚本配置以后没有⽣效,那么1.检查⽂件的格式,看是否出错,2.脚本的输出可以重定向到⽂件,然后可以发现问题。前两天搭建好了,今天开启iptables防⽕墙后就有问题了:1.两个节点的虚拟ip不能飘移了,发⽣了脑裂,两边都有虚拟ip2.其他节点可以从真实ip访问服务,但是⽆法从虚拟ip访问服务折腾⼀番后发现要在2台真实节点的iptables配置(/etc/sysconfig/iptables)上⾯分别加上下⾯2⾏-A INPUT -d 172.18.22.88(虚拟ip) -j ACCEPT-A INPUT -p vrrp -j ACCEPT之后重启iptables,再重启keepalived即可访问服务最后,后⾯发现阿⾥云的机器上⾯⽤这个keepalive真的不太好使,很多节点上去telnet虚拟ip的端⼝会出现不通的情况,就不打算⽤了,ldap的访问量很⼩,是个⽐较稳定的服务,本来为了以防万⼀,再引⼊新的问题还不如不⽤,最终还是⽤了haproxy去做了个loadbalance,⽐这个还简单多了。不过实际上keepalived和haproxy并不是⼀个⽤途的东西,只是我觉得服务也没那么容易挂,最可靠的⽅案其实是,haproxy和keepalived都⽤上,⽤keepalived去监控haproxy。附上⼀下haproxy的部分配置listen ldap :25001mode tcpoption tcplogbalance leastconnserver ldap1 172.18.20.27:389 checkserver ldap2 172.18.20.35:389 check
发布评论