一、haproxy部署LB集群

1、haproxy介绍

  • 支持四层和七层的负载均衡

  • 支持acl功能,访问控制

  • 支持图形化监控

  • 多种调度算法

2、算法介绍

3、主配置文件

4、haproxy部署LB实验

1、环境准备

  • 四台网站服务器,一个代理服务器
# 61 62 63 64

# 代理服务器 80

  • 四个网站服务器编辑网站页面

2、proxy服务器配置

[root@proxy haproxy]# yum -y install haproxy.x86_64 

[root@proxy haproxy]# cat haproxy.cfg
#---------------------------------------------------------------------
# Example configuration for a possible web application. See the
# full configuration options online.
#
# https://www.haproxy.org/download/1.8/doc/configuration.txt
#
#--------------------------------------------------------------------- global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
user haproxy
group haproxy
daemon
maxconn 4000 defaults
mode http
log global
option httplog
option dontlognull
retries 3
timeout http-request 5s
timeout queue 1m
timeout connect 5s
timeout client 1m
timeout server 1m
timeout http-keep-alive 5s
timeout check 5s
maxconn 3000 frontend main
bind *:80
default_backend http_back backend http_back
balance roundrobin
server node1 127.0.0.1:5001 check
server node2 127.0.0.1:5002 check
server node3 127.0.0.1:5003 check
server node4 127.0.0.1:5004 check(做健康检查,default里面有配置的)
[root@proxy haproxy]#
  • 具体的参数
frontend main  # haproxy的名字,可以修改
bind *:80 # 监听后端服务器的端口都是80
default_backend http_back # 监听到了请求,将请求发送给这个http_back工作组 backend http_back # 配置网站服务器工作组
balance roundrobin # 调度算法,轮询
server node1(网站服务器起的名字) 127.0.0.1:5001 check
server node2 127.0.0.1:5002 check
server node3 127.0.0.1:5003 check
server node4 127.0.0.1:5004 check
  • 修改好的配置文件
frontend main
bind *:80
default_backend http_back backend http_back
balance roundrobin
server node1 192.168.200.61:80 check
server node2 192.168.200.62:80 check
server node3 192.168.200.63:80 check
server node4 192.168.200.64:80 check
  • 启动服务
[root@proxy haproxy]# systemctl restart haproxy.service 

[root@proxy haproxy]# netstat -pant|grep haproxy
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2563/haproxy

3、客户端测试

  • 访问代理服务器

  • 80主机上面的80端口,读取自己的配置文件,然后发送给http_back这个服务器组

  • 也就是分发给后台的服务器

[root@proxy haproxy]# curl 192.168.200.80
63
[root@proxy haproxy]# curl 192.168.200.80
64
[root@proxy haproxy]# curl 192.168.200.80
61
[root@proxy haproxy]# curl 192.168.200.80
62

5、haproxy通过acl实现业务分离

  • 把客户端的请求发送给后端不同的服务器组做负载均衡处理

  • 四台服务器分成2个工作组

  • 访问html请求由61,62处理

  • 访问.php(动态请求)交给63,64处理

  • 因此就需要配置不同的页面

  • 可以控制请求访问到指定的服务器,静态的页面访问指定服务器,动态请求访问指定服务器

1、配置nginx解析php脚本

# 停止 63 64 apache服务

# 配置63,64 nginx网站

# 实现对php脚本解析

# 允许访问index.php
location / {
root html;
index index.php index.html index.htm;
} # 取消注释
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
} # 64服务器也是这样配置的 # 安装软件包
[root@httpd-63 yum.repos.d]# yum -y install php php-devel php-fpm # 修改这个文件下的监听的方式,改为监听9000端口
[root@httpd-63 php-fpm.d]# pwd
/etc/php-fpm.d 38 ;listen = /run/php-fpm/www.sock
39 listen = 127.0.0.1:9000 # 启动php-fpm服务 [root@httpd-63 php-fpm.d]# netstat -pant|grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3748/php-fpm: maste # 编写php页面 [root@httpd-63 html]# pwd
/usr/share/nginx/html
[root@httpd-63 html]# cat index.php
<?php
echo "192.168.200.63\n";
?> # 64也是这样的

