构建开源负载均衡架构平台之haproxy

    技术2025-12-21  5

            HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。根据官方数据,其最高极限支持10G的并发。 

    HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。

    Haproxy包括以下一些特征:

    1.   根据静态分配的cookie 分配HTTP请求

    2.   分配负载到各个服务器,同时保证服务器通过使用HTTP Cookie实现连接保持;

    3.   当主服务器宕机时切换到备份服务器;允许特殊端口的服务监控;

    4.   做维护时通过热配置可以保证业务的连续性,更加人性化;

    5.   添加/修改/删除HTTP Request和Response 头;

    6.   通过特定表达式Block HTTP请求;

    7.   带有用户验证的详细的HTML监控报告; 

    一、安装Haproxy

    从官方网站:http://www.haproxy.org 下载最新版本。

    # wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.20.tar.gz

    # tar zcvf haproxy-1.3.20.tar.gz

    # cd haproxy-1.3.20

    # make TARGET=linux26 PREFIX=/usr/local/haprpxy

    # make install PREFIX=/usr/local/haproxy

    二、安装完毕后,进入安装目录创建配置文件

    # cd /usr/local/haproxy 

    # vi haproxy.cfg

    global

            log 127.0.0.1   local0 debug

            maxconn 1024 #每个进程可用的最大连接数

            ulimit-n 8000

            daemon #使HAProxy进程进入后台运行

            nbproc 1#创建1个进程进入deamon模式运行

    defaults

            log     global

            mode    http

            option  httplog #定制日志格式

            option  dontlognull

            maxconn 10

            #5 seconds for connection to establish on a server

            contimeout      5000

            #50 seconds for the time we accept to wait for data from the client

            clitimeout      50000

            #50 seconds for the time we accept to wait for data from the server

            srvtimeout      50000

    listen boss_web 0.0.0.0:8811

           mode    http

           log     global

           log     10.1.252.153 local3

           maxconn 1000  #每个进程可用的最大连接数

           option forwardfor

           capture request  header Cookie len 200

           cookie  HAPROXYID insert nocache indirect

           balance roundrobin

           #option  httpchk GET /pboss/check.html#允许用http协议检查server 的健康

           server  10_1_252_92_7879 10.1.252.92:7879 check inter 10000 cookie 10_1_252_92_7879

           server  10_1_252_153_7989 10.1.252.153:7989 check inter 10000 cookie 10_1_252_153_7989

    listen manager 0.0.0.0:8844 #监控管理平台

           mode http

           balance roundrobin #负载算法,这里采用默认

           stats uri /status   #监控平台的服务名

           stats realm Global/ statistics

           stats auth admin:admin #登陆监控平台的验证信息

    ~启动服务: # /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg

    重启服务: # /usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/haproxy.cfg -st `cat /usr/local/haproxy/logs/haproxy.pid`  (没有换行)

    停止服务: # killall haproxy

    三、配置日志

    # vim /etc/syslog.conf

    在最下边增加 local3.*         /var/log/haproxy.log local0.*         /var/log/haproxy.log 重启核心日志服务使配置起效 # service syslog restart

    然后就可查看日志了 # tail –f /var/log/harpoxy.log

    四、登陆监控平台可以查看到当前负载信息及每个服务器的状态http://10.1.252.153:8844/status

     

    五、通过统一接入地址(proxy)访问应用程序 http://10.1.252.153:8811/pboss

    六、模拟server1宕机

    将server1 10.1.252.92:7879服务停掉,并登陆监控平台查看status是否为down.

    重新登陆http://10.1.252.153:8811/pboss 登陆成功并从可以观察到服务的负载由server1转移到另一台服务器server2上。

    七、模拟server2宕机

    将server2 10.1.252.153:7879服务停掉,并登陆监控平台查看status是否为down.

    重新登陆http://10.1.252.153:8811/pboss 登陆成功并从可以观察到服务的负载由server2转移到服务器server1上。

     

    以上只是利用haproxy一小部分功能,但这些已经可以实现负载的目的,今天就先了解到这里。。。

    最新回复(0)