如何配置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