【HAProxy】haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离

一、haproxy简介

  1. HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
  2. HAProxy 实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作。
  3. HAProxy 支持连接拒绝 : 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。 这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。
  4. HAProxy 支持全透明代理(已具备硬件防火墙的典型特点): 可以用客户端IP地址或者任何其他地址来连接后端服务器. 这个特性仅在Linux 2.4/2.6内核打了cttproxy补丁后才可以使用. 这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。

更多参考:HAProxy用法详解

补充:进程与线程
进程是资源分配的最小单位,线程是CPU调度的最小单位
做个简单的比喻:进程=火车,线程=车厢
在这里插入图片描述

二、haproxy与lvs

01_RS配置

  • 删除VIP:
    ip addr del 172.25.2.100/24 dev eth0
  • 清除filter 所有规则
    arptables -F

02_DS配置

  • DS1和DS4停掉keepalived和http服务
    systemctl stop keepalived.service
    systemctl stop httpd.service
  • 安装haproxy
    yum install -y haproxy
    更改配置文件
    vim /etc/haproxy/haproxy.cfg
    在这里插入图片描述
  • 开启haproxy服务
  • systemctl start haproxy.service

03_测试

在这里插入图片描述
在这里插入图片描述

三、haproxy日志配置

  1. 编辑日志配置文件
    vim /etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514#开启日志端口
*.info;mail.none;authpriv.none;cron.none;local2.none    /var/log/messages #关于local2的日志不记录
local2.*                                                /var/log/haproxy.log #只记录关于local2的所有日志
  1. 重启日志服务
    systemctl restart rsyslog.service
  2. 开启haproxy服务
    systemctl start haproxy.service
  3. 查看日志
    cat /var/log/haproxy.log
    在这里插入图片描述
    在这里插入图片描述

四.、haproxy设置加密访问

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    stats uri /status #设置统计页面的uri为/status
    stats auth admin:westos #设置统计页面认证的用户和密码
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  main *:80#前端名称为main,端口号为80
#    acl url_static       path_beg       -i /static /images /javascript /stylesheets
#    acl url_static       path_end       -i .jpg .gif .png .css .js

#    use_backend static          if url_static
    default_backend             app#默认后端,名称为app

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
#backend static
#    balance     roundrobin
#    server      static 127.0.0.1:4331 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app #后段
    balance     roundrobin#rr调度算法
    server  app1 172.25.2.2:80 check
    server  app2 172.25.2.3:80 check

在这里插入图片描述
2. 重启服务:
systemctl reload haproxy.service
3. 访问测试
访问172.25.2.1/status 需要登陆
在这里插入图片描述
在这里插入图片描述

五、haproxy设置source调度算法(源IP哈希)

将请求的源地址进行hash运算,并由后端服务器的权重总数相除后派发至某匹配的服务器.这可以使得同一个客户端IP的请求始终被派发至某特定的服务器.不过,当服务器权重总数发生变化时,如某服务器宕机或添加了新的服务器,许多客户端的请求可能会被派发至与此前请求不同的服务器.常用于负载均衡无cookie功能的基于TCP的协议.其默认为静态,不过也可以使用hash-type修改此特性

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    在这里插入图片描述
  2. 重启服务:
    systemctl reload haproxy.service
  3. 测试
    在这里插入图片描述
  4. 实验完改回rr算法,轮询调度,并重启服务

六、默认后端与备用后端

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg

在这里插入图片描述 2. 重启服务:
systemctl reload haproxy.service
3. 在static的后端server2主机的发布目录下建立目录images,并传入一张图片

在这里插入图片描述
测试1:访问 172.25.2.1/status
在这里插入图片描述
测试2:访问172.25.2.1/images/vim.jpg
在这里插入图片描述

七、备用服务器backup

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    在这里插入图片描述
  2. 修改Apache端口号为8080,开启httpd
    vim /etc/httpd/conf/httpd.conf
    在这里插入图片描述
  3. 重启服务:
    systemctl reload haproxy.service
  4. server3宕机
    systemctl stop httpd.service

测试1:访问172.25.2.1
在这里插入图片描述
在这里插入图片描述
测试2:访问 172.25.2.1/status app1显示为红色宕机,backup接管。
在这里插入图片描述

八、黑名单与白名单

01_黑名单

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    在这里插入图片描述
  2. 重启服务:
    systemctl restart haproxy.service
  3. 测试
    用黑名单中的主机访问172.25.2.1失败
    在这里插入图片描述
    其他主机可以正常访问
    在这里插入图片描述

02_白名单

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    在这里插入图片描述
  2. 重启服务:
    systemctl restart haproxy.service
  3. 测试
    用白名单中的主机访问172.25.2.1成功
    在这里插入图片描述
    其他主机访问失败
    在这里插入图片描述

03_白名单为整个网段

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    在这里插入图片描述
  2. 重启服务
    systemctl restart haproxy.service
  3. 测试
    白名单中的网段主机均可访问
    在这里插入图片描述在这里插入图片描述

九、重定向

01_黑名单403错误

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    在这里插入图片描述

  2. 重启服务
    systemctl restart haproxy.service

  3. 测试
    在这里插入图片描述
    在这里插入图片描述

02_403错误后重定向

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    在这里插入图片描述

  2. 重启服务
    systemctl restart haproxy.service

  3. 测试
    访问172.25.2.1,重定向。
    在这里插入图片描述
    网页访问172.25.2.1,直接跳转到百度。

03_直接重定向

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    在这里插入图片描述

  2. 重启服务
    systemctl restart haproxy.service

  3. 测试
    名单中的主机重定向
    在这里插入图片描述
    不在名单中的主机正常访问
    在这里插入图片描述

十、访问控制

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    在这里插入图片描述

  2. 重启服务
    systemctl restart haproxy.service

  3. 测试
    名单中的主机禁止访问72.25.2.1/images/vim.jpg
    在这里插入图片描述
    在这里插入图片描述
    不在名单中的主机可以访问72.25.2.1/images/vim.jpg
    在这里插入图片描述在这里插入图片描述

十一、读写分离

01_haproxy主机配置

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    在这里插入图片描述

  2. 重启服务
    systemctl restart haproxy.service

02_"读"主机配置

  1. server3的默认发布目录下有upload目录及两个php文件
    在这里插入图片描述
  2. 更改upload_file.php配置文件
    在这里插入图片描述
  3. 增加upload目录权限
    chmod 777 /var/www/html/upload
  4. 安装php
    yum install -y php
  5. 重启apache
    systemctl restart httpd.service
  6. 将文件upload_file.php拷贝给“写”server2段
    scp upload_file.php server2:/var/www/html/

03_"写"主机配置

  1. 在/var/www/html下创建upload目录
    mkdir upload
  2. 增加upload目录权限
    chmod 777 /var/www/html/upload
  3. 安装php
    yum install -y php
  4. 重启apache
    systemctl restart httpd.service

测试:访问172.25.2.1/index.php,上传图片成功
在这里插入图片描述
在写端server2的upload目录下有上传的图片。
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值