HAProxy(负载均衡,重定向,读写分离,动静分离)

HAProxy是一款强大的负载均衡器,适用于处理大量web流量。它支持四层和七层代理,确保高可用性和会话保持。配置包括global、default、frontend、backend和listen五个部分。在负载均衡场景中,HAProxy能动态选择后端服务器。通过配置,可以实现动静分离,例如将静态资源和动态内容分别托管在不同服务器上。此外,HAProxy还支持健康检查,当服务器异常时自动从负载池中移除。重定向功能则包括301(永久重定向)和302(临时重定向),可用于错误页面跳转。实验结果显示,HAProxy能够成功执行重定向操作并实现读写分离,优化数据库读写性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HAProxy简介:

  • HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机。其比较适用于负载比较大的web站点,这些站点需要保持会话,所以在七层处理。
  • Haproxy配置中分成五部分内容,当然这些组件不是必选的,可以根据需要选择作为配置。
    • global:参数是进程级的,通常和操作系统(OS)相关。这些参数一般只设置一次,如果配置无误,就不需要再次配置进行修改;

    • default:配置默认参数的,这些参数可以被利用配置到frontend,backend,listen组件;

    • frontend:接收请求的前端虚拟节点,Frontend可以根据规则直接指定具体使用后端的backend(可动态选择);

    • backend:后端服务集群的配置,是真实的服务器,一个Backend对应一个或者多个实体服务器;

    • listen:Frontend和Backend的组合体

HAProxy配置:

  1. 负载均衡
    代理服务器上:
yum install haproxy -y			##安装haproxy
cd /etc/haproxy/			
vim haproxy.cfg 				##编写其配置文件
systemctl start haproxy			##开启haproxy服务
systemctl status haproxy
ps aux							##查看其端口状态
vim haproxy.cfg
将除了global,defaults全部注释,加如以下部分,定义real server。
listen admin *:8080
        stats enable
        stats uri /status       ##监控页面的地址
        stats auth admin:westos ##帐号和密码
        stats refresh           ##刷新的频率

listen westos *:80              ##监听的实例名称 地址与端口
        balance roundrobin
        server web1 172.25.30.2:80 check
        server web2 172.25.30.3:80 check

真实服务器上操作相同:

yum install httpd -y		##安装httpd服务
systemctl start httpd		##开启httpd服务
cd /var/www/html/		
echo server2 >index.html	##编辑初始界面

在这里插入图片描述
在这里插入图片描述haproxy支持后端真实服务器检查,当某一个真实主机宕机后,会将其移出轮询队列,并在后端监控页面,显示红色异常。
当手动将服务机2的服务停止后:
在这里插入图片描述
在这里插入图片描述
2. 动静分离
代理机:

vim /etc/rsyslog.conf         ##编辑配置文件日志服务
systemctl restart rsyslog   ##重启日志服务
vim /etc/haproxy/haproxy.cfg ##编辑haproxy配置软件
systemctl restart haproxy		##重启haproxy配置服务
yum install httpd -y			##安装httpd服务
vim /etc/httpd/conf/httpd.conf   ##修改httpd端口,由于其端口80已经被haproxy占用
cd /var/www/html/
ls
echo server1> index.html         ##编辑httpd初始界面
systemctl restart httpd			 ##重启httpd服务
vim /etc/rsyslog.conf         ##编辑配置文件日志服务
 14 # Provides UDP syslog reception   使用UDP传输协议
 15 $ModLoad imudp
 16 $UDPServerRun 514
 55 local2.*                 /var/log/haproxy.log     ##定义其生成本地日志位置
vim haproxy.cfg
将除了global,defaults全部注释,加如以下部分,定义real server,以及访问策略。
listen admin *:8080
        stats enable
        stats uri /status     ##监控页面地址
        stats auth admin:westos  ##帐号与密码
        stats refresh            ##刷新的频率
frontend main *:80       ##监控haproxy80端口
   acl url_static       path_beg        -i /images    ##定义以/images开头使用url_static
   acl url_static       path_end        -i .jpg .gif .png  ##定义以.jpg 等结尾使用策url_static 
   use_backend static           if url_static             ##若为策略url_static,使用static接口
   default_backend              app                       ##默认为app

backend static
        server web2 172.25.30.2:80 check         ##访问2主机上的80端口
backend app
        server web1 172.25.30.3:80 check         ##访问3的80端口
        server local 172.25.30.1:8000 backup     ##若3的服务失效,本机充当备机

