使用haproxy搭建web集群

会不会有那么一天,生活可以简单到每天清早踏上一辆载着鲜花的脚踏车,微笑着穿过窄窄的街巷,为爱花的人送去芬芳,为需要知识的你送去帮助。

简介

在前面已经学习了使用Nginx、LVS做负载均衡群集,它们都具有各自的特点,本章将要介绍另一款比较流行的群集调度工具Haproxy。首先介绍负载均衡常用调度算法,然后介绍Haproxy 搭建Web群集的方法.最后介绍Haproxy的参数优化和日志配置。

本章重点

  • 负载均衡常用调度算法

  • 使用Haproxy 搭建Web群集

一,HTTP请求

    1.http

通过URL访问网站使用的协议是HTTP协议,此类请求一般称为HTTP请求。HTTP请求的方式分为GET方式和POST方式。当使用浏览器访问某一个URL,会根据请求URL返回状态码,通常正常的状态码为2××、3××(如200、301),如果出现异常会返回4××、5××(如400,500)。

例如,访问http://www.test.com/a.php2ld=123.就是一个GET请求,如果访问正常,会从服务器的日志中获取200状态码。假如此请求使用POST方式,那么传递给a.php的ld参数依旧是123,但是浏览器的URL将不会显示后面的ld=123字样,因此表单类或者有用户名、密码等内容提交时建议使用POST方式。不管使用哪种方式,最终a.php获取的值是一样的。

2.负载均衡常用调度算法

LVS、Haproxy.Nginx最常用的调度算法有三种,如下所述。

 RR(Round Robin):RR算法是最简单最常用的一种算法,即轮询调度。例如,有三个节点A.B.C.第一个用户访问会被指派到节点A.第二个用户访问会被指派到节点B.第三个用户访问会被指派到节点C.第四个用户访问继续指派到节点A.轮询分配访问请求实现负载均衡效果。此算法还有一种加权轮询,即根据每个节点的权重轮询分配访问请求。

  LC(Least Conmections):LC算法即最小连接数算法,根据后端的节点连接数大小动态分配前端请求。例如,有三个节点A、B、C.各节点的连接数分别为A:4.B:5、C:6.此时如果有第一个用户连接请求,会被指派到A上,连接数变为A:5、B:5.C:6;第二个用户请求会继续分配到A上,连接数变为A:6、B:5.C:6;再有新的请求会分配给B,每次将新的请求指派给连接数最小的客户端。由于实际情况下A、B、C的连接数会动态释放,很难会出现一样连接数的情况,因此此算法相比较rr算法有很大改进,是目前用到比较多的一种算法。

 SH(Source Hashing):SH即基于来源访问调度算法,此算法用于一些有Session会话记录在服务器端的场景,可以基于来源的IP,Cookie等做群集调度。例如,使用基于源IP的群集调度算法,有三个节点A.B、C.第一个用户第一次访问被指派到了A,第二个用户第一次访问被指派到了B.

当第一个用户第二次访问时会被继续指派到A.第二个用户第二次访问时依旧会被指派到B,只要负载均衡调度器不重启,第一个用户访问都会被指派到A,第二个用户访问都会被指派到B,实现群集的调度。此调度算法好处是实现会话保持,但某些P访问量非常大时会引起负载不均衡,部分节点访问量超大,影响业务使用。

3.常见的Web群集调度器

目前常见的Web群集调度器分为软件和硬件,软件通常使用开源的LVS.Haproxy.Nginx,硬件一般使用比较多的是F5,也有很多人使用国内的一些产品,如梭子鱼、绿盟等。

二,案例

 1.案例环境

主机 操作系统 IP地址
apache服务器1 Centos7.4 192.168.100.10
apache服务器2 Centos7.4 192.168.100.20
haproxy Centos7.4

外网IP:192.168.200.10

内网IP:192.168.100.30

win10测试 win10企业版 192.168.200.10

    2.搭建两台Apache服务器

由于两台Apache服务搭建过程一样,这里只演示一台搭建过程供参考

安装http服务

3.向网站主页文件输入内容"centos01111111"(第二台apache服务器输入“centos0222222”)

4.启动服务并设置为开机自启

5.分别测试两台apache的可用性

6.配置haproxy

1)安装依赖

2)使用源代码方式将haproxy解压到/usr/src下

并支持64位系统

3)安装

4)生成主配置文件

5)生成服务控制文件

6)备份主配置文件并进行修改支持负载均衡

Haproxy配置文件通常分为三个部分,即global、defaults和listen。global为全局配置,defaults为默认配置,listen为应用组件配置。

global配置项通常有下面配置参数,以示例参数说明如下。

defaults配置项配置默认参数,一般会被应用组件继承,如果在应用组件中没有特别声明,将安装默认配置参数设置。

7)创建临时运行目录

8)设置为系统服务并设置为开机自启

9)修改外网IP地址

10)开启haproxy

测试:

测试环境 :win10为vmnet2模式

更改IP继续访问

三,Haproxy的日志

Haproxy 的日志默认输出到系统的syslog中,查看起来不是非常方便,为了更好地管理Haproxy的日志,我们在生产环境中一般单独定义出来,定义的方法如下所述。

(1)修改Haproxy配置文件中关于日志配置的选项,将原有的日志配置更改为以下配置:

这两行配置放到Haproxy的global 配置项目中,主要是将Haproxy的info及notice日志分别记录到不同的日志文件中。

重启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停止处理这个信息。这里配置的语法是使用rainerscript脚本语言写的。

保存配置文件并重启rsyslog服务,完成rsyslog配置。

(3)测试日志信息。

在客户端访问hup://192.168.1.60/test.html后,可以使用tail-f/var/log/haproxy/

haproxy-info.log 即时查看Haproxy的访问请求日志信息。

https://www.shengchulai.com/blog-KLXzMt9GTO.htm

(0)

相关推荐