LB-HAproxy负载均衡部署
HAproxy的负载均衡已经被我们广泛的用于生产环境中了,其优秀的性能也得到了人们的认可;接下来我们来说说Haproxy的有点;
1.可以实现4层、7层的负载均衡;
2.友好的可视界面,支持web显示;
3.心跳监测,可以自动识别故障点,移除后者添加(Nginx的自动识别是通过TCP给webserver发送数据,来证明是否健康;HAproxy是通过访问webserver的index.html是否正常来判断健康状况);
4.可以结合LVS实现LVS的心跳监测;
5.HAproxy可以通过cookie的持久化链接,来实现和LVS调度算法中sh一样的效果,但比sh要更加好用;
准备1台haproxy'服务器,两台httpd服务器
httpd服务器我们对主页进行一下修改,更方便我们进行观察;
[root@sxb-2 ~]# echo 102 > /var/www/html/index.html [root@sxb-3 ~]# echo 103 > /var/www/html/index.html
接下来我们进行HAproy服务器的配置;
1.安装软件;
[root@sxb-1 haproxy-1.7]# tar xf haproxy-1.7.5.tar.gz [root@sxb-1 haproxy-1.7]# cd haproxy-1.7.5/ [root@sxb-1 haproxy-1.7.5]# ls CHANGELOG doc include Makefile scripts tests contrib ebtree LICENSE README src VERDATE CONTRIBUTING examples MAINTAINERS ROADMAP SUBVERS VERSION
编译安装;
[root@host1 haproxy-1.7.5]# make TARGET=linux2628 PREFIX=/usr/local/haproxy/ [root@host1 haproxy-1.7.5]# make TARGET=linux2628 PREFIX=/usr/local/haproxy/ install
配置HAproxy文件(配置文件需要我们能自己写,必须是.cfg结尾)
[root@sxb-1 haproxy]# vim haproxy.cfg global #参数是进程级的,通常是和操作系统相关 log 127.0.0.1 local3 #需要我们在日志文件里设定; maxconn 4096 user nobody group nobody daemon pidfile /usr/local/haproxy/haproxy.pid defaults #配置默认参数,这些参数可以被用到frontend,backend,Listen组件 log global mode http maxconn 2048 timeout connect 10s timeout client 1m timeout server 1m retries 3 option redispatch listen haproxy-monitor #Fronted和backend的组合体 bind *:8080 mode http option forwardfor option httpclose stats enable stats show-legends stats refresh 5s stats uri /stats stats auth admin:admin frontend main #接收请求的前端虚拟节点,Frontend指定具体使用后端的backend bind *:80 log global option forwardfor option httpclose default_backend html-server backend html-server #后端服务集群的配置,真实服务器,一个Backend对应一个或者多个实体服务器 balance roundrobin option httpchk GET /index.html server html-A 192.168.5.102:80 check 安全检查 server html-B 192.168.5.103:80 check 安全检查
这个是基于URL的负载均衡;
启动HAproxy服务;
[root@sxb-1 haproxy]# ./sbin/haproxy -f haproxy.cfg
到这里,我们的HAproxy就可以使用了;
这里我们通过web页面我们可以看到两台httpd服务器的信息都显示出来了,接下来我们测试HAproxy的负载均衡;
[root@sxb-1 ~]# curl 192.168.88.101 102 [root@sxb-1 ~]# curl 192.168.88.101 103 [root@sxb-1 ~]# curl 192.168.88.101 102 [root@sxb-1 ~]# curl 192.168.88.101 103
测试HAproxy的健康检查;我们停掉102的httpd服务器;
[root@sxb-2 ~]# systemctl stop httpd [root@sxb-1 ~]# curl 192.168.88.101 103 [root@sxb-1 ~]# curl 192.168.88.101 103 [root@sxb-1 ~]# curl 192.168.88.101 103
当我们停掉102后HAproxy自动识别故障点,并剔除,
我们恢复102httpd服务;
[root@sxb-2 ~]# systemctl start httpd [root@sxb-1 ~]# curl 192.168.88.101 103 [root@sxb-1 ~]# curl 192.168.88.101 102 [root@sxb-1 ~]# curl 192.168.88.101 103 [root@sxb-1 ~]# curl 192.168.88.101 102
当问题恢复后,HAproxy会自动将102加入到集群中;
我们来测试一下cookie的持久化链接;
我们要对配置文件进行一些修改
重启其服务我们来测试;
因为cookie的缓存功能,我们会一直访问102;当我们停掉102服务后;cookie会为我们选择其他通道;
我们来测试cookie