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

简介

在前面已经学习了使用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的访问请求日志信息。

故事很短,道理很长,学无止境,不忘初心,砥砺前行

微信搜索 “徐阿马”  关注公众号,期待你的关注!

haproxy负载均衡_使用haproxy搭建web集群相关推荐

  1. 高效多用的群集-Haproxy搭建Web集群

    Haproxy搭建Web集群 Haproxy搭建Web集群 一.Haproxy前言 二.常见的Web集群调度器 三.Haproxy应用分析 四.Haproxy高性能负载均衡主要优点 五.四层与七层负载 ...

  2. 集群(三)——haproxy+nginx搭建web集群

    集群(三)--haproxy+nginx搭建web集群 一.Haproxy 前言 二.Haproxy 简介 1.常见的web集群调度器 2.Haproxy应用分析 3.Haproxy高性能负载均衡的主 ...

  3. haproxy负载均衡_基于mycat+haproxy+keepalived搭建mysql数据库高可用负载均衡

    概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭 ...

  4. haproxy负载均衡_做负载均衡Nginx、HAProxy和LVS总有一个适合你

    Nginx Nginx优点: 1.工作在网络7层之上,可针对http应用做一些分流的策略,如针对域名.目录结构,它的正规规则比HAProxy更为强大和灵活,所以,目前为止广泛流行. 2.Nginx对网 ...

  5. redis集群关闭 启动报错_使用虚拟机搭建 Redis 集群,实现数据库的负载均衡功能。...

    实操题目:使用虚拟机搭建 Redis 集群,实现数据库的负载均衡功能.并使用图文描述整个过程.先创建集群: ①创建集群需要使用ruby脚本,所以要先安装ruby环境 安装ruby环境:yum inst ...

  6. SaltStck 搭建Web集群运用示例 (一)

    saltstack是一个非常强大的管理工具,使用saltstack会做到标准化的管理,下面就以一个简单的示例来更加具体的了解一下saltstack的功能特性. 使用saltstack来搭建一个简单的w ...

  7. aproxy配合Nginx搭建Web集群部署实验(图文详解)

    文章目录 一.常见的Web集群调度器 二.Haproxy应用分析 三.Haproxy调度算法原理 四.Haproxy搭建 Web 群集 实验所需安装包 环境配置 1.部署haproxy服务器(192. ...

  8. LVS之VS/NAT搭建web集群实战!!!

    项目背景 利用lvs的vs/NAT技术实现一个由负载调度器和两个web服务器组成的架构! 试验环境 vmware workstation 11 centos6.5的系统下 load balance:i ...

  9. hadoop搭建_阿里云搭建Hadoop集群

    1 前言 在讲述Hadoop集群搭建之前,首先要了解Hadoop和集群两个名词,Hadoop是由Apache基金会开发的分布式系统基础架构,简单理解就是大数据技术应用的基础.集群可以理解为多台装有ha ...

最新文章

  1. android sqlite 单例模式,数据储存之SQLite(单例模式)
  2. C#(WinForm)的Show()和ShowDialog()方法介绍
  3. OpenSceneGraph学习笔记
  4. Hibernate:根据配置文件自动生成表结构的2种方式
  5. mysql配置以及性能优化(转)
  6. Java Code之多态
  7. Linux下使用od查看文件
  8. Java线程池 / Executor / Callable / Future
  9. 代码更换ui图片_不同人眼中的UI设计师都是什么样的?
  10. c语言复杂函数转换,详解C语言常用的一些转换工具函数.pdf
  11. Android 如何自定义EditText 下划线?
  12. SharePoint 2010 technology stack
  13. delphi判断线程是否正在运行
  14. 基于stylus的border一像素线问题与ellipsis多行的兼容方案
  15. Tableau宣布退出中国市场,背后的原因细思恐极...
  16. 【简历】不带简历就是潇洒?醒醒吧
  17. 缓存和数据库同步问题解决方案
  18. excel实现分组计数
  19. 18048 自由落体
  20. 别让Java对象逃逸(Object Escape)

热门文章

  1. scikit-learn学习笔记(六)Decision Trees(决策树)
  2. 软件设计原则(三)里氏替换原则 -Liskov Substitution Principle
  3. 最小二乘与最大似然估计之间的关系
  4. Spark内存管理(3)—— 统一内存管理设计理念
  5. Elasticsearch对外提供分词服务实践
  6. HanLPTokenizer HanLP分词器
  7. 使用gevent启动bottle web框架
  8. 《Adobe InDesign CS6中文版经典教程》—第2课2.9节应用对象样式
  9. HashSet,TreeSet和LinkedHashSet的区别
  10. 前端神器avalonJS入门(二)