HAproxy + Keepalive实现LDAP代理服务
HAproxy + Keepalive實(shí)現(xiàn)LDAP代理服務(wù)
因?yàn)楣镜母鞣N高自研發(fā)的系統(tǒng)非常多,這些系統(tǒng)又全部是在使用LDAP做認(rèn)證,目前我們有幾臺(tái)DC控制器來(lái)分擔(dān)這些ldap請(qǐng)求,用戶通過(guò)訪問(wèn)ldap.xxxx.com這個(gè)域名來(lái)連接ldap服務(wù)器,我們通過(guò)DNS輪詢的方式指向不同的DC服務(wù)器。
這樣出現(xiàn)一個(gè)問(wèn)題就是:當(dāng)某一臺(tái)DC掛掉的時(shí)候,會(huì)導(dǎo)致部分用戶或者系統(tǒng)的認(rèn)證失敗,為了達(dá)到高可用性,我們更改了環(huán)境拓?fù)?#xff0c;用四臺(tái)linux服務(wù)器充當(dāng)代理服務(wù)器,代理所有l(wèi)dap請(qǐng)求。
結(jié)構(gòu)如下圖:
簡(jiǎn)單解釋一下,4臺(tái)代理服務(wù)器兩兩一組,都是一臺(tái)主機(jī),一臺(tái)熱備,分配兩個(gè)VIP,用戶通過(guò)DNS查詢ldap這個(gè)a記錄會(huì)被輪詢到這兩個(gè)虛IP的代理服務(wù)器上,代理服務(wù)器后端通過(guò)HAproxy檢測(cè)DC主機(jī)端口狀態(tài),平均分配用戶請(qǐng)求到這些主機(jī)上,如果用DC主機(jī)故障,就不分配請(qǐng)求。兩臺(tái)一組的代理服務(wù)器通過(guò)keepalived檢測(cè)健康狀態(tài),如果一臺(tái)故障,自動(dòng)將vip飄到備份主機(jī)上。
我不得不說(shuō),因?yàn)槲以诮拥竭@個(gè)任務(wù)之前,完全是個(gè)linux小白,我連linux怎么做系統(tǒng)都不會(huì)。。所以如果我的這篇文章有寫(xiě)的不對(duì)的地方,請(qǐng)多多指出。
好吧,雖然我不會(huì)裝linux系統(tǒng),但是公司技術(shù)部的大大和安全組的大大們研發(fā)了一套linux的pxe自助系統(tǒng),我只需要PXE啟動(dòng)后,選擇我要裝linux RHEL 6.3版本即可,所以我這里沒(méi)法介紹怎么做系統(tǒng)。
同樣,IP和主機(jī)名的修改我也不講了,這個(gè)還是挺容易查到的。
現(xiàn)在開(kāi)始進(jìn)行系統(tǒng)的配置:
1 安裝keepalived和HAProxy需要的組件
好吧,我可以用yum命令。。又省事了
yum install gcc kernel-headers kernel-devel yum install keepalived2 配置keepalived:
Keepalived配置文件的默認(rèn)位置為:
vi /etc/keepalived/keepalived.conf建議復(fù)制一份原始的做備份
修改配置文件為:
創(chuàng)建上面用到的腳本文件,意思是當(dāng)檢測(cè)到haproxy服務(wù)沒(méi)有啟動(dòng)時(shí)啟動(dòng)它,如果啟動(dòng)失敗則停掉本機(jī)的keepalived服務(wù),這樣VIP會(huì)切換到備機(jī)上:
3 安裝HAProxy
wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.23.tar.gz tar–zvxf haproxy-1.4.23.tar.gz cd haproxy-1.4.23 make TARGET=linux264 配置HAProxy
創(chuàng)建配置文件:
vi /root/haproxy-1.4.23/haproxy.cfg配置文件如下
globallog /dev/log local0 info #日志log /dev/log local0 notice #日志maxconn 4096user rootgroup rootdaemon defaultslog globalcontimeout 5000clitimeout 50000srvtimeout 50000option forwardforoption redispatchstats refresh 30retries 3 frontend ldap_tcpbind *:389default_backend pool_ldaplog globaloption forwardfor backend pool_ldapbalance roundrobinmode tcpserver DC03 10.1.1.3:389 check inter 5000 #監(jiān)聽(tīng)的LDAP服務(wù)器server DC04 10.1.1.4:389 check inter 5000server DC05 10.1.1.5:389 check inter 5000server DC06 10.1.1.6:389 check inter 5000 frontend vs_stats :8081 #監(jiān)控頁(yè)面端口mode httpdefault_backend stats_backend backend stats_backendmode httpstats enablestats uri /stats #監(jiān)控頁(yè)面URLstats auth admin:admin #監(jiān)控頁(yè)面管理員賬號(hào)和密碼主機(jī)和備機(jī)配置一樣。
配置HAProxy日志:
vi /etc/rsyslog.conf修改syslog內(nèi)容,添加一行:
重啟rsyslog服務(wù)
service rsyslog restart可以在/var/log下看到haproxy.log了
5 啟用服務(wù)
全部配置完畢后,使用下面命令啟動(dòng)服務(wù):
service keepalived startkeepalived會(huì)自動(dòng)把haproxy啟動(dòng)
chkconfig keepalived on讓keepalived開(kāi)機(jī)自啟動(dòng)。
6 啟用LDAPS代理
如果同時(shí)還要添加636的SSL ldap認(rèn)證,還需要為DC安裝證書(shū)
因?yàn)槲覀冇卸鄠€(gè)DC服務(wù)器,所以需呀一張類(lèi)似Exchange的SAN證書(shū),即多域名證書(shū)。可以通過(guò)Exchange服務(wù)器上的證書(shū)申請(qǐng)功能申請(qǐng),也可以直接像CA申請(qǐng),這里講解直接像CA申請(qǐng),因?yàn)楸容^復(fù)雜:
登錄CA服務(wù)器,打開(kāi)PowerShell,輸入:
certutil-setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
net stop certsvc
net start certsvc
該命令允許CA接受SAN證書(shū)的申請(qǐng)。
在申請(qǐng)證書(shū)網(wǎng)站的界面的Attribute屬性中,輸入:
san:dns=dc03.xxx.com&dns=ldap.xxx.com.com&dns=dc04.xxx.com&dns=dc05.xxx.com&dns=dc06.xxx.com
提交證書(shū)申請(qǐng)后,就會(huì)得到一張多域名證書(shū)。將其安裝在各DC上。
在HAProxy腳本加入下面內(nèi)容:
frontendldap_ssl bind *:636 default_backend pool_ssl backendpool_ssl balance roundrobin mode tcp server DC03 10.1.1.3:636 check inter 5000#LDAP服務(wù)器 server DC04 10.1.1.4:636 check inter 5000 server DC05 10.1.1.5:636 check inter 5000 server DC06 10.1.1.6:636 check inter 5000重啟服務(wù)后,整個(gè)代理環(huán)境就算配置完成了。
轉(zhuǎn)載于:https://blog.51cto.com/mingwang/1353615
總結(jié)
以上是生活随笔為你收集整理的HAproxy + Keepalive实现LDAP代理服务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: URL 学习总结
- 下一篇: bzoj 1084 DP