-
什么是HAproxy
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。 HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。 -
HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。 -
HAproxy的特性:
(1)反向代理
(2)读写分离
(3)动静分离 -
HAproxy与各负载均衡器的区别
(1)与nginx:同样工作在用户空间,nginx是一款轻量级,能实现缓存、webserver、邮件、负载均衡等功能,但nginx的许多功能都需要第三方的模块,而haproxy的转发能力比nginx有更强更灵活的定制性,可以运用splice实现0复制的转发,并且有更直观的图形化管理界面,不过通用性不如nginx,并无缓存功能
(2)与varnish:varnish是一款web缓存系统,
(3)与lvs:lvs是工作在内核空间上直接转发的,无缓存功能 -
正向代理和反向代理的区别
正向代理是指客户端直接访问服务端
反向代理是指客户端访问调度器,调度器再访问后端服务器将访问到的数据返回给客户端
实验环境:
主机名 | IP | 服务 |
---|---|---|
server1 | 172.25.22.1 | haproxy,httpd |
server2 | 172.25.22.2 | httpd,php |
server3 | 172.25.22.3 | httpd,php |
foundation22 | 172.25.22.250 | 测试端 |
一、HApronxy实现负载均衡的配置过程
1.从官网获得一个HAproxy的安装包,解压安装包
(makefile写各个模块之间是怎么调用的
config make install后生成的文件)
[root@server1 ~]# ls
haproxy-1.7.3.tar.gz
[root@server1 ~]# tar zxf haproxy-1.7.3.tar.gz
[root@server1 ~]# ls
haproxy-1.7.3 haproxy-1.7.3.tar.gz
[root@server1 ~]# cd haproxy-1.7.3
[root@server1 haproxy-1.7.3]# ls
CHANGELOG doc include Makefile scripts tests
contrib ebtree LICENSE README src VERDATE
CONTRIBUTING examples MAINTAINERS ROADMAP SUBVERS VERSION
2.将源码包打包成一个rpm包
(1)查找.spec文件 (能否把一个源码包打成rpm包要看.sepc文件)
[root@server1 haproxy-1.7.3]# find . -name *.spec
./examples/haproxy.spec
[root@server1 haproxy-1.7.3]# cd
(2)安装编译工具rpm-build gcc pcre-devel
[root@server1 ~]# yum install -y rpm-build gcc pcre-devel
(3)编译安装包
[root@server1 ~]# rpmbuild -tb haproxy-1.7.3.tar.gz
编译完成之后会出现一个rpmbuild目录,rpm安装包在这个目录中 (rpm 红帽的包的管理器)
[root@server1 ~]# ls
haproxy-1.7.3 haproxy-1.7.3.tar.gz rpmbuild
[root@server1 ~]# cd rpmbuild/
[root@server1 rpmbuild]# ls
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
[root@server1 rpmbuild]# cd RPMS/
[root@server1 RPMS]# ls
x86_64
[root@server1 RPMS]# cd x86_64/
[root@server1 x86_64]# ls
haproxy-1.7.3-1.x86_64.rpm