一、Haproxy环境下负载均衡的搭建:
实验环境: server6(6号): web1 IP: 172.25.254.6
server7(7号):web2 IP:172.25.254.7
server8(8号):负载均衡服务器 IP:172.25.254.8
foundation13(client): 客户端 IP:172.25.254.250
1. 搭建yum源解决各种服务的软件包问题
因为实验环境都在一个局域网中,故我们在foundation13这台主机上搭建网络yum源,方便server6、server7、server8的使用:
然后在6、7、8号主机上的文件上配置使用client的网络yum源:
2. 在8号主机上下载Haproxy代理的软件包:
3. 配置haproxy服务的配置文件:
配置文件为:/etc/haproxy/haproxy.cfg
首先,先注释60—85行的内容,然后配置如下的信息:
开启haproxy服务:
4. 在6号、7号主机上搭建httpd服务:
5. 现在一个简单的负载均衡服务器就搭建好了,现在去client上测试效果:
二、 haproxy负载均衡服务器监控的配置
1. 配置如下信息:
载入配置:
2. 查看监控画面:
在client上的浏览器中输入: http://172.25.254.8:8080/lookover 后出现如下登陆界面:
输入配置的管理员和登陆密码,出现如下监控画面:
3. 测试一:
通过监控我们可以知道后端服务器被访问的次数:
4. 测试二: 进行健康检查:
因为haproxy是工作在应用层的,可以对Http的报文进行直接的处理,所以可以具有健康检查的功能,而lvs是工作在OSI模型的下四层的,不能得到http报文的数据,所以不具备健康检查的功能。
三、动静页面访问的分离
实验要达到动态访问和静态访问分离的效果。据老师说动态访问就是直接输入IP地址;静态访问就是IP后面还要带访问的目录。
1. 配置haproxy配置文件:
载入配置信息:
2. 在8号主机上安装httpd服务,并修改其端口。
3. 在8号主机上添加index.html文件,并开启httpd服务:
4. 在6号主机上创建目录/var/www/html/images,并在该目录下面放一张jpg格式得照片:
5. 测试:
1) 测试动态方式访问和主从替代:
client动态方式访问8号负载均衡调度器:
杀死7号主机得httpd服务:
7号主机挂掉后,8号主机作为替补:
2) 测试静态访问:
在client得浏览器中输入http://172.25.254.8/images/, 现象如下图:
点击redhat.jpg即可查看图片:
四、 haproxy服务的日志自定义
1. 配置日志采集服务的配置文件/etc/rsyslog.conf:
配置完成后, 重启rsyslog服务。
五、错误重定向
实验目的:要拒绝IP:172.25.47.250的client主机通过访问主机8而访问后端服务器,当访问时要将其重定向到8号主机的index.html文件,然后访问该文件的内容。 这一般应用在client主机自身出现故障,我们通过重定向给客户相应的提示信息。
1)错误重定向1:
1. 配置haproxy的文件 :
2. 配置8号主机httpd服务的index文件:
3. 测试:用client主机去访问8号主机
2) 错误重定向二:
1. 配置haproxy文件:
2. 配置8号主机httpd服务的index文件:
3. 测试:用客户端client主机访问8号主机
在client主机的浏览器中输入ip:172.25.254.3
显示重定向到了172.25.254.3的8000端口:
六、http状态码301的使用
1.配置文件/etc/init.d/haproxy:
2. 在server2、server1上配置web服务,并且其域名分别为www.room.com、ptm.room.com:
3. 在client主机中配置如下的解析:
4. 测试:
在clent主机访问room.com时,重定向到了server2上的www.room.com:
在client主机访问172.25.254.3时,重定向到了ptm.room.com:
七、 haproxy实现读写分离
1. 在6号主机 和7号主机上下载php插件:
2.将目录uoload移动到/var/www/html下:
3. 对7号主机做如下操作:
更改php配置文件upload_file.php,使之可以接收更大容量的图片:
这个php文件可以实现上传图片到浏览器的upload目录下。
最后重启httpd服务。
为了做对比实验,主机6做同样的操作。
4. 配置haproxy的配置文件:
静态访问的时候是读操作, 动态访问的时候是写操作:
5. 测试:
静态访问的时候:
动态访问的时候: