haproxy的简单配置与应用

40 篇文章 1 订阅
24 篇文章 0 订阅

haproxy与nginx对比


haproxy是跟nginx相似的一个负载均衡产品,它们有如下的特点:
二者现在都能支持http/tcp/udp的负载均衡,nginx的采用类似编程语言的配置,用文档结构表示配置关系,看起来比较清晰,
haproxy的配置有点像网络设备,定义和引用,有时候搞清一个逻辑需要上下来回翻看。
nginx是master-workers多进程,每个进程单线程,多核CPU能充分利用;
haproxy是多线程,单进程就能实现超高性能,虽然haproxy也能多进程,但是网上资料多认为开了多进程也不能提升性能,不建议多进程跑。
即使做反向代理nginx性能略低于haproxy,但实际两者性能都超高,性能问题几乎不用担心。
各自特点如下:
nginx:
使用花括号,层级化的配置文件结构
除了自带的map、if语句可以实现简单逻辑,原生支持js/perl脚本,非官方支持lua
除了做负载均衡还可以做静态web服务器,缓存服务器(Haproxy不行)
模块化,按需编译,因为模块化,所以可选很多第三方扩展模块
开源版本只有基础功能,更多的功能要折腾第三方模块,或者花钱买官方扩展版的nginx plus
haproxy:
定义和引用,命令式的配置结构
支持acl,但不支持其他脚本语言(评论里有人说现在可以支持了)
做负载均衡性能比nginx好
有一个状态统计页面
官方支持会话保持、健康检查等(nginx开源版不带)
基础功能覆盖要比nginx开源版好,但是不易扩展,缺乏第三方资源。


haproxy的安装

#首先需要安装rsyslog服务
yum install rsyslog
vi /etc/rsyslog.conf
#修改与增加如下的内容:
#开户网络服务
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
#开启日志规则与存储位置
local2.*   /var/log/syslog
#启动rsyslog
systemctl start rsyslog
#测试rsyslog
logger --port 514 --priority local2.info --server 127.0.0.1 --tag test hello
#安装haproxy
yum install haproxy

haproxy的配置
 

#首先启动两个http服务作为测试的后端
docker run -d --name http1 -p 81:80 httpd
docker run -d --name http2 -p 82:80 httpd
#修改其中一个容器的网页内容
docker exec -it http2 bash
cd htdocs
sed -i 's/works/works2/g' index.html
#将it works 改成 it works2.
#配置haproxy /etc/haproxy/haproxy.cfg
#大部分的配置都不需要修改,把不需要的注释起来,这里需要对比增加的内容示例如下:
global   
    log         127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 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
    listen stats #打开状态报告的功能
    mode http
    bind 0.0.0.0:1080 #打开状态报告的功能
    stats enable
    stats uri /haproxyadmin #打开状态报告的功能的链接路由
frontend www #配置的前端
  bind *:80
  mode http
  log global
  default_backend app
backend app
  balance roundrobin
  server app1 192.168.42.73:81 cookie 1 check inter 5000 rise 3 fall 3 weight 1
  server app2 192.168.42.73:82 cookie 1 check inter 5000 rise 3 fall 3 weight 10
  # cookie 1 代表持久连接
  # check 健康检查
  # inter 5000 5秒检查一次
  # rise 3 fall 3 3次都失败就踢出去,3次成功就加进来
  # weight 权重

启动我们的haproxy
 

systemctl start haproxy
curl http://127.0.0.1
#这里可以看到多次的请求会自动转发到不同的后端上

查看我们的状态报告
http://#.#.#.#:1080/haproxyadmin

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值