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是否安装。
2.解压软件包,并且安装 ,由于在解压的软件包中有makefile所以不需要配置和编译,直接安装 即可,TARGET指定内核的版本,USE_PCRE指定依赖的软件为PCRE,PREFIX指定软件安装的目录,创建conf文件夹用来存放配置文件,创建log文件夹用来存放 日志文件,复制源码包中的配置文件到创建的配置文件中。
3.修改主配置文件,用来做负载均衡集群。global为全局设置,defaults为默认设置,listen为指定虚拟服务的名称、IP地址和端口号,web-ser为自己定义的名字,后IP地址和80端口为使用那个IP地址(0.0.0.0为使用所有地址)和端口接收连接请求,balance指定分发的方式,roundrobin为轮询的方式,server后跟真正提供web访问的IP地址和端口,前面的关键字可以定义。
4.启动haproxy服务
启动服务时出现以上错误,解决的方案,提示21行关键字redispatch前要 加关键字 为option redispatch,修改后再次 启动。
再次启动服务时出现一下错误,启动配置文件时不能加载/usr/share/haproxy,修改 路径为/usr/local/haproxy,修改后再次启动服务。
5.启动成功后查看进程和端口,停止进程可以用杀进程的方式进行。
6.测试客户端,启动web1和web2上的网站服务,并且修改 默认的网页,web1的页面为1.1.1.10,web2的页面为1.1.1.20。
7.haproxy提供web页面的监控信息,并且可以监控其web页面是否down掉,stats uri /haproxy-admin为设置web页面监控,重新启动服务即可。
8.由于客户端没有安装桌面所以在haproxy服务上自己访问测试。
9.把web2上的页面down掉后查看是否监控。
总结: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为不缓存。
2.重新启动服务
3.客户端进行测试只有http协议才携带cookie信息。
实验(三)
实验目的: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的软件包
2.web1和web2的配置同上,配置web3和web4的页面。
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服务的主机。
4.启动 haproxy服务
5.客户端测试
总结:haproxy负载均衡集群可以通过web页面监控web服务器的运行状态信息,可以根据用户访问的文件类型,分发用来的连接请求。