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指定安装目录;
常见编译报错:
make: gcc: 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服务已经成功了!