当前位置:网站首页>HAproxy + Keepalive实现LDAP代理服务
HAproxy + Keepalive实现LDAP代理服务
2022-06-29 20:50:00 【星哥玩云】
因为公司的各种高自研发的系统非常多,这些系统又全部是在使用LDAP做认证,目前我们有几台DC控制器来分担这些ldap请求,用户通过访问ldap.xxxx.com这个域名来连接ldap服务器,我们通过DNS轮询的方式指向不同的DC服务器。
这样出现一个问题就是:当某一台DC挂掉的时候,会导致部分用户或者系统的认证失败,为了达到高可用性,我们更改了环境拓扑,用四台linux服务器充当代理服务器,代理所有ldap请求。
结构如下图:
简单解释一下,4台代理服务器两两一组,都是一台主机,一台热备,分配两个VIP,用户通过DNS查询ldap这个a记录会被轮询到这两个虚IP的代理服务器上,代理服务器后端通过HAproxy检测DC主机端口状态,平均分配用户请求到这些主机上,如果用DC主机故障,就不分配请求。两台一组的代理服务器通过keepalived检测健康状态,如果一台故障,自动将vip飘到备份主机上。
我不得不说,因为我在接到这个任务之前,完全是个linux小白,我连linux怎么做系统都不会。。所以如果我的这篇文章有写的不对的地方,请多多指出。
好吧,虽然我不会装linux系统,但是公司技术部的大大和安全组的大大们研发了一套linux的pxe自助系统,我只需要PXE启动后,选择我要装linux RHEL 6.3版本即可,所以我这里没法介绍怎么做系统。
同样,IP和主机名的修改我也不讲了,这个还是挺容易查到的。
现在开始进行系统的配置:
安装keepalived和HAProxy需要的组件
好吧,我可以用yum命令。。又省事了 yum install gcc kernel-headers kernel-devel yum install keepalived
2 配置keepalived: Keepalived配置文件的默认位置为: vi /etc/keepalived/keepalived.conf
建议复制一份原始的做备份 修改配置文件为:
vrrp_scriptchk_http_port { script"/etc/keepalived/check_haproxy.sh" #检测haproxy健康状态的脚本 interval 2 weight 2 } vrrp_instanceVI_1 { interface eth0 state MASTER #备机配置为BACKUP priority 101 #备机配置为100 virtual_router_id 51 #keepalived组表示,同一组中的主机该值要一样 smtp_alert virtual_ipaddress { x.x.x.2 #虚拟IP } track_script { chk_http_port } }
创建上面用到的脚本文件,意思是当检测到haproxy服务没有启动时启动它,如果启动失败则停掉本机的keepalived服务,这样VIP会切换到备机上:
#vi /etc/keepalived/check_haproxy.sh #!/bin/bash A=`ps -C haproxy --no-header |wc -l` if [ $A -eq 0 ];then /root/haproxy-1.4.23/haproxy -f /root/haproxy-1.4.23/haproxy.cfg sleep 3 if [ `ps -C haproxy --no-header |wc -l` -eq 0 ];then /etc/init.d/keepalived stop fi fi #chmod 755 /etc/keepalived/check_haproxy.sh
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=linux26
4 配置HAProxy
创建配置文件: vi /root/haproxy-1.4.23/haproxy.cfg
配置文件如下 global log /dev/log local0 info #日志 log /dev/log local0 notice #日志 maxconn 4096 user root group root daemon defaults log global contimeout 5000 clitimeout 50000 srvtimeout 50000 option forwardfor option redispatch stats refresh 30 retries 3 frontend ldap_tcp bind *:389 default_backend pool_ldap log global option forwardfor backend pool_ldap balance roundrobin mode tcp server DC03 10.1.1.3:389 check inter 5000 #监听的LDAP服务器 server DC04 10.1.1.4:389 check inter 5000 server DC05 10.1.1.5:389 check inter 5000 server DC06 10.1.1.6:389 check inter 5000 frontend vs_stats :8081 #监控页面端口 mode http default_backend stats_backend backend stats_backend mode http stats enable stats uri /stats #监控页面URL stats auth admin:admin #监控页面管理员账号和密码
主机和备机配置一样。
配置HAProxy日志: vi /etc/syslog.conf
修改syslog内容,添加一行: local0.* /var/log/haproxy.log
重启rsyslog服务 service rsyslog restart
可以在/var/log下看到haproxy.log了
5 启用服务 全部配置完毕后,使用下面命令启动服务: service keepalived start
keepalived会自动把haproxy启动 chkconfig keepalived on
让keepalived开机自启动。
6 启用LDAPS代理 如果同时还要添加636的SSL ldap认证,还需要为DC安装证书 因为我们有多个DC服务器,所以需呀一张类似Exchange的SAN证书,即多域名证书。可以通过Exchange服务器上的证书申请功能申请,也可以直接像CA申请,这里讲解直接像CA申请,因为比较复杂:
登录CA服务器,打开PowerShell,输入: certutil-setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2 net stop certsvc net start certsvc 该命令允许CA接受SAN证书的申请。
在申请证书网站的界面的Attribute属性中,输入: san:dns=dc03.xxx.com&dns=ldap.xxx.com.com&dns=dc04.xxx.com&dns=dc05.xxx.com&dns=dc06.xxx.com 提交证书申请后,就会得到一张多域名证书。将其安装在各DC上。
在HAProxy脚本加入下面内容: 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服务器 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
重启服务后,整个代理环境就算配置完成了。
边栏推荐
- 导航 实验【微机原理】【实验】
- jfinal中如何使用过滤器监控Druid监听SQL执行?
- Cmake development - Multi Directory Project
- 「运维有小邓」Active Directory 密码过期通知功能
- [a must for reptiles - > scrapy framework from black iron to king] first chapter - detailed explanation of 10000 character blog posts (recommended Collection)
- 导航【微机原理】
- Coreldraw2022 new version v24.1.0.360 update
- 0/1 score planning topic
- 双目立体视觉摄像头的标定、矫正、世界坐标计算(opencv)
- 输入年份与月份,求该月共有多少天
猜你喜欢

CorelDRAW2022全新版V24.1.0.360更新

Application of VoIP push in overseas audio and video services

Explain PBR texture maps

Detailed description of gaussdb (DWS) complex and diverse resource load management methods

Mapbox GL development tutorial (12): loading surface layer data

fastadmin后台设置单选按钮

Three.js开发:粗线的画法

STL教程6-deque、stack、queue、list容器
![Navigation [microcomputer principle]](/img/79/8311a409113331e72f650a83351b46.png)
Navigation [microcomputer principle]
![[notes] take notes again -- learn by doing Verilog HDL – 014](/img/92/ba794253f1588ff9ad87d2571a453e.png)
[notes] take notes again -- learn by doing Verilog HDL – 014
随机推荐
分析影响导电滑环传输信号的因素
What problems should be avoided when using the points mall games for marketing?
「运维有小邓」日志分析工具使用越来越频繁的原因
. NETCORE unified authentication authorization learning - run (1)
18. `bs object Node name next_ sibling` previous_ Sibling get sibling node
"Operation and maintenance department has Xiao Deng" to review and analyze file and folder access rights
CAD assistant - 3D model format conversion tool
Sentinel's quick start takes you through flow control in three minutes
LSF-bsub命令
CorelDRAW2022全新版V24.1.0.360更新
Spark存储体系底层架构剖析-Spark商业环境实战
「运维有小邓」Active Directory 密码过期通知功能
导航 习题【微机原理】【习题】
Three. JS development: drawing of thick lines
Information system project manager -- Chapter VII examination questions of project cost management over the years
Advances in computational imaging
Exit operation in project
「运维有小邓」实时监控用户登录操作
High energy live broadcast, a gathering of celebrities! We invite you to explore bizdevops.
「运维有小邓」AD域委派