使用HAProxy实现动静分离

解读:

  • 使用haproxy的ACL访问控制实现调度后端服务的动静分离
  • 每个RS上都部署相同业务实现负载均衡

实验环境

主机名 IP OS
haproxy eth0:172.25.254.100 Rocky Linux9.6
rs1 eth0:172.25.254.10 Rocky Linux9.6
rs2 eth0:172.25.254.20 Rocky Linux8.6

流程图

网络配置

网络配置使用自定义脚本来快速设置IP网关DNS主机名等

bash 复制代码
[root@haproxy ~]# vmset.sh eth0 172.25.254.100 haproxy
[root@rs1 ~]# vmset.sh eth0 172.25.254.10 rs1
[root@rs2 ~]# vmset.sh eth0 172.25.254.20 rs2

业务部署

RS部署web服务

bash 复制代码
[root@rs1 ~]# dnf install nginx -y
[root@rs2 ~]# dnf install nginx -y
[root@rs1 ~]# systemctl enable --now nginx
[root@rs2 ~]# systemctl enable --now nginx

[root@rs1 ~]# echo rs1 - webserver1 > /usr/share/nginx/html/index.html
[root@rs1 ~]# curl localhost
rs1 - webserver1

[root@rs2 ~]# echo rs2 - webserver2 > /usr/share/nginx/html/index.html
[root@rs2 ~]# curl localhost
rs2 - webserver2

RS2部署php

bash 复制代码
[root@rs2 ~]# dnf install php -y
[root@rs2 ~]# systemctl enable --now php-fpm

nginx添加php解析

bash 复制代码
[root@rs1+2 ~]# vim /etc/nginx/nginx.conf
server {
......
	location ~ \.php$ {
            root /usr/share/nginx/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  				      
            $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
[root@rs1+2 ~]# systemctl restart nginx.service

测试是否能访问

haproxy部署

安装haproxy

bash 复制代码
[root@haproxy ~]# dnf install haproxy -y

编写haproxy规则

bash 复制代码
[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg
......
frontend webcluster
    bind    172.25.254.100:80

    acl url_static path_end -i .jpg .png .css .js .html
    acl url_php path_end -i .php

    use_backend webservera if url_static
    use_backend webserverb if url_php

backend webservera
    server web1 172.25.254.10:80 check
    server web2 172.25.254.20:80 check
backend webserverb
    server web1 172.25.254.10:80 check
    server web2 172.25.254.20:80 check

[root@haproxy ~]# systemctl enable --now haproxy.service

测试

k

server web2 172.25.254.20:80 check

root@haproxy \~\]# systemctl enable --now haproxy.service **测试** ![image-20260130183554123](https://i-blog.csdnimg.cn/img_convert/b9bbf674a271b53e45c548118a636bb0.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/deea89651ade40f6b9dc83394f5c793c.png#pic_center)

相关推荐
wj3055853783 小时前
课程 9:模型测试记录与 Prompt 策略
linux·人工智能·python·comfyui
abigriver3 小时前
打造 Linux 离线大模型级语音输入法:Whisper.cpp + 3090 显卡加速与 Rime 中英混输终极调优指南
linux·运维·whisper
wangqiaowq4 小时前
windows下nginx的安装
linux·服务器·前端
YYRAN_ZZU4 小时前
Petalinux新建自动脚本启动
linux
charlie1145141914 小时前
嵌入式Linux驱动开发pinctrl篇(1)——从寄存器到子系统:驱动演进之路
linux·运维·驱动开发
于小猿Sup5 小时前
VMware在Ubuntu22.04驱动Livox Mid360s
linux·c++·嵌入式硬件·自动驾驶
cen__y5 小时前
Linux12(Git01)
linux·运维·服务器·c语言·开发语言·git
不仙5206 小时前
VMware Workstation 26.0.0 在 Ubuntu 24.04 (内核 6.17.0) 上的安装与内核模块编译问题
linux·ubuntu·elasticsearch
189228048617 小时前
NY352固态MT29F32T08GWLBHD6-24QJ:B
大数据·服务器·人工智能·科技·缓存
AI视觉网奇7 小时前
linux 检索库 判断库是否支持
java·linux·服务器