前言
HAProxy是一个使用C语言编写的自由及开放源代码软件,提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
HAProxy特别适用于那些负载特大的web站点,完全可以支持数以万计的并发连接,并且可以保护你的web服务器不被暴露到网络上。
HAProxy处于7层(运用层),先判断请求内容,动态资源发给谁?静态资源发给谁?再进行负载均衡。没有处于4层(传输层,基于IP和端口,直接负载均衡) 的LVS快。即便这样,也不能否认HAProxy的优秀!
实验环境
server1 172.25.64.1 haproxy 企业六
server2 172.25.64.2 httpd 企业六
server3 172.25.64.3 httpd 企业六
客户端 172.25.64.250
一、配置负载均衡
1、去官网下载haproxy安装包
https://www.haproxy.com/
server1(haproxy端)
2、安装haproxy软件包
[root@server1 ~]# yum install rpm-build gcc pcre-devel -y #安装所需依赖
[root@server1 ~]# ls
haproxy-1.7.3.tar.gz #安装包
[root@server1 ~]# rpmbuild -tb haproxy-1.7.3.tar.gz #将安装包解压成二进制文件
[root@server1 ~]# ls
haproxy-1.7.3.tar.gz rpmbuild #在/root生成rpmbuild文件
[root@server1 ~]# rpm -ihv rpmbuild/RPMS/x86_64/haproxy-1.7.3-1.x86_64.rpm
2、解压haproxy包
[root@server1 ~]# tar zxf haproxy-1.7.3.tar.gz
[root@server1 ~]# ls
haproxy-1.7.3 haproxy-1.7.3.tar.gz rpmbuild
3、查看安装软件会生成的配置文件
可以看到没有配置文件,需要自己生成!
4、生成配置文件
注意:可以看到/etc/haproxy目录下什么都没有
[root@server1 ~]# cp haproxy-1.7.3/examples/content-sw-sample.cfg /etc/haproxy/haproxy.cfg
5、修改haproxy配置文件
[root@server1 ~]# vim /etc/haproxy/haproxy.cfg
######################需修改的地方###########################
21 bind *:80 name clear #监控所有80端口
32 # use_backend static if { hdr_beg(host) -i img }
33 # use_backend static if { path_beg /img /css }
34 default_backend static #默认访问backend static
40 # option prefer-last-server
42 # option redispatch
45 # option httpchk HEAD /favicon.ico
46 server server2 172.25.64.2:80 check inter 1000 #后端服务器
47 server server3 172.25.64.3:80 check inter 1000 #后端服务器
[root@server1 ~]# /etc/init.d/haproxy start #启动服务
server2(后端服务器)
安装阿帕奇,编写默认发布文件并启动阿帕奇服务!
server3(后端服务器)
安装阿帕奇,编写默认发布文件并启动阿帕奇服务!
客户端测试
访问server1轮询出现server2和server3发布的内容!
二、配置日志
可以看到,日志保存在本地,local0是自定义的
[root@server1 ~]# vim /etc/haproxy/haproxy.cfg
一般日志都放在/var/log/目录下:
显然没有haproxy的日志
没有咱就自己添加一个日志呗!
[root@server1 log]# vim /etc/rsyslog.conf #日志配置文件
#######################需要修改的地方##########
13 $ModLoad imudp
14 $UDPServerRun 514
62 local0.* /var/log/haproxy.log
[root@server1 log]# service rsyslog restart #重启日志服务
测试:
三、HAProxy监控
27 monitor-uri /monitoruri #监控haproxy服务
200ok表示haproxy服务本身是正常的,跟server2,3httpd服务是否启动无关
31 stats uri /admin/stats
#监控页面,颜色都有说明,显示监控服务的状态
四、acl访问控制
server1(haproxy端)
[root@server1 ~]# vim /etc/haproxy/haproxy.cfg
############添加###################
35 acl blacklist src 172.25.64.250 #禁止172.25.64.250访问
36
37 http-request deny if blacklist
[root@server1 ~]# /etc/init.d/haproxy restart
客户端测试
可以看到之前时能访问的,现在被禁止了!美中不足的是403 Forbidden不好看。。。
IP为172.25.64.250的主机浏览器访问:
咱们将别人拉入了黑名单,总不能直接告诉别人吧!咱不能做直男,是吧!
server1(haproxy端)
[root@server1 ~]# vim /etc/haproxy/haproxy.cfg
###################加入######################
39 errorloc 403 http:172.25.64.1:8080/index.html #错误页面重定向
[root@server1 ~]# /etc/init.d/haproxy restart
[root@server1 ~]# yum install httpd -y #安装阿帕奇
[root@server1 ~]# vim /var/www/html/index.html
页面不存在!
[root@server1 ~]# vim /etc/httpd/conf/httpd.conf
136 Listen 8080 #修改端口为8080,避免与HAProxy发生冲突
[root@server1 ~]# /etc/init.d/httpd start #启动阿帕奇服务
客户端测试
IP为172.25.64.250的主机浏览器访问172.25.254.1后自动跳转到80端口!是不是好看多了!