0
点赞
收藏
分享

微信扫一扫

SLB负载均衡haproxy的安装及使用


1.介绍

HAProxy是什么

HAProxy是一个免费的负载均衡软件,可以运行于大部分主流的Linux操作系统上。

HAProxy提供了L4(TCP)和L7(HTTP)两种负载均衡能力,具备丰富的功能。HAProxy的社区非常活跃,版本更新快速(最新稳定版1.7.2于2017/01/13推出)。最关键的是,HAProxy具备媲美商用负载均衡器的性能和稳定性。

因为HAProxy的上述优点,它当前不仅仅是免费负载均衡软件的首选,更几乎成为了唯一选择。

HAProxy的核心功能

  • 负载均衡:L4和L7两种模式,支持RR/静态RR/LC/IP Hash/URI Hash/URL_PARAM Hash/HTTP_HEADER Hash等丰富的负载均衡算法
  • 健康检查:支持TCP和HTTP两种健康检查模式
  • 会话保持:对于未实现会话共享的应用集群,可通过Insert Cookie/Rewrite Cookie/Prefix Cookie,以及上述的多种Hash方式实现会话保持
  • SSL:HAProxy可以解析HTTPS协议,并能够将请求解密为HTTP后向后端传输
  • HTTP请求重写与重定向
  • 监控与统计:HAProxy提供了基于Web的统计信息页面,展现健康状态和流量数据。基于此功能,使用者可以开发监控程序来监控HAProxy的状态

2.安装

yum install haproxy

3.配置

global
        daemon
        user root
        group root
        # 工作目录
        chroot /usr/local/etc/haproxy

defaults
        log 127.0.0.1 local0 err #[err warning info debug]
        mode http                #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK
        retries 2                #两次连接失败就认为是服务器不可用,也可以通过后面设置
        option redispatch        #当serverId对应的服务器挂掉后,强制定向到其他健康的服务器
        option abortonclose      #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接
        option dontlognull       #日志中不记录负载均衡的心跳检测记录
        maxconn 4096             #默认的最大连接数
        timeout connect 5000ms   #连接超时
        timeout client 30000ms   #客户端超时
        timeout server 30000ms   #服务器超时
        #timeout check 2000      #=心跳检测超时

######## 监控界面配置 #################
listen admin_status
        # 监控界面访问信息
        bind 0.0.0.0:8888
        mode http
        # URI相对地址
        stats uri /dbs
        # 统计报告格式
        stats realm Global\ statistics
        # 登录账户信息
        stats auth admin:123456
########frontend配置##############

######## mysql负载均衡配置 ###############
listen proxy-mysql
        bind 0.0.0.0:23306
        mode tcp
        # 负载均衡算法
        # static-rr 权重, leastconn 最少连接, source 请求IP, 轮询 roundrobin
        balance roundrobin
        # 日志格式
        option tcplog
        # 在 mysql 创建一个没有权限的haproxy用户,密码为空。 haproxy用户
        # create user 'haproxy'@'%' identified by ''; FLUSH PRIVILEGES;
        option mysql-check user haproxy
         # 这里是容器中的IP地址,由于配置的是轮询roundrobin,weight 权重其实没有生效
        server MYSQL_1 10.6.8.173:3306 check weight 1 maxconn 2000
        server MYSQL_2 10.6.8.174:3306 check weight 1 maxconn 2000
        #server MYSQL_3 192.168.130.102:3306 check weight 1 maxconn 2000
        # 使用keepalive检测死链
        # option tcpka
#########################################


######## 代理网站负载均衡配置 ###############

frontend http-webmain
    bind *:31317
    mode http
    option forwardfor
    option http-server-close
    default_backend mybackend

backend mybackend
    mode http
    option forwardfor
    option http-server-close
    server app1 10.0.39.253:31317 check



#########################################

例子2
代理 8081

global
    maxconn 2000000
    log 127.0.0.1 local1
    #user vyos
    #group users
    uid 1000
    gid 100
    daemon
    #stats socket /home/vyos/zvr/lb/sock/84284cf807fe4398a94ad33da1c55a02.sock user vyos
    stats socket /home/vyos/zvr/lb/sock/84284cf807fe4398a94ad33da1c55a02.sock gid 100 uid 1000
    ulimit-n 4000100

    nbthread 1


defaults
    log global
    option dontlognull
    option http-server-close



frontend 84284cf807fe4398a94ad33da1c55a02
    mode http

    option forwardfor

    bind 10.0.42.108:8081

    timeout client 60s
    default_backend default-84284cf807fe4398a94ad33da1c55a02

backend default-84284cf807fe4398a94ad33da1c55a02
    mode http
    balance roundrobin
    timeout server 60s
    timeout connect 60s
    server nic-192.168.140.189 192.168.140.189:8081 check port 8081 inter 5s rise 2 fall 2

4.启动

haproxy -f haproxy.cfg

SLB负载均衡haproxy的安装及使用_网络

5.删除多余的进程

kill $(ps aux | grep 'haproxy' | awk '{print $2}')

参考

http://www.haproxy.org/



举报

相关推荐

0 条评论