HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。

实验(一)

实验目的:使用Haproxy做负载均衡集群(七层)

实验环境准备:

客户端  IP地址:1.1.1.1 主机名waiwang

web1   IP地址:1.1.1.10 主机名:localhost  

web2   IP地址:1.1.1.20 主机名:localhost  

配置HAproxy服务器的IP地址:1.1.1.254 主机名:fanlj

实验所用软件包:haproxy-1.4.24.tar.gz

1.查看软件所依赖的软件有pcre pcre-devel是否安装。

wKioL1YEnRSj0E8NAADPCTrNnss156.jpg

2.解压软件包,并且安装 ,由于在解压的软件包中有makefile所以不需要配置和编译,直接安装 即可,TARGET指定内核的版本,USE_PCRE指定依赖的软件为PCRE,PREFIX指定软件安装的目录,创建conf文件夹用来存放配置文件,创建log文件夹用来存放 日志文件,复制源码包中的配置文件到创建的配置文件中。

wKiom1YEnC2hYpI4AAHx5e45Oqo466.jpg

wKioL1YEna2h93WjAADk2eXJFSg529.jpg

wKioL1YEn9HBEI6yAADLhCSAUfs127.jpg

wKioL1YEoX3DHK_yAABofQ57tbc707.jpg

3.修改主配置文件,用来做负载均衡集群。global为全局设置,defaults为默认设置,listen为指定虚拟服务的名称、IP地址和端口号,web-ser为自己定义的名字,后IP地址和80端口为使用那个IP地址(0.0.0.0为使用所有地址)和端口接收连接请求,balance指定分发的方式,roundrobin为轮询的方式,server后跟真正提供web访问的IP地址和端口,前面的关键字可以定义。

wKioL1YEpfeD1_rEAADl5D7hv9U337.jpg

wKioL1YEpgGQfVUpAAH9O0PfEgQ345.jpg

4.启动haproxy服务

wKioL1YEpwHScCSCAAHcj3DsXoU142.jpg

启动服务时出现以上错误,解决的方案,提示21行关键字redispatch前要 加关键字 为option redispatch,修改后再次 启动。

wKioL1YEp7LxpIhgAAAtufCNt5M883.jpg

再次启动服务时出现一下错误,启动配置文件时不能加载/usr/share/haproxy,修改 路径为/usr/local/haproxy,修改后再次启动服务。

wKiom1YEp-qS_e4-AAEfDYPyc_8476.jpg

wKioL1YEqHKQAGEXAAA-xsIu65g349.jpg

5.启动成功后查看进程和端口,停止进程可以用杀进程的方式进行。

wKiom1YEqR_DsLnqAAEKeZEJDqs390.jpg

6.测试客户端,启动web1和web2上的网站服务,并且修改 默认的网页,web1的页面为1.1.1.10,web2的页面为1.1.1.20。

wKioL1YEqsnxDtT-AADJjt8ZoU8255.jpg

wKiom1YEqs-R2lHlAADJjt8ZoU8456.jpg

wKiom1YEqxDQMq07AADK8JO-FZM009.jpg

7.haproxy提供web页面的监控信息,并且可以监控其web页面是否down掉,stats uri /haproxy-admin为设置web页面监控,重新启动服务即可。

wKiom1YEq_uS5_tnAAEY-1VeefQ746.jpg

wKiom1YErJPTcCN3AAC_zix15zI562.jpg

wKiom1YErJuD0SYPAACQVGL6-GY360.jpg

8.由于客户端没有安装桌面所以在haproxy服务上自己访问测试。

wKiom1YErVzQt2KQAAQLdyefoR4051.jpg

9.把web2上的页面down掉后查看是否监控。

wKiom1YErcqCsPp-AAEDMThGieA236.jpg

wKioL1YEreiSQSQEAASSjoHg7f4970.jpg

总结:haproxy负载均衡集群可以通过web页面监控web服务器的运行状态信息。

配置文件参数的解释

global   //全局设置
log 127.0.0.1   local0    //日志输出配置
maxconn 4096     //最大连接数

chroot /usr/local/haproxy
uid 99         //所属运行的用户uid
gid 99                   //所属运行的用户组
daemon                //以后台形式运行
nbproc 2               //启动2个haproxy实例

