目录
Haproxy基础知识
1.haproxy简介
(1)HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件;适用于负载大的web站点,这些站点通常又需要会话保持或七层处理。它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上
(2)HAProxy 实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接;事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。
(3)HAProxy 支持连接拒绝 : 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害,这也是其他负载均衡没有的优点
(4)HAProxy 支持全透明代理(已具备硬件防火墙的典型特点): 可以用客户端IP地址或者任何其他地址来连接后端服务器.
2.HAproxy配置文件详解
配置文件主要分为5部分:
global:全局变量的参数,属于进程配置,通常与操作有关
defaults:配置默认参数,这些参数可以被用到frontend,backend,Listen组件
frontend:接收请求的前端虚拟节点,Frontend可以更加规则直接指定具体使用后端的backend:后端服务集群的配置,是真实服务器,一个Backend对应一个或者多个实体服务器
Listen :frontend和backend的组合体
实验1:haproxy的安装与负载均衡实现
server2:
yum install haproxy -y 安装haproxy
cd /etc/haproxy
vim haproxy.cfg 编辑haproxy配置文件
systemctl stop httpd 由于haproxy需要占用80端口,关闭apache防止冲突
systemctl restart haproxy
haproxy配置文件编辑:
haproxy监控的是server3、server4的80端口,此处只需打开他们的httpd
server3、server4:
systenmctl start httpd
server1:
curl 172.25.11.2 访问172.25.11.2发现负载均衡已实现
firefox:172.25.11.2/status 实现监控
负载均衡:
网页监控:
关闭server3中的apache效果:
实验2:haproxy独立日志+监控用户设置
1.haproxy独立日志的实现
vim /etc/sysconfig/rsyslog
/etc/sysconfig/rsyslog
vim haproxy.cfg
vim /etc/rsyslog.conf
systemctl restart rsyslog.service
cd /var/log
cat messages
cat messages
rsyslog.conf
此时访问172.25.1.2不会再在messages下产生日志,所有关于haproxy的日志都会在haproxy.log下产生
2.为网页监控设置用户登录
vim /etc/haproxy/haproxy.conf
systemctl restart haproxy.service
访问172.25.1.2:
此时需要输入用户名与密码才可访问监控页面
实验3:资源固定传输、权重算法+故障处理
1.资源固定传输算法
vim /etc/haproxy/haproxy.conf
systemctl restart haproxy.service
此时访问172.25.1.2只会分配给一个设备
2.权重算法
vim /etc/haproxy/haproxy.conf
systemctl restart haproxy.service
此时访问172.25.1.2,设备会按权重分配
3.故障处理
当server3、server4都gg时,我们需要一个背锅侠去告诉客户出现故障了,这里我们就用server2来当背锅侠,具体设置如下:
vim /etc/haproxy/haproxy.conf
systemctl restart haproxy.service
配置完成后需要修改各个服务器的httpd端口为相应数值
修改完成后,在色弱ver、server4正常工作时,server2并不会被访问到
server2:
vim index.html:
#写入以下内容
sorry,please try again later
server3、server4:
systemctl stop httpd
此时,server2成功背锅
实验4:访问黑名单+黑名单用户访问重定向
server2:
vim /etc/haproxy/haproxy.conf
systemctl restart haproxy.service
此时在除10外的主机访问172.25.1.2时都可以正常实现负载均衡
而在10用浏览器访问时,会自动跳转至报错页面:
会自动被定向至报错页面
也可直接将黑名单用户指定至指定页面:
而在10用浏览器访问时,会自动跳转至baidu: