HAproxy + Keepalive实现LDAP代理服务

因为公司的各种高自研发的系统非常多,这些系统又全部是在使用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和主机名的修改我也不讲了,这个还是挺容易查到的。

现在开始进行系统的配置:

1 安装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

配置文件如下

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               #监听的LDAP服务器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       #监控页面端口mode httpdefault_backend stats_backend
backend stats_backendmode httpstats enablestats uri /stats        #监控页面URLstats auth admin:admin       #监控页面管理员账号和密码

主机和备机配置一样。

配置HAProxy日志:

vi /etc/rsyslog.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

重启服务后,整个代理环境就算配置完成了。

转载于:https://blog.51cto.com/mingwang/1353615

HAproxy + Keepalive实现LDAP代理服务相关推荐

  1. 基于haproxy+keepalive+varnish实现lnmp企业级架构

    一.实验准备 服务器A:haproxy服务器(主) 服务器B:haproxy服务器(备) 服务器C:LNMP服务器.varnish服务器 服务器D:LNMP服务器.varnish服务器 二.实验要求 ...

  2. Haproxy+keepalived高可用代理服务

    一.haproxy和nginx的区别 Haproxy的工作模式:代理模式为http和tcp做代理,可以为多种服务做代理,它是一个专门的代理服务器,自己不能成为web服务. nginx的工作模式:web ...

  3. K8S keepalive+haproxy 实现集群高可用

    一.keepalibe +haproxy 原理 软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProx ...

  4. hbase1.1.1 连接集群_除了HAProxy,RabbitMQ集群还可以这样用

    全网最简单的安装手册 // 安装erlang wget https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm. ...

  5. TiDB 中的高可用实践

    作者:边城元元 原文来源: https://tidb.net/blog/d05a479d TiDB 中的高可用实践 一.Haproxy+keepalive 方式的TiDB高可用实践 1.1 拓扑图 i ...

  6. linux系统下对网站实施负载均衡+高可用集群需要考虑的几点

    随着linux系统的成熟和广泛普及,linux运维技术越来越受到企业的关注和追捧.在一些中小企业,尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案. 那么如何实 ...

  7. 二进制搭建kubernetes多master集群【三、配置k8s master及高可用】

    前面两篇文章已经配置好了etcd和flannel的网络,现在开始配置k8s master集群. etcd集群配置参考:二进制搭建kubernetes多master集群[一.使用TLS证书搭建etcd集 ...

  8. 如何版本化你的API?--转

    原文地址:http://www.infoq.com/cn/news/2017/09/How-versioning-API 如何版本化API需要考虑各种实际业务场景,但是一个完备的API应该是: 和客户 ...

  9. 中间件-RabbitMQ学习笔记

    目录 RabbitMQ概述 RabbitMQ安装Docker版 RabbitMQ安装集群版 集群搭建步骤 搭建镜像队列 Haproxy+Keepalive 实现高可用负载均衡 RabbitMQ消息确认 ...

最新文章

  1. Java Garbage Collection
  2. java.lang.IllegalStateException: Error starting child错误的产生与解决
  3. 最全高考分数线出炉!!查了分后,这届学生为了过线真是太拼了.......
  4. IntelliJ IDEA for Mac 如何配置项目模块的源代码根目录_源码文件的根目录
  5. 3-cd 命令总结
  6. Python 数据结构与算法——tree(树)
  7. 城市定位html,城市定位页.html
  8. 2022年6月25日PMP考试通关宝典-5
  9. Java核心技术 卷I 基础知识 学习笔记(1)
  10. 安全龙网络安全攻防实验1.2 全新功能正式上线
  11. 广州智能服务机器人展览会 | 2016人工智能展
  12. 林轩田《机器学习基石》资源汇总(视频+学习笔记+书)
  13. 互联网摸鱼日报(2023-03-17)
  14. html svg波浪,CSS3+SVG 实现波浪滚动效果
  15. 服务器ftp文件不能共享文件夹权限,ftp服务器共享文件夹权限设置
  16. python人像录制加声音_简单易用的录制屏幕与摄像头工具
  17. violate原理和用法
  18. python 证书-python+证书
  19. getPhoneNumber 响应 416
  20. 直播预告| 手机银行智能人机验证方案直播,开课啦~

热门文章

  1. python学习实例(3)
  2. 记一次海外大型SLG游戏服务器进程被OOM的修复经历
  3. C++ 数据结构 线性链表
  4. 科目三大路考8个驾驶技巧
  5. C11标准委员会成员解读C语言新标准
  6. 10个管理工作时间的小技巧
  7. 多线程原理分析面试题理解
  8. FFMPEG设置 cbr讨论
  9. 从零开始玩转 logback、完整配置详解
  10. PHP 安装xdebug