linux学习

HAProxy介绍与配置

HAProxy的介绍

1 HAProxy简介

HAProxy(High Availability Proxy)是一个款免费的开放源代码软件,提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。使用HAProxy作为负载均衡的调度器适用于负载特别大的Web站点。

HAProxy的运行模式使得它可以简单安全地整合到用户当前的架构中,同时可以保护用户的Web服务器不被暴露到网络上。

2 衡量负载均衡器性能的因素

  • 1、Session rate 会话率:每秒钟产生的会话数
  • 2、Session concurrency 并发会话数:服务器处理会话的时间越长,并发会话数越多
  • 3、Data rate 数据速率:以MB/s或Mbps衡量

3 HAProxy工作模式

  • 1、mode http:只适用于web服务,客户端请求被深度分析后再发往服务器
  • 2、mode tcp:适用于各种服务,4层调度,不检查第七层信息
  • 3、mode health:仅做健康检查,很少使用

HAProxy配置

HAProxy的配置文件为/etc/haproxy/haproxy.cfg。

配置文件中,global是全局配置;default是缺省配置,如果后续有和default相同的配置,default配置将会被覆盖。

配置文件中,frontend描述haproxy如何与用户交互;backend描述haproxy如何与后台应用服务器交互,这两个选项一般不单独使用,而是合并到一起名为listen。

  • default,为后续的其他部分设置缺省参数,缺省参数可以被后续部分重置
  • listen,定义服务器集群

1、“global”配置段,用于设定全局配置参数

global
log 127.0.0.1 local2 
chroot /usr/local/haproxy
pidfile /var/run/haproxy.pid   # haproxy的pid存放路径
maxconn 4000                 # 最大连接数,默认4000
user haproxy                # 运行haproxy用户身份
group haproxy
daemon 

2、proxy相关配置段“defaults”默认配置项

defaults
mode http               # 默认的模式mode { tcp|http|health }
log global              # 采用全局定义的日志
option dontlognull      # 不记录健康检查的日志信息
option httpclose        # 每次请求完毕后主动关闭http通道
option httplog          # 日志类别http日志格式
option redispatch       # serverid服务器挂掉后强制定向到其他健康服务器
timeout client 300000   # 客户端连接超时
timeout server 300000   # 服务器连接超时
maxconn  60000          # 最大连接数
retries  3     

3、proxy相关配置段“listen”定义服务器集群配置项

listen myweb                        # 定义虚拟服务器
         bind 0.0.0.0:80            # 监听在所有可用地址的80端口
         balance roundrobin         # 定义轮询调度算法
        server web1 192.168.88.100:80 check inter 2000 rise 2 fall 5
        server web2 192.168.88.200:80 check inter 2000 rise 2 fall 5         
        # 对web服务器做健康检查,2秒检查一次,如果连续2次检查成功,认为服务器是健康的,如果连续5次检查失败,认为服务器坏了
  listen stats                      # 定义虚拟服务器
        bind 0.0.0.0:1080           # 监听在所有可用地址的1080端口
        stats refresh 30s           # 设置监控页面自动刷新时间为30秒
        stats uri /stats            # 定义监控地址是/stats
        stats auth admin:admin      # 监控页面的用户名和密码都是admin

管理服务:

# 开启 haproxy 服务
[root@svr1 ~]# systemctl start haproxy

# 停止 haproxy 服务
[root@svr1 ~]# systemctl stop haproxy

# 设置开机自启 haproxy 服务
[root@svr1 ~]# systemctl status haproxy

案例:

使用3台虚拟机,一台调度器,两台web服务器

web服务器:需要安装httpd服务,配置网页并且启动服务

安装HAProxy

[root@lvs1 ~]# yum -y install haproxy

修改配置文件

[root@lvs1 ~]# vim /etc/haproxy/haproxy.cfg 

# 结尾添加
listen webs *: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

# 测试
[root@lvs1 ~]# curl 192.168.4.5
100     #web1
[root@lvs1 ~]# curl 192.168.4.5
200     #web2
[root@lvs1 ~]# curl 192.168.4.5
100     #web1
[root@lvs1 ~]# curl 192.168.4.5
200     #web2
[root@lvs1 ~]# curl 192.168.4.5
100     #web1

留言

您的邮箱地址不会被公开。 必填项已用 * 标注