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日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第1张图片

二、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日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第2张图片
  • 开启haproxy服务
  • systemctl start haproxy.service

03_测试

haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第3张图片
haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第4张图片

三、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

haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第5张图片
2. 重启服务:
systemctl reload haproxy.service
3. 访问测试
访问172.25.2.1/status 需要登陆
haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第6张图片
haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第7张图片

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

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

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    在这里插入图片描述
  2. 重启服务:
    systemctl reload haproxy.service
  3. 测试
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第8张图片
  4. 实验完改回rr算法,轮询调度,并重启服务

六、默认后端与备用后端

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

haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第9张图片 2. 重启服务:
systemctl reload haproxy.service
3. 在static的后端server2主机的发布目录下建立目录images,并传入一张图片

在这里插入图片描述
测试1:访问 172.25.2.1/status
haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第10张图片
测试2:访问172.25.2.1/images/vim.jpg

七、备用服务器backup

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第11张图片
  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
haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第12张图片
haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第13张图片
测试2:访问 172.25.2.1/status app1显示为红色宕机,backup接管。
haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第14张图片

八、黑名单与白名单

01_黑名单

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第15张图片
  2. 重启服务:
    systemctl restart haproxy.service
  3. 测试
    用黑名单中的主机访问172.25.2.1失败
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第16张图片
    其他主机可以正常访问
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第17张图片

02_白名单

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第18张图片
  2. 重启服务:
    systemctl restart haproxy.service
  3. 测试
    用白名单中的主机访问172.25.2.1成功
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第19张图片
    其他主机访问失败
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第20张图片

03_白名单为整个网段

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第21张图片
  2. 重启服务
    systemctl restart haproxy.service
  3. 测试
    白名单中的网段主机均可访问
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第22张图片haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第23张图片

九、重定向

01_黑名单403错误

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第24张图片

  2. 重启服务
    systemctl restart haproxy.service

  3. 测试
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第25张图片
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第26张图片

02_403错误后重定向

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第27张图片

  2. 重启服务
    systemctl restart haproxy.service

  3. 测试
    访问172.25.2.1,重定向。
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第28张图片
    网页访问172.25.2.1,直接跳转到百度。

03_直接重定向

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

  2. 重启服务
    systemctl restart haproxy.service

  3. 测试
    名单中的主机重定向
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第29张图片
    不在名单中的主机正常访问
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第30张图片

十、访问控制

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第31张图片

  2. 重启服务
    systemctl restart haproxy.service

  3. 测试
    名单中的主机禁止访问72.25.2.1/images/vim.jpg
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第32张图片
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第33张图片
    不在名单中的主机可以访问72.25.2.1/images/vim.jpg
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第34张图片

十一、读写分离

01_haproxy主机配置

  1. 编辑配置文件
    vim /etc/haproxy/haproxy.cfg
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第35张图片

  2. 重启服务
    systemctl restart haproxy.service

02_"读"主机配置

  1. server3的默认发布目录下有upload目录及两个php文件
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第36张图片
  2. 更改upload_file.php配置文件
    haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第37张图片
  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,上传图片成功
haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离_第38张图片
在写端server2的upload目录下有上传的图片。
在这里插入图片描述

你可能感兴趣的:(haproxy日志、算法、访问指定后端或本机、黑名单、重定向、访问控制、读写分离)