如何配置HAProxy运行状况检查

时间:2020-01-09 10:39:00  来源:igfitidea点击:

说明

确保后端服务器HAProxy将用户的请求转发到正常状态非常重要。如何进行HAProxy健康状况检查?我们如何检查健康状况取决于后端托管的服务类型。 Web应用程序的检查需要不同于数据库服务器。

TCP检查

标准和最基本的检查是TCP检查。它仅发送一个简单的数据包,并等待来自目标服务器的回复。这验证了被检查主机上的网络接口是否在线。它不会做的是告诉后端服务器托管的服务是否正常。

网络服务器

以下是简单的Web服务器运行状况检查的示例。它由两个为用户提供Web服务的服务器组成。

listen myapp2 0.0.0.0:8080

    mode http

    server node1 10.0.0.1:80 check fall 3 rise 2

    server node2 10.0.0.2:80 check fall 3 rise 2
检查
这将指示HAProxy对节点执行运行状况检查
指示HAProxy在连续发生3次运行状况检查失败时使节点脱机。该值可以设置为任何数字
如果由于运行状况检查失败而将节点标记为脱机,则指示HAProxy不要将节点标记为联机,除非它连续两次成功执行运行状况检查。该值可以设置为任何数字

网络服务

并非每个平衡的服务都是Web应用程序。我们还可以平衡网络服务,例如电子邮件服务器或者缓存服务器(Redis,Memcached)。
以下是简单的Web服务器运行状况检查的示例。它由两个为用户提供Web服务的服务器组成。

邮件服务器运行状况检查

listen smtpcluster1 0.0.0.0:8080
    mode tcp
    server smtp1 10.0.0.1:25 check fall 3 rise 2
    server smtp2 10.0.0.2:25 check fall 3 rise 2

记忆快取丛集

listen memcachedcluster 0.0.0.0:8080
    mode tcp
    server memcached1 10.0.0.1:11211 check fall 3 rise 2
    server memcached2 10.0.0.2:11211 check fall 3 rise 2

Redis集群

listen rediscluster 0.0.0.0:8080
    mode tcp
    server redis1 10.0.0.1:6379 check fall 3 rise 2
    server redis2 10.0.0.2:6379 check fall 3 rise 2

HTTP检查

TCP检查仅验证可以建立网络连接,而我们要验证特定网站URL是否正常时,可以使用HTTP检查。如果返回状态200或者300,则一切正常。超出此限制的任何内容(例如500状态响应)都将被视为状况不佳,并且HAProxy会将后端服务器标记为脱机。

示例1:此检查将使用HTTP 1.0版针对我们域的索引页使用HEAD请求。

listen myapp2 0.0.0.0:8080
    mode http
    option httpchk HEAD / HTTP/1.0
    server node1 10.0.0.1:80 check fall 3 rise 2
    server node2 10.0.0.2:80 check fall 3 rise 2

示例2:此检查将针对使用HTTP 1.1版的特定URL使用HEAD请求。它还设置域名,这是使用虚拟主机的后端所必需的。

listen myapp2 0.0.0.0:8080
    mode http
    option httpchk HEAD /health_check.php HTTP/1.1\r\nHost:\ theitroad.com
    server node1 10.0.0.1:80 check fall 3 rise 2
    server node2 10.0.0.2:80 check fall 3 rise 2

MYSQL检查

准备MySQL

HAProxy需要访问MySQL服务器才能执行其检查。我们将需要在MySQL服务器上为HAProxy创建两个帐户。一个将是基本用户,第二个将是具有管理权限的用户。

  • 登录到MySQL服务器。
  • 使用具有管理权限的帐户登录MySQL。
mysql -u root -p
  • 创建用户HAProxy将用于执行检查。
INSERT INTO mysql.user (Host,User) values ('10.0.0.10','haproxy_check');
  • 刷新特权以应用新特权。
FLUSH PRIVILEGES;
  • 退出MySQL控制台。

在HAProxy服务器上安装MySQL客户端

HAProxy需要先安装MySQL客户端,然后才能与MySQL服务器通信。

红帽\ CentOS

sudo yum install mysql-client

Ubuntu \ Debian

sudo apt-get install mysql-client

配置HAProxy以检查MySQL

listen mysql-cluster
    mode tcp
    option mysql-check user haproxy_check
    balance roundrobin
    server mysql1 10.0.0.1:3306 check
    server mysql2 10.0.0.2:3306 check