如何让HAProxy检查后端服务器的状态?

3

HAProxy 能够完美地负载均衡 MySQL/TOMCAT/Cassandra/LDAP/WEB服务器等。主要问题在于如何确保后端MySQL/TOMCAT/Cassandra等服务器正在运行并将请求转发给它们(我的意思不仅是建立到mysql的3306端口、到tomcat的8080端口、到LDAP的389端口的连接,我指的是更“完整”的操作,对后端服务器执行一些小操作)。

我的用例:
=============

有许多后端tomcat都在HAproxy后面工作,所有tomcat都通过HAproxy提供服务,突然间其中一个tomcat崩溃了(内存不足)。显然,对于Haproxy来说,该tomcat服务器是可以使用的,但是由于tomcat运行时出现OOM,导致请求路由到该tomcat时失败。

是否有可能使用小型shell脚本让Haproxy检查后端服务器的状态?这个脚本的基本功能是对tomcat执行基本操作,如果操作成功,则返回http状态200,如果存在任何错误(例如tomcat不可用),则返回http状态500。

除了对server-ip:port进行连接检查之外,还有其他配置HAproxy以实现“完整”状态检查的方法吗?

1个回答

0

我使用的解决方案可以在这个链接上找到:http://sysbible.org/2008/12/04/having-haproxy-check-mysql-status-through-a-xinetd-script/

这个解决方案有点长,不太适合直接粘贴在这里,但简单概括一下,它是一个小的Shell脚本,在本地MySQL服务器上执行一个简单的查询,并在成功/失败时输出HTTP 200或500响应。有多种方式可以运行这个脚本,但为了简单起见,链接的解决方案直接将Shell脚本注册为xinetd服务。显然,这个端口理想情况下只对HAProxy服务器开放,绝对不对外开放!

HAProxy内置的HTTP监控功能用于监控Web后端,它可以使用这个服务的输出来确定服务器是否真正可用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接