Linux/Python学习论坛-京峰教育

 找回密码
 立即注册

一键登录:

搜索
热搜: 活动 交友 discuz
查看: 573|回复: 0

负载均衡VIP /LVS 的健康检测方式

[复制链接]

238

主题

288

帖子

1925

积分

超级版主

Rank: 8Rank: 8

积分
1925
QQ
发表于 2015-3-20 19:00:52 | 显示全部楼层 |阅读模式
本帖最后由 My-shiguang 于 2015-3-20 19:05 编辑

1.  status.html 文件:
       一般是web 服务器常用的方式,apache/nginx  web 服务 配置健康检测文件status.html[自己设置即可]这样 VIP/LVS  会每秒(或者一个时间粒度) 去他们下面的realserver 上面:curl http://realserverip:/status.html如果能取到这文件,则说明这个realserver 是好的,就会根据负载均衡算法把流量引到这台realserver。
(1).  realserver  touch了 status.html 但是没有启动web服务;


        因为没有启动web服务,则 curl http://realserverip:/status.html 时 根本连不上此台机器 80,所以机器的web服务如果没有启动,即使已经touch了  status.html 文件,LVS 也认为这台机器是不健康的,不会引流量进来;所以,我们上线时;如果不摘流量(rm -f .../status.html);也只是在一瞬间丢掉了流量;LVS 下次健康检测就会失败的.
(2).  配置好监控检测文件后,我们需要在realserver上面touch statu.html文件;
        因为监控检测是通过web服务来检测的;所以,要在 web服务器的  根目录里面touch 监控检测文件;但是这个根目录要找对:
/home/a/conf/apache/httpd.conf    是apache 默认的配置文件:DocumentRoot "/home/a/share/htdocs"  
                 如果在 /home/a/conf/apache/include/*.conf 里面没有新的设置,web服务的跟目录就是上面这个。


如果在  /home/a/conf/apache/include/.*.conf 里面重新设置了<VirtualHost *>  则优先使用include 里面的配置。
[html] view plaincopy
<VirtualHost *>  
      ServerName              www.baidu.com         # 如果访问域名:www.baidu.com  或者直接访问web机器的IP地址则  
      DocumentRoot            /home/a/share/htdocs/test   #跟目录在这个目录下面  
      ........  
      ........  
Nginx 服务器:conf里面的那个root 对应的就是 跟目录。               
[html] view plaincopy
http {  
         include                 mime.types;  
         server_tokens           off;  
         root                    /home/a/share/htdocs;   #web 服务器的根目录  
         ......  
         ......  
    2 . 端口(port) 的健康检测方式:
如果realserver 上面不提供web 服务器,则上面的status.html 检测方式是不适合的;我们可以采用port方式;LVS/VIP 会每秒检测下面的 realserver 上面的 固定端口 [ 比如3000]  如果这个realserver的端口可以通信;则认为这台realserver 是健康,会把数据与这台realserver 进行通信;
(1). 判断realserver 的端口是否是通的:
[html] view plaincopy
telnet realserverIP  port(3000)  
Trying realserverIP   ...  
Connected to realserverIP   
Escape character is '^]'.   ------>表明 端口是通的  
  
Trying  realserverIP...  
telnet: connect to address : realserverIP Connection refused  
telnet: Unable to connect to remote host: Connection refused      ------>表明  端口是不通的   


    3.   status.html + port 监控检测的方式
上面说使用status.html 健康检测的方式必须是web 服务,其实不不一定;只要这个机器提供HTTP的服务,比如curl http://ip:port/status.html  返回是200  就是健康的。
wget http://IP:4050/status.html  可以作为realserver 健康检测的;还是用status.html 来做健康检测,不过需要指定特定的端口:4050   只要应用中可以使用curl 发送消息
也就是可以进行HTTP服务。


     4.  健康检测的方式
     健康检测的方式其实有两种啊,四层健康检测【TCP】、七层健康检测【HTTP】


四层健康检测方式:其实就是上面的端口检测方式,只要这个server 的端口是通的,就认为这台realserver是alive的;就会把流量分发过来,


这样的health  check 一般是用在http服务,但是不是真正的apache/nginx 这样传统的webserver上面;


七层健康检测方式:其实就是上面的status.html 的方式,在OSI的第七层,应用层进行检测,判断curl  http://ip/status.html  这个配置文件是否存在




    四层health check :如果你摘流量,必须停止服务,把对应的port 关闭
    七层health check :如果你摘流量,只要删除指定的健康检测文件即可
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|京峰教育,只为有梦想的人 ( 京ICP备15013173号 )

GMT+8, 2019-7-21 00:24 , Processed in 0.045355 second(s), 14 queries , Apc On.

快速回复 返回顶部 返回列表