Haproxy是目前比较流行的一种集群调度工具 nginx
Haproxy 与LVS、Nginx的比较 web
LVS性能最好,可是搭建相对复杂
算法
Nginx的upstream模块支持集群功能,可是对集群节点健康检查功能不强,性能没有Haproxy好vim
HTTP请求服务器
经过URL访问网站使用的协议是HTTP协议,此类请求通常称为HTTP请求。并发
HTTP请求的方式为GET方式和POST方式。负载均衡
正常的状态码为2xx、3xx;异常的状态码为4xx、5xxide
集群的特性 :高性能、高可用工具
负载均衡经常使用调度算法
性能
RR(Round Robin):轮询调度
LC(Least Connections):最小链接数
SH(Source Hashing):基于来源访问调度
实验拓扑图
一台haproxy服务器,二台nginx服务器(或Apache服务器),搭建两个不一样的网站(方便测试群集),一台客户机上网测试。
实验过程
1、在Haproxy服务器上操做
1.编译安装Haproxy
2.创建Haproxy的配置文件
3.Haproxy配置项介绍
Haproxy配置文件一般为三个部分,即global(全局配置)、default(默认配置)和listen(应用组件配置)。
4.建立自启动脚本
5.在Nginx(Apache)创建网站测试(两个网站服务器操做一致)
6.客户端进行验证
7.Haproxy的日志
Haproxy的日志默认是输出到系统的syslog中,查看起来不是很是方便,为了更好地管理Haproxy的日志,咱们在生产环境中通常单独定义出来。
(1)修改Haproxy配置文件中关于日志配置的选项
配置完成后,重启Haproxy服务。
(2)修改rsyslog配置
为了便于管理,将Haproxy相关的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的全部配置文件。
加入下面的内容
这部分配置是将Haproxy的info日志记录到/var/log/haproxy/haproxy-info.log下,将notice日志记录到/var/log/haproxy/haproxy-notice.log下,其中“& ~"表示当日志写入到日志文件后,rsyslog中止处理这个信息。
而后保存配置文件并重启rsyslog服务,完成rsyslog配置。
(3)测试日志文件
8.Haproxy的参数优化
参数 |
参数说明 |
优化建议 |
maxconn |
最大链接数 |
推荐使用10240 |
daemon |
守护进程模式 |
建议使用 |
nbproc |
负载均衡的并发进程数 |
建议与当前服务器CPU核数相等或为其2倍 |
retries |
重试次数 |
此参数主要用于对集群节点的检查,若是节点多,且并发量大,设置为2此或3次;在服务器节点很少的状况下,能够设置5次或6次 |
option http-server-close |
主动关闭http请求选项 |
建议使用,避免因为timeout时间设置过长致使http链接堆积 |
timeout http-keep-alive |
长链接超时时间 |
能够设置为10s |
timeout http-request |
http请求超时时间 |
建议将此时间设置为5~10s,增长http链接释放速度 |
timeout client |
客户端超时时间 |
建议设置为1min左右就能够了 |
扩展
在上图中增长了一台haproxy,用来作备份,在两台haproxy上面安装keepalived,两台Haproxy操做步骤一致,只是配置文件有些区别
1、主服务器的设置
在前边的基础上,按如下步骤作
1.安装keepalived
2.修改keepalived配置文件
vim /etc/keepalived/keepalived.conf
上边这些内容在配置文件必须添加或修改,下边这些内容能够根据自身状况而定
配置完成后,重启服务
注意:防火墙开启224.0.0.18端口,这是keepalived的组播地址。
2、从服务器配置
安装haproxy服务,及修改配置文件(方法同上)
安装keepalived服务(方法同上)
修改keepalived配置文件
只需修改router_id、state、priority参数便可,其余保持一致就能够了。
4.重启keepalived服务,设置防火墙规则
3、客户机进行访问,访问虚拟IP:192.168.1.100
能够关掉主服务器,测试同样能够访问网站,这样就实现了Haproxy高可用的特性。