真实服务机(一台服务器存储图片,根据配置文件是server2,至于server3是静态显示页面):

cd /var/www/html/
ls
mkdir images 
mv 1.png images/

在这里插入图片描述
若服务机3停止:
在这里插入图片描述
在这里插入图片描述
3. 重定向
重定向分为两种301与302状态。
301:永久重定向,将原始界面资源永久的重定向到新的页面中。
302:暂时重定向
拒绝访问:在动静分离的基础上。

 vim /etc/haproxy/haproxy.cfg 
 systemctl restart haproxy
vim /etc/haproxy/haproxy.cfg
将除了global,defaults全部注释,加如以下部分,定义real server,以及访问策略。
listen admin *:8080
        stats enable
        stats uri /status     ##监控页面地址
        stats auth admin:westos  ##帐号与密码
        stats refresh            ##刷新的频率
frontend main *:80
   acl url_static       path_beg        -i /images
   acl url_static       path_end        -i .jpg .gif .png
  # use_backend static          if url_static
        acl badhost src 172.25.30.250     ##规定禁止访问主机的ip
        redirect location http://172.25.30.1:8000 if badhost  ##如果出现错误访问就重定向 不管出>现什么错误
        use_backend static              if url_static
         default_backend                app  ##默认为app

backend static
        server web2 172.25.30.2:80 check

backend app
        server web1 172.25.30.3:80 check

实验结果:由于我们禁止主机访问,所以当主机在浏览器中访问是,就会重定向到代理机的httpd初始页面。
在这里插入图片描述
使用真实主机访问是就出现真实定义界面。
在这里插入图片描述
重定向:
代理服务机:

vim /etc/haproxy/haproxy.cfg         ##编辑haproxy配置文件
systemctl restart haproxy			 ##重启haproxy服务
vim /etc/haproxy/haproxy.cfg         ##编辑haproxy配置文件
将除了global,defaults全部注释,加如以下部分,定义real server,以及访问策略。
listen admin *:8080
        stats enable
        stats uri /status     ##监控页面地址
        stats auth admin:westos  ##帐号与密码
        stats refresh            ##刷新的频率
frontend main *:80
   acl url_static       path_beg        -i /images
   acl url_static       path_end        -i .jpg .gif .png
   acl westos.org hdr_beg(host)    -i   westos.org
   acl 172.25.30.1 hdr_beg(host)   -i   172.25.30.1
   redirect code 301 location http://www.westos.org if westos.org  ##以westos访问重定向到www.westos.com
   redirect code 301 location http://www.westos.org if 172.25.30.1  ##以172.25.30.1访问就重定向>到www.westos.com
        use_backend static              if url_static
         default_backend                app  ##默认为app

backend static
        server web2 172.25.30.2:80 check

backend app
        server web1 172.25.30.3:80 check

实验结果:
在这里插入图片描述
在这里插入图片描述
4. 读写分离
在重定向的基础上。
代理服务机:

vim /etc/haproxy/haproxy.cfg         ##编辑haproxy配置文件
systemctl restart haproxy			 ##重启haproxy服务
vim /etc/haproxy/haproxy.cfg         ##编辑haproxy配置文件
将除了global,defaults全部注释,加如以下部分,定义real server,以及访问策略。
listen admin *:8080
        stats enable
        stats uri /status     ##监控页面地址
        stats auth admin:westos  ##帐号与密码
        stats refresh            ##刷新的频率
frontend main *:80
   acl url_static       path_beg        -i /images
   acl url_static       path_end        -i .jpg .gif .png
   acl read method GET
   acl read method HEAD
   acl write method PUT
   acl write method POST
use_backend static              if write      ##如果是写策略,就访问static服务器,保存到主机2.
default_backend                app  ##默认为app,如果是读,就读服务器3.

backend static
        server web2 172.25.30.2:80 check
backend app
        server web1 172.25.30.3:80 check
        server local 172.25.30.1:8000 backup

真实服务机(server2):

yum install php -y          ##安装php
cd /mnt/
cd upload/                  ##php推送图片界面
mv * /var/www/html/
/var/www/html/
vim upload_file.php         ##修改图片尺寸大小
     5 && ($_FILES["file"]["size"] < 2000000))
cd /mnt/
mv upload /var/www/html/
cd -
chmod 777 upload            ##添加读写权限
systemctl restart httpd     ##重启httpd服务

真实服务机(server3):
只做为读的服务机界面,不需要进行写推送。
实验:
http://172.25.30.1/index.php
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值