使用Haproxy搭建Web群集
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Haproxy搭建Web群集相关的知识,希望对你有一定的参考价值。
Haproxy是目前比较流行的一种集群调度工具
Haproxy 与LVS、nginx的比较
LVS性能最好,但是搭建相对复杂
Nginx的upstream模块支持集群功能,但是对集群节点健康检查功能不强,性能没有Haproxy好
HTTP请求
通过URL访问网站使用的协议是HTTP协议,此类请求一般称为HTTP请求。
HTTP请求的方式为GET方式和POST方式。
正常的状态码为2xx、3xx;异常的状态码为4xx、5xx
集群的特性 :高性能、高可用
负载均衡常用调度算法
RR(Round Robin):轮询调度
LC(Least Connections):最小连接数
SH(Source Hashing):基于来源访问调度
实验拓扑图
一台haproxy服务器,二台nginx服务器(或Apache服务器),搭建两个不同的网站(方便测试群集),一台客户机上网测试。
实验过程
一、在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.安装keepalived
2.修改keepalived配置文件
vim /etc/keepalived/keepalived.conf
上边这些内容在配置文件必须添加或修改,下边这些内容可以根据自身情况而定
配置完成后,重启服务
注意:防火墙开启224.0.0.18端口,这是keepalived的组播地址。
二、从服务器配置
安装haproxy服务,及修改配置文件(方法同上)
安装keepalived服务(方法同上)
修改keepalived配置文件
只需修改router_id、state、priority参数即可,其他保持一致就可以了。
4.重启keepalived服务,设置防火墙规则
三、客户机进行访问,访问虚拟IP:192.168.1.100
可以关掉主服务器,测试一样可以访问网站,这样就实现了Haproxy高可用的特性。
以上是关于使用Haproxy搭建Web群集的主要内容,如果未能解决你的问题,请参考以下文章