负载均衡-2.Haproxy

Posted 开源Ops

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了负载均衡-2.Haproxy相关的知识,希望对你有一定的参考价值。

Haproxy 是一个高性能的tcp和http代理,专用于反向代理负载均衡。

相较与nginx,算法更多,性能更好,而且可以通过和haproxy的sock通信,进行动态管理,还有丰富的Web管理页面。



  • 负载均衡算法介绍

1)roundrobin

动态计算权重,根据权重轮询

2)static-rr

静态加权轮询,不会动态计算权重

3)leastconn

根据后端当前连接的活动个数调度

4)first

根据后端列表从上而下进行调度,第一个后端连接数到上限,才将请求发送到第二个后端

5)source

相当于Nginx的ip_hash

6)uri

相当于Nginx的url_hash

7)url_param

基于url指定参数进行hash计算,同一参数始终访问同一后端

8)hdr(<name>)

基于http请求头的某个字段进行hash计算,根据计算值进行调度

9)rdp-cookie(<name>)

基于rdp(远程桌面)协议的cookie做hash计算进行调度


  • 测试TCP层代理

仍然用node2 node3作为后端,配置跟Nginx做负载均衡实验的后端一样。

node1 关闭Nginx服务

[root@node1 ~]# systemctl stop nginx[root@node1 ~]# systemctl disable nginx


node1安装Haproxy并配置

[root@node1 ~]# yum install -y haproxy...略[root@node1 ~]# vim /etc/haproxy/haproxy.cfg[root@node1 ~]# cat /etc/haproxy/haproxy.cfg...略frontend lb_newbie_local bind *:80 stats uri /haproxy?stats default_backend web_newbie_local_backend
backend web_newbie_local_backend balance roundrobin server proxy1 10.0.0.12:80 check inter 2000 rise 3 fall 3 weight 1 server proxy2 10.0.0.13:80 check inter 2000 rise 3 fall 3 weight 1[root@node1 ~]# systemctl start haproxy[root@node1 ~]# systemctl enable haproxy


访问http://10.0.0.11/


刷新一下页面

负载均衡-2.Haproxy



查看状态页面http://10.0.0.11/haproxy?stats

负载均衡-2.Haproxy



  • 测试HTTP层代理

修改配置文件

[root@node1 ~]# vim /etc/haproxy/haproxy.cfg[root@node1 ~]# cat /etc/haproxy/haproxy.cfg...略frontend lb_newbie_local bind *:80 mode http stats uri /haproxy?stats default_backend web_newbie_local_backend
backend web_newbie_local_backend balance roundrobin option forwardfor header X-REAL-IP option httpchk GET /index.html server proxy1 10.0.0.12:80 check inter 2000 rise 3 fall 3 weight 1 server proxy2 10.0.0.13:80 check inter 2000 rise 3 fall 3 weight 1[root@node1 ~]# systemctl restart haproxy


访问http://10.0.0.11/

负载均衡-2.Haproxy


查看状态页面http://10.0.0.11/haproxy?stats

负载均衡-2.Haproxy



  • 动态管理

修改配置文件

[root@node1 ~]# vim /etc/haproxy/haproxy.cfg[root@node1 ~]# cat /etc/haproxy/haproxy.cfg...略 # turn on stats unix socket stats socket /var/lib/haproxy/stats stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin stats timeout 2m ..略 [root@node1 ~]# systemctl restart haproxy


安装socat工具

[root@node1 ~]# yum install -y socat...略


查看帮助信息

[root@node1 ~]# echo "help" | socat stdio /var/lib/haproxy/haproxy.sockUnknown command. Please enter one of the following commands only : clear counters : clear max statistics counters (add 'all' for all counters) clear table : remove an entry from a table help : this message prompt : toggle interactive mode with prompt quit : disconnect show info : report information about the running process show pools : report information about the memory pools usage show stat : report counters for each proxy and server show errors : report last request and response errors for each proxy...略[root@node1 ~]# echo "show info" | socat stdio /var/lib/haproxy/haproxy.sockName: HAProxyVersion: 1.5.18Release_date: 2016/05/10Nbproc: 1Process_num: 1Pid: 3172Uptime: 0d 0h02m15sUptime_sec: 135Memmax_MB: 0Ulimit-n: 8049Maxsock: 8049Maxconn: 4000Hard_maxconn: 4000...略


关闭proxy1后端

[root@node1 ~]# echo "disable server web_newbie_local_backend/proxy1" | socat stdio /var/lib/haproxy/haproxy.sock


查看状态页面

可以看到proxy1处于MAINT状态;

访问http://10.0.0.11/,不管怎么刷新页面,也不会显示node2的内容。


开启proxy1后端

[root@node1 ~]# echo "enable server web_newbie_local_backend/proxy1" | socat stdio /var/lib/haproxy/haproxy.sock


再次查看状态页面

可以看到proxy1处于UP状态;

访问http://10.0.0.11/,刷新页面,也会显示node2的内容了。


开源Ops 发起了一个读者讨论 各位有建议或者疑问都可在此讨论


以上是关于负载均衡-2.Haproxy的主要内容,如果未能解决你的问题,请参考以下文章

负载均衡-2.Haproxy

如何使用HAProxy实现Impala的负载均衡

配置haproxy负载均衡群集

负载均衡之-haproxy

你不想了解吗?亲!又一负载均衡!haproxy代理服务器!

高可用高性能负载均衡软件HAproxy详解指南-第三章:HAproxy实例