当前位置:   article > 正文

HAproxy_整个高可用haproxy集群系统的拓扑结构

整个高可用haproxy集群系统的拓扑结构

对调度软件做一个分析

Nginx

优点:

  • 工作在七层,可以针对http做分流策略
  • 1.9版本开始支持四层代理
  • 正则表达式比HAProxy强大
  • 安装、配置、测试简单、通过日志可以解决多数问题
  • 并发量可以达到几万次
  • Nginx还可以作为web服务器使用

缺点:

  • 仅支持http,https、mail协议、应用面小
  • 监控检查仅通过端口,无法使用url检查

LVS

优点:

  • 负载能力强,工作在四层,对内存,CPU消耗低
  • 配置性低,没有太多可配置性,减少人为错误
  • 应用面广,几乎可以作为所有应用提供负载均衡

缺点:

  • 不支持正则表达式,不能实现动静分离
  • 如果网站架构大,LVS-DR配置比较繁琐

HAProxy

优点:

  • 支持session、cookie功能
  • 可以通过url进行健康检查
  • 效率、负载均衡速度,高于Nginx,低于LVS
  • HAProxy支持TCP、可以对MySQL进行负载均衡
  • 调度算法丰富

缺点:

  • 正则弱于Nginx
  • 日志依赖与syslogd

HAProxy负载平衡集群

问题:

  • 准备四台Linux服务器,两台做web服务器,1台安装HAProxy,1台做客户机,实现如下功能
  • 客户端访问HAProxy,HAProxy分发请求到后端Real Server
  • 开启HAProxy监控页面,即使查看调度器状态
  • 设置HAProxy为开机启动

方案:

使用四台虚拟机,一台作为HAProxy调度器,2台作为Real Server、11台作为客户端,拓扑结构如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zf6nqQJd-1634918780370)(E:/Typort/image-20211022221336350.png)]

主机名网络配置
client192.168.4.10/24
proxy192.168.4.5/24
192.168.2.5/24
web1192.168.2.100/24
web2192.168.2.200//24

步骤:

实验开始之前,需要先配置相应的IP

步骤一:配置后端web服务器

web1
yum -y install httpd
echo "web1 192.168.2.100" > /var/www/html/index.html
systemctl start httpd

web2
yum -y install httpd
echo "web2 192.168.2.200" > /var/www/html/index.html
systemctl start httpd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

步骤二:部署HAProxy服务器

1)配置网络,安装软件

yum -y install haproxy
  • 1

2)修改配置文件

global  #全局设置
log         127.0.0.1 local2
    chroot      /var/lib/haproxy #工作目录  
    pidfile     /var/run/haproxy.pid  #haproxy的pid存放路径
    maxconn     4000   #最大连接数,默认4000
    user        haproxy
    group       haproxy
    daemon             #创建一个进程进入deamon模式运行在后台
defaults  #默认设置
    mode                    http    #默认模式{tcp四层调度|http七层调度|health健康检查}
    log                     global
    option                  httplog  #日志类别http日志格式
    option                  dontlognull  #不记录健康检查的日志信息
    option http-server-close    #每次请求完毕后主动关闭http
    option forwardfor       except 127.0.0.0/8 #后端服务器可以从http header中获得客户端IP
    option                  redispatch #serverid服务器挂掉以后强制定向到其他健康服务器
    retries                 3  #3次连接认为服务不可用
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m        #客户端连接超时
    timeout server          1m    #服务器连接超时
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000  #集群最大连接数
#haproxy有两种集群的格式
#frontend 名称 *:80
#    use_backend abc  
#backend abc
#    balance     roundrobin  #算法
#    server      web1
#    server		web2
#第二种
#listen 名称 *:80
#  balance     roundrobin  #算法
#    server      web1
#    server		web2
#--------------统计页面配置------------------
listen stats    
 bind 0.0.0.0:1080  #监听端口
    stats refresh 30s  #统计页面自动刷新时间
    stats url /stats  #统计页面url
    stats realm Haproxy Manager #进入管理界面查看状态信息
    stats auth admin:admin  #统计页面用户名和密码设置
 
listen server 
	bind 0.0.0.0:80
	balance roundrobin
	server web1 192.168.2.100:80 check inter 2000 rise 2 fall 5
	server web2 192.168.2.200:80 check inter 2000 rise 2 fall 5
#加了check开启健康检查
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

3)启动服务器并设置开机启动

systemctl restart haproxy.service
systemctl enable haproxy
  • 1
  • 2

步骤三:客户端验证

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DwR3ZvFc-1634918780373)(E:/Typort/image-20211022235431348.png)]

查看网页状态,在浏览器输入http://192.168.4.5:1080/stats ,测试调度器是否正常工作,用户密码都是我们刚刚配置文件定义的,用户admin,密码admin

在这里插入图片描述

备注

Queue队列数据的信息(当前队列数量,最大值,队列限制数量)

Session rate每秒会话率(当前值,最大值,限制数量)

Sessions总会话量(当前值,最大值,总量,Lbtot:total number of times a server was selected 选中一台服务器所用的总时间)

Bytes(入站,出站流量)

Denied(拒绝请求,拒绝回应)

Errors(错误请求,错误连接,错误回应)

Warning(从新尝试警告retry,重新连接redispatches)

Server(状态、最后检查的时间(多久前执行的最后一次检查)、权重、备份服务器数量,down机服务器数量、down机时长)

我们关闭web1服务器,查看调度器是否能正常显示

在这里插入图片描述

可以看出调度器成功识别web1已经不能工作

再次重新启动,调度器成功识别
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/303224
推荐阅读
相关标签
  

闽ICP备14008679号