HAProxy简介

(1)HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。 HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完全可以支持数以万计的 并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。

(2)HAProxy 实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。

(3)HAProxy 支持连接拒绝 : 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。 这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救

了很多站点,这个优点也是其它负载均衡器没有的。

(4)HAProxy 支持全透明代理(已具备硬件防火墙的典型特点): 可以用客户端IP地址或者任何其他地址来连接后端服务器. 这个特性仅在Linux 2.4/2.6内核打了cttproxy补丁后才可以使用. 这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。

 

haproxy-1.7.11.tar.gz 放置并解压到/data下,重命名为haproxy
tar -zxvf haproxy-1.7.11.tar.gz 
mv haproxy-1.7.11 haproxy
[root@yaoyao data]# ls
haproxy  haproxy-1.7.11.tar.gz
[root@yaoyao data]# uname -a
Linux yaoyao 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 2013 x86_64 x86_64 x86_64 GNU/Linux

 

cd /data/haproxy

[root@yaoyao data]# make TARGET=linux2632 ARCH=x86_64 PREFIX=/data/haproxy

TARGET=linux2632 、ARCH=x86_64 可以用uname -a 命令来查看,指定操作系统版本,prefix指定安装目录;

 常见编译报错:

makegcc: error trying to exec 'cc1': execvp: 没有该文件或目录的错误

排查错误:

 1、检查gcc、gcc-c++是否安装rpm -qa gcc、rpm -qa gcc-c++(已安装);

 2、检查glibc-devel、cpp、binutils、mpfr、jemalloc是否安装(未安装);

解决:

   发现gcc的相关依赖包未安装,安装完后,可执行make编译
[root@yaoyao haproxy]# make install PREFIX=/data/haproxy
install -d "/data/haproxy/sbin"
install haproxy  "/data/haproxy/sbin"
install -d "/data/haproxy/share/man"/man1
install -m 644 doc/haproxy.1 "/data/haproxy/share/man"/man1
install -d "/data/haproxy/doc/haproxy"
for x in 51Degrees-device-detection architecture close-options configuration cookie-options DeviceAtlas-device-detection intro linux-syn-cookies lua management netscaler-client-ip-insertion-protocol network-namespaces proxy-protocol SPOE WURFL-device-detection; do \
                install -m 644 doc/$x.txt "/data/haproxy/doc/haproxy" ; \
        done

 创建haproxy配置文件

[root@yaoyao haproxy]# pwd
/data/haproxy
[root@yaoyao haproxy]# ls
CHANGELOG  CONTRIBUTING  ebtree    haproxy      include  MAINTAINERS  README   sbin     share  SUBVERS  VERDATE
contrib    doc           examples  haproxy.cfg  LICENSE  Makefile     ROADMAP  scripts  src    tests    VERSION
[root@yaoyao haproxy]# cat haproxy.cfg 
global
        log 127.0.0.1 local0
        log 127.0.0.1 local1 notice
        daemon
        nbproc 1
        maxconn 4096
defaults
        log global
        mode http
        option httplog
        option dontlognull
        retries 3
        option httpclose
        option redispatch
        option abortonclose
        maxconn 4096
        timeout connect 5000ms
        timeout client 30000ms
        timeout server 180000ms
        balance roundrobin
listen stats
        bind 0.0.0.0:1080
        mode http
        option httplog
        maxconn 10
        stats refresh 30s
        stats uri /stats
        stats realm XingCloud\ Haproxy
        stats auth admin:admin
        stats auth Frank:Frank
        stats hide-version
        stats admin if TRUE
frontend web
        bind *:8080  
        default_backend webserver1
frontend main
        bind *:9000
        default_backend webserver2
backend webserver1
        balance source
        server web1 10.0.90.234:8080 check
        server web2 10.0.90.235:8080 check
backend webserver2
        balance source
        server web1 10.0.90.234:9000 check
        server web2 10.0.90.235:9000 check

 启动haproxy服务

[root@yaoyao haproxy]# sbin/haproxy -f haproxy.cfg

 查看haproxy服务

[root@yaoyao haproxy]# netstat -ntlp |grep haproxy
tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN      43495/sbin/haproxy  
tcp        0      0 0.0.0.0:1080                0.0.0.0:*                   LISTEN      43495/sbin/haproxy  
tcp        0      0 0.0.0.0:9000                0.0.0.0:*                   LISTEN      43495/sbin/haproxy

 看到以上信息说明haproxy服务已经成功了!

posted on 2020-09-29 16:03  夏雨等秦天  阅读(913)  评论(0编辑  收藏  举报