2、编写网站页面

# 61 62 服务器配置除了首页文件之外的a.html

# 但是内容不一样
[root@httpd-62 html]# cat a.html
62 a # 63 64 服务器配置其他的.php页面 [root@httpd-63 html]# cat a.php
<?php
echo "63 a \n"; ?>

3、haproxy配置acl

  • 当有多个acl的时候,通过名字来进行区分
frontend main
bind *:80
default_backend http_back acl htmlpage(取的名字) path_end(基于文件后缀来进行匹配) .html (匹配的.html页面)
acl phppage path_end .php use_backend htmlweb if htmlpage # 匹配到了htmlpage的请求的话,转发给 htmlweb这个服务器组
use_backend phpweb if phppage # curl localhost 的请求转发给 61 62 服务器
backend http_back
balance roundrobin
server node1 192.168.200.61:80 check
server node2 192.168.200.62:80 check # curl localhost/a.html 请求转发给 61 62 服务器
backend htmlweb
balance roundrobin
server node1 192.168.200.61:80 check
server node2 192.168.200.62:80 check # curl localhost/a.php 请求转发给 63 64 服务器
backend phpweb
balance roundrobin
server node3 192.168.200.63:80 check
server node4 192.168.200.64:80 check

4、客户端测试

[root@proxy haproxy]# curl localhost
61
[root@proxy haproxy]# curl localhost
62
[root@proxy haproxy]# curl localhost/a.html
61 a
[root@proxy haproxy]# curl localhost/a.html
62 a
[root@proxy haproxy]# curl localhost/a.php
64 a
[root@proxy haproxy]# curl localhost/a.php
63 a

5、要点

  • acl有多个匹配规则,上面的path_end是根据文件名后缀来进行匹配的

  • 还有基于以下的方式

    • 基于 IP 地址的 ACL

    • 基于 URL 路径的 ACL

    • 基于端口的 ACL

    • 基于请求头的 ACL

    • 等等

二、启动haproxy的web页面

  • 修改配置文件,就能看到这个软件提供的web页面

  • 就是一个健康页面,可以看到访问的次数等等

  • 用的listen定义的端口

# 在最下面写即可

listen monitor_page
bind 0.0.0.0:8088 # 监听的端口
mode http
stats refresh 5s # 几秒刷新页面
stats uri /stats
stats auth admin:123456 # 重启haproxy服务
  • 浏览器访问
192.168.200.80:8088/stats

  • 可以仔细观察里面的颜色,不同的颜色代表不同的状态

  • 停掉一个61服务,发现变成了红色了

