专栏名称: 数据分析与开发
伯乐在线旗下账号,分享数据库相关技术文章、教程和工具,另外还包括数据库相关的工作。偶尔也谈谈程序员人生 :)
目录
相关文章推荐
数据中心运维管理  ·  突发!新加坡一数据中心起火,一人就医 ·  昨天  
数据分析与开发  ·  请数据人立即拿下软考证书(政策风口) ·  2 天前  
数据中心运维管理  ·  计算机网络施工方案 ·  2 天前  
51好读  ›  专栏  ›  数据分析与开发

HAProxy 和 Nginx 负载均衡分析

数据分析与开发  · 公众号  · 数据库  · 2017-01-05 20:45

正文

(点击 上方公众号 ,可快速关注)


作者:鸿弟

my.oschina.net/zhuangweihong/blog/813231

如有好文章投稿,请点击 → 这里了解详情


出于对负载均衡工具的疑问,分别对HAProxy和Nginx的负载均衡进行了抓包分析,分析的过程跟大家分享下。先说下对HAProxy抓包得到的结论吧:HAProxy在负载均衡的一台后端挂掉后,如果还没达到探测的时间点时,请求还会往挂掉的这台转发,请求会丢失。


HAProxy负载均衡的实验过程如下:


1: 先看下HAProxy的配置。配置inter 20000为20s检测一次,这个是为了更明显的抓下HAProxy的负载均衡探测机制。


listen test9090

bind 127.0.0.1 : 9090

mode tcp

server localhost90 127.0.0.1 : 90 check inter 20000

server localhost91 127.0.0.1 : 91 check inter 20000


2: 后端我是用Nginx进行测试,看下Nginx的配置如下。可在/var/www/html/建个index.html进行测试


server {

listen 90 ;

listen 91 ;

location / {

root / var / www / html ;

}

}


先用curl 127.0.0.1:9090进行测试,并在机器上开两个窗口看下抓包是否均衡正常,两个窗口运行的命令分别如下:tcpdump -i lo -nn ‘port 90’      tcpdump -i lo -nn ‘port 91’看下负载均衡能否正常工作。



上面抓包的截图证明Nginx监听的90和91端口都有在监听。使用抓包来检测比看日志来更细点,所以还是用抓包来分析了。


3: 抓包查看HAProxy的健康检测机制


因为我们配置了inter 20000,也就是告诉HAProxy 20s检测一次,抓包查看也是20s检查一下。注意下,这个检测是在客户端无任务请求的时候进行探测的,也就是处理请求跟探测是分开的。



4: 模拟线上故障,Nginx挂掉91端口


把listen  91这个Nginx的配置去除,然后reload一下,会发现前端的请求如果分发到91端口的话,就会挂掉,经抓包发现HAProxy需要探测三次才会把故障的给切下线。我们配置的是20s探测一次,也是最长可能得探测60s才能把故障的切除掉。如果这60s内有1w请求的话,那就会丢掉5k个。如果用在线上的话,探测机制肯定不会是20s一次,一般最多3s会切换掉。



Nginx负载均衡的配置如下:


1: 先看下Nginx的反向代理负载均衡配置,如下:


upstream backend {

server 127.0.0.1 : 90 weight = 1 max_fails = 3







请到「今天看啥」查看全文