使用Haproxy搭建Web群集

防伪码:不必向我解释色彩,我的眼里自有一片湛蓝

          第七章 使用Haproxy搭建Web集群

前言:Haproxy是目前比较流行的一种集群调度工具,同类集群调度工具很多,如LVS和Nginx。相比较而言,LVS性能最好,但是搭建相对复杂,Nginx的upstream模块支持集群功能,但是对集群节点的检查功能不强,性能没有Haproxy好,其官网是http://haproxy.1wt.eu/。本章我们将使用Haproxy搭建一套Web集群,并增加一台Haproxy做双机热备,达到高可用的效果。

一、前置知识点:

1、HTTP请求

请求方式(GET方式和POST方式)

返回状态码:

正常的状态码为2××、3××

异常的状态码为4××、5××

2、负载均衡常用调度算法:

RR(Round Robin):轮询调度

LC(Least Connections):最小连接数

SH(Source Hashing):基于来源访问调度

3、常见的web集群调度器

软件:LVS、Haproxy、Nginx

硬件:F5、梭子鱼、绿盟等

二、综合实验:使用Haproxy搭建web集群

1、实验拓扑图:

2、案例环境表:

3、 实验步骤

1) 编译安装haproxy

首先安装两个支持包

2) haproxy服务器的配置

首先建立haproxy的配置文件

拷贝配置文件的样本复制到/etc/haproxy目录下

修改haproxy.cfg配置文件(分为三部分,global为全局,defaults为默认,listen为应用组件)

详解配置参数:

# this config needs haproxy-1.1.28 or haproxy-1.2.1

global

log /dev/log    local0 info                                        //日志记录,local0为日志设备,默认存放到系统日志

log /dev/log    local1 notice                                    //notice为日志级别,通常有24个级别

#log loghost    local0 info

maxconn 4096

#chroot /usr/share/haproxy

uid 99                                        //用户uid

gid 99                                        //用户gid

pidfile /var/run/haproxy.pid                                        //pid文件的路径以及文件名

daemon                                        //后台运行

#debug

#quiet

defaults

log     global                                        //定义日志为global配置中的日志定义

mode    http                                        //模式为http协议

option  httplog                                    //采用http日志格式记录日志

option  dontlognull

retries 3                                              //检查节点服务器的失败次数,连续达到三次则认为节点不可用

maxconn 2000                                    //最大连接次数

contimeout      5000                            //连接超时时间

clitimeout      50000                            //客户端超时时间

srvtimeout      50000                            //服务器超时时间

listen  webcluster 0.0.0.0:80

option  httpchk GET /index.html                            //检查服务器的index.html文件

balance roundrobin                                        //负载均衡调度算法为轮询

server  inst1 192.168.1.30:80 check inter 2000 fall 3                 //定义节点地址和端口,健康检查三次

server  inst2 192.168.1.40:80 check inter 2000 fall 3

3)创建自启动脚本

4) 安装nginx(以第一台nginx为例)

剩下的节点配置一样,为了测试时看出效果,建议将测试页的内容不要保持一致

第一台如图所示:

第二台如图所示:

5) 开启haproxy服务(防火墙开启tcp80端口)

6) 测试web群集

首先测试负载均衡,在客户端上打开http://192.168.1.10

下面再测试一下高可用,我们把第一台服务器的网卡断掉,模拟服务器出现故障,如果网页依然可以访问,说明群集的高可用没有问题。

7) 配置haproxy日志

Haproxy的日志默认是保存到系统的syslog中,查看起来不方便,所以我们在生产环境中可以将日志单独存储到不同的文件中,配置如下

首先修改配置文件,主要改下面的部分(这两行的作用是将info和notice的日志分别记录到不同的文件中)

然后修改rsyslog配置,将haproxy相关的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d下,rsyslog启动时会自动加载此目录下所有的配置文件。

加入以下内容

然后重新启动rsyslog服务

测试日志信息:

在客户机访问网站之后,可以使用tail -f /var/log/haproxy/haproxy-info.log即时查看日志

8)生产环境中需要对Haproxy进行参数优化,以满足实际生产的要求

参数 参数说明 优化建议
maxconn 最大连接数 推荐使用10240
daemon 守护进程模式 Haproxy可以使用非进程守护模式启动,生产环境建议使用守护进程模式启动
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左右即可

9)为了实现haproxy的高可用,我们可以配置keepalived。

思路:在以上实验原有的基础上增加一台Haproxy服务器,两台调度服务器做双机热备,

配置好了之后断掉第一台Haproxy网站依然可以访问对了。

为两台Haproxy配置虚拟IP地址作为访问地址:

访问:

断开一台,发现仍然可以访问

使用ip addr show dev eth0命令,发现从Haproxy调度器已成为主调度器

谢谢观看,真心的希望能帮到您。

时间: 2024-10-11 12:55:36

使用Haproxy搭建Web群集的相关文章

Linux之使用haproxy搭建web群集(2)

