使用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)
相关推荐
Full Stack Developme2 小时前
JVM 与 Linux 交互的核心原理
linux·运维·jvm
HackTwoHub3 小时前
最新Nessus2026.6.8版本主机漏洞扫描/探测工具Windows/Linux
linux·运维·服务器·安全·web安全·网络安全·安全架构
qq_163135753 小时前
Linux 【04-mkdir命令超详细教程】
linux
qq_163135753 小时前
Linux 【08-mv命令超详细教程】
linux
QWEDDRFTG3 小时前
C13/C19怎么选?服务器电源线电流与接口选型技巧
服务器
QWEDDRFTG5 小时前
服务器电源线怎么选?接口、电流、线径、认证一次讲清
服务器
qq_163135756 小时前
Linux 【07-rm命令超详细教程】
linux
zh路西法6 小时前
【SSH 免密登录全流程】Windows Linux 通用方案
linux·windows·ssh
ScilogyHunter7 小时前
GCC完全指南
linux·gcc
CodeStats7 小时前
从 CPU 指令到 JVM 进程:彻底讲透 Java 执行 main 方法时,类加载、主线程、栈帧入栈的完整底层逻辑
java·linux·开发语言