HAProxy

一、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补丁后才可以使用. 这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。


二、实验

环境

server1    haproxy主机

server2    http服务

server3    http服务


server1

Screenshot from 2018-02-12 14-11-57.png

[root@server1 examples]# yum install -y rpm-build   安装工具,生成rpm安装包

[root@server1 examples]# rpmbuild -bb haproxy.spec   执行出错,说是没有文件

Screenshot from 2018-02-12 14-12-52.png

[root@server1 examples]# cp /root/haproxy-1.6.11.tar.gz /root/rpmbuild/SOURCES/   复制文件到所示路径

再次执行,如下有需要依赖性

Screenshot from 2018-02-12 14-15-05.png

安装完依赖性后,正常执行

Screenshot from 2018-02-12 14-15-54.png


执行完成后,rpm包生成

Screenshot from 2018-02-12 14-17-03.png

[root@server1 x86_64]# rpm -ivh haproxy-1.6.11-1.x86_64.rpm  安装

Screenshot from 2018-02-12 14-17-54.png



查看路径


将配置文件拷贝到如下路径

Screenshot from 2018-02-12 14-19-18.png

[root@server1 haproxy]# mv content-sw-sample.cfg haproxy.cfg   重命名

新建用户

Screenshot from 2018-02-12 14-20-41.png

查看

open files                      (-n) 1024
Screenshot from 2018-02-12 14-21-11.png


Screenshot from 2018-02-12 14-22-42.png

[root@server1 haproxy]# vim haproxy.cfg   修改配置文件

Screenshot from 2018-02-12 13-47-13.png


[root@server1 haproxy]# vim /etc/sysctl.conf   修改参数

Screenshot from 2018-02-12 14-23-17.png

[root@server1 haproxy]# vim /etc/security/limits.conf    修改文件

Screenshot from 2018-02-12 14-24-59.png

查看open files 已改变

Screenshot from 2018-02-12 14-26-00.png


修改配置文件

Screenshot from 2018-02-12 14-38-57.png


Screenshot from 2018-02-12 14-39-06.png

开启服务

Screenshot from 2018-02-12 14-39-43.png

server2,3开启http服务

Screenshot from 2018-02-12 14-40-31.png

Screenshot from 2018-02-12 14-40-41.png

浏览器访问

http://192.168.122.11/admin/stats

Screenshot from 2018-02-12 14-41-55.png

配置日志

[root@server1 haproxy]# vim /etc/rsyslog.conf

Screenshot from 2018-02-12 14-47-21.png


Screenshot from 2018-02-12 14-49-24.png


Screenshot from 2018-02-12 14-49-58.png


[root@server1 haproxy]# /etc/init.d/rsyslog restart   开启服务

[root@server1 haproxy]# tail -f /var/log/haproxy.log   查看日志   刷浏览器出现日志

Screenshot from 2018-02-12 14-55-08.png



[root@server1 haproxy]# vim haproxy.cfg     修改文件


Screenshot from 2018-02-12 15-05-22.png


[root@server1 haproxy]# /etc/init.d/haproxy reload    重新加载

浏览器访问

输入  admin 用户

密码  cara


客户端测试

Screenshot from 2018-02-12 15-11-49.png

当server2的http 服务关掉时

Screenshot from 2018-02-12 15-13-07.png


客户端载此访问时,如下显示



eg1

[root@server1 haproxy]# vim haproxy.cfg 

Screenshot from 2018-02-12 15-20-28.png


[root@server1 haproxy]# /etc/init.d/haproxy reload  加载
客户端测试

eg2

[root@server1 haproxy]# vim haproxy.cfg 

Screenshot from 2018-02-12 15-28-16.png


[root@server1 haproxy]# /etc/init.d/haproxy reload

测试

Screenshot from 2018-02-12 15-28-44.png


[root@server1 haproxy]# yum install -y httpd    安装http服务

[root@server1 haproxy]# vim /etc/httpd/conf/httpd.conf


[root@server1 haproxy]# /etc/init.d/httpd start  开启服务

Screenshot from 2018-02-12 15-34-09.png

编辑页面

[root@server1 html]# cat index.html
<h1>I'am cara</h1>


eg3

修改配置文件

[root@server1 haproxy]# vim haproxy.cfg

Screenshot from 2018-02-12 15-41-14.png

[root@server1 haproxy]# /etc/init.d/haproxy reload   修改完,重新加载

浏览器访问

Screenshot from 2018-02-12 15-42-33.png

eg4

[root@server1 haproxy]# vim haproxy.cfg

Screenshot from 2018-02-12 15-46-51.png

[root@server1 haproxy]# /etc/init.d/haproxy reload

Screenshot from 2018-02-12 15-47-27.png


eg5

server3

[root@server3 ~]# yum install -y php   安装php

Screenshot from 2018-02-12 15-54-34.png

[root@server1 haproxy]# vim haproxy.cfg 

Screenshot from 2018-02-12 16-06-43.png


[root@server1 haproxy]# /etc/init.d/haproxy reload    

浏览器

Screenshot from 2018-02-12 16-07-59.png




[root@server3 html]# mkdir images  创建目录

[root@server1 haproxy]# vim haproxy.cfg

Screenshot from 2018-02-12 16-19-34.png


[root@server1 haproxy]# /etc/init.d/haproxy reload
浏览器

http://192.168.122.11/images/redhat.jpg

Screenshot from 2018-02-12 16-17-09.png