Linux之使用haproxy搭建web群集(2)   案例二: 一. 实验拓扑图 二. 实验目标:使用keepalived+haproxy实现双机热备和负载均衡. 三. 实验环境: 各虚拟机防火墙Iptables 与 NetworkManager 关闭 四. 实验要求: 继续接着案例一的实验进行.Keepalived配置,漂移地址为192.168.1.100. 1.10: keepalived配置为主 192.168.1.40服务器 haproxy配置与1.10一样.配置后启动ha服务. ke

【中级篇】使用Haproxy搭建WEB群集

使用Haproxy搭建WEB群集 1.          实验需求: 1)     2台服务器部署NgINX服务 2)  1台做Haproxy调度器 3)  搭建负载均衡,测试其效果. 2.          实验环境: 主机 操作系统 IP地址 主要软件 Haproxy RedHat6.5  32位 192.168.10.10 haproxy-1.4.24.tar.gz Nginx服务器1 CentOS--6.5 32位 192.168.10.15 nginx-1.5.10.tar.gz Ng

Linux之使用haproxy搭建web群集(1)

Linux之使用haproxy搭建web群集(1) Haproxy是目前比较流行的一种集群调度工具,同类的调度工具有很多,如LVS和Nginx.相比较而言,LVS性能最好,但是搭建相对复杂,Nginx和upstream模块支持集群功能,但是对集群节点的健康检查功能不强,性能没有Haproxy好. 案例一: 一.案例拓扑图 二.实验目标:使用haproxy搭建web群集,实现负载均衡和高可用. 三.实验环境: 系统Centos6.5 注意:使用Vmware虚拟机要将各虚拟机防火墙Iptables

使用Haproxy搭建Web群集的方法

常见的 Web集群调度器 目前常见的 Web 集群调度器分为软件和硬件,软件通常使用开源的LVS.Haproxy.Nginx,硬件一般使用比较多的是 F5,也有很多人使用国内的一些产品,如梭子鱼.绿盟等 Haproxy应用分析 ■LVS在企业应用中抗负载能力很强,但存在不足 LVS不支持正则处理,不能实现动静分离 对于大型网站,LVS的实施配置复杂,维护成本相对较高 ■Haproxy是一款可提供高可用性.负载均衡.及基于TCP和HTTP应用的代理的软件 特别适用于负载特别大的Web站点 运行在当

Haproxy搭建Web群集概述

博文目录一.Haproxy概述1.HTTP请求2.负载均衡常用调度算法3.常见的Web群集调度器二.Haproxy配置项介绍1.global配置项通常有下面配置参数:2.defaults配置项配置默认参数,一般会被应用组件继承,如果在应用组件中没有特别的声明,将安装默认配置参数:3.listen配置项一般配置应用模块参数:三.Haproxy的参数优化 一.Haproxy概述 Haproxy是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS和Nginx.相比较而言,LVS性能最好,

haproxy搭建web群集

使用需求:负载均衡群阶可以用tocat+nginx的负载均衡群集,还有lvs负载均衡群集.三种群集相比来说,lvs性能最好,但是搭建复杂,ningx的upstream模块支持群集,但是群集的节点的故障检查功能不是很多,性能也比不上haproxy.            相对来能实现什么样的效果:对于企业的服务器(web.ftp等)能实现负载均衡,其中一台服务器宕机之后能依然能上网站ftp.            知识点的描述:1.负载均衡的常用调度算法:                     

使用Haproxy搭建Web群集(内附源码包)

Haproxy简介:haproxy提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理,支持虚拟主机:haproxy特别适用于那些负载特别大的web站点,这些站点通常又需要会话保持或七层处理.haproxy运行在时下的硬件上,完全可以支持数以万计的并发连接,并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上.haproxy实现了一种事件驱动.单一进程模型,此模型支持非常大的并发连接数.多进程或多线程模型受内存限制.系统

Haproxy搭建web群集——(实践!)

常见的web集群调度器 目前常见的web集群调度器分为软件和硬件,软件通常使用开源的LVS,Haproxy,Nginx,硬件一般使用比较多的是F5,也有很多人使用国内的一些产品,如梭子鱼,绿盟等 Haproxy应用分析 LVS在企业应用中抗负载能力很强,但存在不足 LVS不支持正则处理,不能实现动静分离 对于大型网站,LVS的实施配置复杂,维护成本相对较高 Haproxy是一款可提供高可用性,负载均衡,及基于TCP和HTTP应用的代理的软件 特别适用于负载特别大的web站点 运行在当前的硬件上可

Haproxy搭建web群集(实战!!!)

常见的web集群调度器 目前常见的web集群调度器分为软件和硬件,软件通常使用开源的LVS,Haproxy,Nginx,硬件一般使用比较多的是F5,也有很多人使用国内的一些产品,如梭子鱼,绿盟等 Haproxy应用分析 LVS在企业应用中抗负载能力很强,但存在不足 LVS不支持正则处理,不能实现动静分离 对于大型网站,LVS的实施配置复杂,维护成本相对较高 Haproxy是一款可提供高可用性,负载均衡,及基于TCP和HTTP应用的代理的软件 特别适用于负载特别大的web站点 运行在当前的硬件上可