使用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)
相关推荐
你好潘先生2 小时前
别再记命令了,用 yeero do 说句人话就能跑脚本,而且不烧 token
服务器·python·命令行
orion5714 小时前
Missing Semester Class1:course overview and introduction of shell
linux
用户1204872216120 小时前
Linux驱动编译与加载
linux·嵌入式
程序员老赵1 天前
服务器文件不想 SFTP 上传?Docker 跑个 File Browser,浏览器就能管理
服务器·docker·开源
vivo互联网技术1 天前
从 10 分钟到 1 秒:ES 深度分页任意跳页的三轮优化实战
服务器·数据库·redis·elasticsearch·深度分页
用户805533698031 天前
Input 子系统架构:Core、Handler、Driver 三层是怎么协作的
linux·嵌入式
用户805533698031 天前
RK-Forge外设系列开篇 - 把板子从「能启动」变成「能用」:Ethernet/SPI/MMC 三个纯接线外设
linux·github·嵌入式
七歌杜金房2 天前
我终于又有了自己的 Linux 电脑
linux·debian·mac
tntxia3 天前
linux curl命令详解_curl详解
linux