负载均衡-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服务
[ ]
[ ]
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/
刷新一下页面
查看状态页面http://10.0.0.11/haproxy?stats
测试HTTP层代理
修改配置文件
~]# vim /etc/haproxy/haproxy.cfg
~]# 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
~]# systemctl restart haproxy
访问http://10.0.0.11/
查看状态页面http://10.0.0.11/haproxy?stats
动态管理
修改配置文件
[ ]
[ ]
...略
stats socket /var/lib/haproxy/stats
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
stats timeout 2m
..略
[ ]
安装socat工具
[ ]
...略
查看帮助信息
[root@node1 ~]# echo "help" | socat stdio /var/lib/haproxy/haproxy.sock
Unknown 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.sock
Name: HAProxy
Version: 1.5.18
Release_date: 2016/05/10
Nbproc: 1
Process_num: 1
Pid: 3172
Uptime: 0d 0h02m15s
Uptime_sec: 135
Memmax_MB: 0
Ulimit-n: 8049
Maxsock: 8049
Maxconn: 4000
Hard_maxconn: 4000
...略
关闭proxy1后端
[root"disable server web_newbie_local_backend/proxy1" | socat stdio /var/lib/haproxy/haproxy.sock ~]# echo
查看状态页面
可以看到proxy1处于MAINT状态;
访问http://10.0.0.11/,不管怎么刷新页面,也不会显示node2的内容。
开启proxy1后端
[root"enable server web_newbie_local_backend/proxy1" | socat stdio /var/lib/haproxy/haproxy.sock ~]# echo
再次查看状态页面
可以看到proxy1处于UP状态;
访问http://10.0.0.11/,刷新页面,也会显示node2的内容了。
以上是关于负载均衡-2.Haproxy的主要内容,如果未能解决你的问题,请参考以下文章