haproxy搭建负载均衡的更多相关文章

  1. 基于 Haproxy 构建负载均衡集群

    1.HAPROXY简介 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种负载均衡解决方案.HAProxy特别适用于那些负载特大的web ...

  2. 05.haproxy+mysql负载均衡 整合 redis集群+ssm

    本篇重点讲解haproxy+mysql负载均衡,搭建完成后与之前搭建的redis+ssm进行整合 (注:这里用到了两台mysql数据库,分别安装两台虚拟机上,已经成功实现主主复制,如果有需要,请查看我 ...

  3. Haproxy 构建负载均衡集群

    1.HAPROXY简介 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种负载均衡解决方案.HAProxy特别适用于那些负载特大的web ...

  4. node + nginx + mongo搭建负载均衡

    基于node和nignx和mongo搭建负载均衡 nginx配置: upstream back {                                                  # ...

  5. HAProxy 的负载均衡服务器,Redis 的缓存服务器

    问答社区网络 StackExchange 由 100 多个网站构成,其中包括了 Alexa 排名第 54 的 StackOverflow.StackExchang 有 400 万用户,每月 5.6 亿 ...

  6. 实现基于Haproxy+Keepalived负载均衡高可用架构

    1.项目介绍: 上上期我们实现了keepalived主从高可用集群网站架构,随着公司业务的发展,公司负载均衡服务已经实现四层负载均衡,但业务的复杂程度提升,公司要求把mobile手机站点作为单独的服务 ...

  7. Haproxy+Keepalived负载均衡

    Haproxy介绍 HAProxy是一个特别适用于高可用性环境的TCP/HTTP开源的反向代理和负载均衡软件.在7层负载均衡方面的功能很强大(支持cookie track, header rewrit ...

  8. 在Windows环境中使用Nginx, Consul, Consul Template搭建负载均衡和服务发现服务

    搭建负载均衡和服务发现服务的目的 随着网站业务的不断提升,单个服务器的性能越来越难满足客户的业务需求,所以很多情况下,需要使用多服务器实例和负载均衡器来满足业务需要. Nginx 什么是Nginx N ...

  9. Nginx-Tomcat搭建负载均衡(转载)

    一.   工具 nginx-1.8.0 apache-tomcat-6.0.33 二.    目标 实现高性能负载均衡的Tomcat集群: 三.    步骤 1.首先下载Nginx,要下载稳定版: 2 ...

  10. 使用 Nginx + Tomcat 搭建负载均衡

    负载均衡 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用性. 负载均衡,英文名称为Load Balance, ...

随机推荐

  1. 一些软件、jar包下载链接、方法

    目录 jar包下载 dbutils C3P0 软件下载 TeamViewer 远程桌面 EV录屏 SublimeText 编辑器 feiQ 通信 文件共享 jdk 8u171 下载 jar包下载 db ...

  2. 【BUG】PHP Warning: ‘C:\\WINDOWS\\SYSTEM32\\VCRUNTIME140.dll‘ 14.0 is not compatible with this PHP bu

      当使用PHP8.0时,你可能会遇到这个报错: PHP Warning: 'C:\\WINDOWS\\SYSTEM32\\VCRUNTIME140.dll' 14.0 is not compatib ...

  3. TensorFlow 基础 (03)

    项目再忙碌, 还是要抽出时间来学习的. 最近到整一些数据清洗小工具, 数据导入数据库工具等... 有种感觉是, 之前我做分析师的时候, 啥工具都没有, 全部我自己造, 数据表整理, 业务整理, 建库建 ...

  4. 操作系统:Linux如何获取所有设备信息

    本节了解下Linux是如何管理设备的,将从Linux如何组织设备开始,然后研究设备相关的数据结构,最后写一个Linux设备驱动实例. 感受一下Linux下的设备信息 Linux的设计哲学是一起皆是文件 ...

  5. C#之Stream和IO

    C#之Stream和IO public class test { public int aa = 100; public string testStr = "test"; publ ...

  6. wireshark的所有入门指令(总结与摘要)

    wireshark的所有指令 常用捕获过滤器 1.基于IP地址进行捕获 host 10.3.1.1 dst host 10.3.1.1 net 192.168.1.0/24 net 192.168.1 ...

  7. C# 在Excel中设置文本的对齐方式、换行、旋转

    在 Excel 中,对齐.换行和旋转是用于设置单元格内容显示方式的功能.合理的设置这些文本选项可以帮助用户更好地组织和展示 Excel 表格中的数据,使表格更加清晰.易读,提高数据的可视化效果.本文将 ...

  8. consul在netcore中发现服务和运行状况检查

    在这篇文章中,我们将快速了解什么是服务发现,使用consul实现一个基本的服务基础设施:使用asp.net核心mvc框架,并使用dns client.net实现基于dns的客户端服务发现. Servi ...

  9. DevOps 需要处理的工作

    本文纯属个人工作记录: 1.部署Linux服务器 2.安装Docker 3.在Docker中安装Gitlab和runner 4.设置Gitlab pipline,即CI/CD 5.可能需要Jenkin ...

  10. Visual Studio 17.3

    Visual Studio 2022 17.3新UI