zoukankan      html  css  js  c++  java
  • haproxy做tcp 层的负载均衡

    首先下载haproxy包:

    wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.13.tar.gz

    安装:

    tar zxvf haproxy-1.4.13.tar.gz

    make TARGET=linux26 PREFIX=/usr/local/haproxy  ##我的系统内核为2.6,所以target=linux26

    make install PREFIX=/usr/local/haproxy

    然后进行配置:

    vi /etc/haproxy/haproxy.cfg

    ##写入以下内容:

    复制代码
    ###########全局配置#########
    global
    daemon
    nbproc
    1
    pidfile
    /var/run/haproxy.pid


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


    ########统计页面配置########
    listen admin_stats
    bind
    0.0.0.0:1080 #监听端口
    mode http #http的7层模式
    option httplog #采用http日志格式
    #log
    127.0.0.1 local0 err
    maxconn
    10
    stats refresh 30s #统计页面自动刷新时间
    stats uri
    /stats #统计页面url
    stats realm XingCloud\ Haproxy #统计页面密码框上提示文本
    stats auth admin:admin #统计页面用户名和密码设置
    stats hide
    -version #隐藏统计页面上HAProxy的版本信息


    ########test1配置#################
    listen test1
    bind
    0.0.0.0:90
    mode tcp
    #maxconn
    4086
    #log
    127.0.0.1 local0 debug
    server s1
    10.18.138.201:80
    server s2
    10.18.102.190:80
    server s3
    10.18.102.189:80
    server s4
    10.18.102.188:80
    server s5
    10.18.102.187:80
    ########frontend配置##############


    ########test2配置#################
    listen test2
    bind
    0.0.0.0:91
    mode tcp
    #maxconn
    4086
    #log
    127.0.0.1 local0 debug
    server s1
    10.18.138.130:80 weight 1
    server s2
    10.18.138.201:8080 weight 6
    ########frontend配置##############
    复制代码


    ok. 启动haproxy.

    haproxy /etc/haproxy/haproxy.cfg

    马上试试, 发现负载已经成功了。 

    但是有一个问题, 不能看到log.     是因为我没有启动syslog.

    在ubuntu下, 需要启动的是rsyslogd.

    我的机器上没有安装,先安装rsyslogd.

    apt-get install rsyslog


    安装完成之后,配置rsyslog

    vi /etc/rsyslog.d/haproxy.conf

    加入以下内容:

    $ModLoad imudp
    $UDPServerRun 514

    local0.* /var/log/haproxy.log

    保存, 重启rsyslogd.

    restart rsyslogd

    ok.现在你就可以看到日志了。


    试试看。

    tail -f /var/log/haproxy.log

    最后,再加一个平滑重启的命令:

    haproxy -f /etc/haproxy/haproxy.cfg -sf `cat /var/run/haproxy.pid`

  • 相关阅读:
    (Java实现) 有重复元素排列问题
    玩转Google开源C++单元测试框架Google Test系列(转载)
    C++11之后,对源代码增加了UTF8和UCS4的支持(Windows内部使用Unicode,因为nt内核用的是ucs2,那是89年,utf8到了92年才发明出来)
    当年写的俄罗斯方块(现在更喜欢研究别人的代码)
    Stack的三种含义(数据超过栈的大小,就发生stack overflow)
    64位平台C/C++开发注意事项(转载)
    Redis集群方案
    Hadoop处理大量小文件的问题和解决方法
    Lazy Scheduler
    Solr与MongoDB集成,实时增量索引
  • 原文地址:https://www.cnblogs.com/ylqmf/p/2736979.html
Copyright © 2011-2022 走看看