pidfile /usr/local/haproxy/run/haproxy.pid
defaults   //默认设置
log    global

mode   http ?  //默认采用http模式
option   httplog //日志类别
retries 3 ??//3次连接失败认为服务器不可用
option redispatch //当serverid对应的服务器挂掉后,强制定向到其他健康服务器
stats  uri     /haproxy-admin   //设置监控

contimeout      5000    //连接超时时间
clitimeout      50000     //客户端连接超时时间

srvtimeout      50000    //服务器端连接超时时间

 listen  web-ser 0.0.0.0:80   #

#cookie                      指定serverid的编号 自己定义

#check inter  2000    心跳检查的频率 2秒

#rise 2                       连续2次检查到心跳认为服务器可用
#fall 5                        连续5次检查不到心跳认为服务器不可用

实验(二)

实验目的:haproxy做LB负载均衡集群时,让一个客户端的多次访问请求都要haproxy分发给后端的同一台服务器(只适用与web 集群)。

实验环境:同上

1.修改主配置文件,cookie SERVERID insert indirect nocache为插入cookie信息nocache为不缓存。

wKioL1YEuBPStoGIAAF0uUzin34650.jpg

2.重新启动服务

wKioL1YEt-ih2nLbAAC_zix15zI830.jpg

wKiom1YEt_LyLRCXAACQVGL6-GY323.jpg

3.客户端进行测试只有http协议才携带cookie信息。

wKiom1YEuJvzUpVIAAC6daPywKA429.jpg

实验(三)

实验目的:haproxy实现LB负载均衡集群,根据用户访问的文件类型,分发用来的连接请求。

实验环境:

客户端 IP地址:1.1.1.1 主机名waiwang  

web1  IP地址:1.1.1.10 主机名:localhost    提供网站服务.html结尾的网页

web2  IP地址:1.1.1.20 主机名:localhost   提供网站服务.html结尾的网页

web3  IP地址:1.1.1.30主机名:localhost   提供网站服务

.php结尾的网页

web4  IP地址:1.1.1.40主机名:localhost   提供网站服务

.php结尾的网页

配置HAproxy服务器的IP地址:1.1.1.254 主机名:fanlj

实验所用软件包:haproxy-1.4.24.tar.gz

实验要求:
当用户访问http://haproxy-ip    默认访问web1 或者web2的页面

当用户访问http:/haproxy-ip/.php时访问web3和web4的页面

当用户访问http://haproxy-ip/.html时访问web1和web2的页面

1.安装支持php的软件包

wKioL1YE3p3zIiAZAAAwUB7XUwY860.jpg

2.web1和web2的配置同上,配置web3和web4的页面。

wKiom1YE9yLArAGoAAD8bocqViE556.jpg

wKioL1YE9zCCuv80AADzh4FmZWo488.jpg

wKiom1YFAYvQlqEdAADI_8BpXQ0036.jpg

wKioL1YFAirhYEkRAAC0i-QBQLk620.jpg

wKioL1YFAwmyHLWNAAE4_kTrj9k615.jpg

wKiom1YFA-rAXZLJAAE4zrvIAMQ061.jpg

3.修改 haproxy提供LB的负载均衡集群的配置文件,在源码包中examples目录下,frontend 定义服务的策略,backend 提供服务的服务器组 ,bind 0.0.0.0:80为本机的 所有端口监听访问80端口请求,mode http为七层模式,option httplog为使用全局日志记录配置,acl为匹配的策略,use_backend为访问的请求与acl匹配时请求分发给那个服务器组,default_backend人默认访问那个服务器组,backend为真正提供web服务的主机。

wKiom1YFBMei8FZHAACG_WudCfQ548.jpg

wKioL1YFDb-QdKxaAAHTm2ZVSX0993.jpg

wKiom1YFDceBMNJUAAMdxZrbE-k891.jpg

4.启动 haproxy服务

wKioL1YFFK-jV9F5AAN8yScUh10908.jpg

5.客户端测试

wKiom1YFE2vTw7gSAAEVwNqnJeA653.jpg

总结:haproxy负载均衡集群可以通过web页面监控web服务器的运行状态信息,可以根据用户访问的文件类型,分发用来的连接请求。