haproxy负载均衡_使用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的访问请求日志信息。
故事很短,道理很长,学无止境,不忘初心,砥砺前行
微信搜索 “徐阿马” 关注公众号,期待你的关注!
haproxy负载均衡_使用haproxy搭建web集群相关推荐
- 高效多用的群集-Haproxy搭建Web集群
Haproxy搭建Web集群 Haproxy搭建Web集群 一.Haproxy前言 二.常见的Web集群调度器 三.Haproxy应用分析 四.Haproxy高性能负载均衡主要优点 五.四层与七层负载 ...
- 集群(三)——haproxy+nginx搭建web集群
集群(三)--haproxy+nginx搭建web集群 一.Haproxy 前言 二.Haproxy 简介 1.常见的web集群调度器 2.Haproxy应用分析 3.Haproxy高性能负载均衡的主 ...
- haproxy负载均衡_基于mycat+haproxy+keepalived搭建mysql数据库高可用负载均衡
概述 目前业界对数据库性能优化普遍采用集群方式,而oracle集群软硬件投入昂贵,mysql则比较推荐用mycat去搭建数据库集群,下面介绍一下怎么用mycat+haproxy+keepalived搭 ...
- haproxy负载均衡_做负载均衡Nginx、HAProxy和LVS总有一个适合你
Nginx Nginx优点: 1.工作在网络7层之上,可针对http应用做一些分流的策略,如针对域名.目录结构,它的正规规则比HAProxy更为强大和灵活,所以,目前为止广泛流行. 2.Nginx对网 ...
- redis集群关闭 启动报错_使用虚拟机搭建 Redis 集群,实现数据库的负载均衡功能。...
实操题目:使用虚拟机搭建 Redis 集群,实现数据库的负载均衡功能.并使用图文描述整个过程.先创建集群: ①创建集群需要使用ruby脚本,所以要先安装ruby环境 安装ruby环境:yum inst ...
- SaltStck 搭建Web集群运用示例 (一)
saltstack是一个非常强大的管理工具,使用saltstack会做到标准化的管理,下面就以一个简单的示例来更加具体的了解一下saltstack的功能特性. 使用saltstack来搭建一个简单的w ...
- aproxy配合Nginx搭建Web集群部署实验(图文详解)
文章目录 一.常见的Web集群调度器 二.Haproxy应用分析 三.Haproxy调度算法原理 四.Haproxy搭建 Web 群集 实验所需安装包 环境配置 1.部署haproxy服务器(192. ...
- LVS之VS/NAT搭建web集群实战!!!
项目背景 利用lvs的vs/NAT技术实现一个由负载调度器和两个web服务器组成的架构! 试验环境 vmware workstation 11 centos6.5的系统下 load balance:i ...
- hadoop搭建_阿里云搭建Hadoop集群
1 前言 在讲述Hadoop集群搭建之前,首先要了解Hadoop和集群两个名词,Hadoop是由Apache基金会开发的分布式系统基础架构,简单理解就是大数据技术应用的基础.集群可以理解为多台装有ha ...
最新文章
- android sqlite 单例模式,数据储存之SQLite(单例模式)
- C#(WinForm)的Show()和ShowDialog()方法介绍
- OpenSceneGraph学习笔记
- Hibernate:根据配置文件自动生成表结构的2种方式
- mysql配置以及性能优化(转)
- Java Code之多态
- Linux下使用od查看文件
- Java线程池 / Executor / Callable / Future
- 代码更换ui图片_不同人眼中的UI设计师都是什么样的?
- c语言复杂函数转换,详解C语言常用的一些转换工具函数.pdf
- Android 如何自定义EditText 下划线?
- SharePoint 2010 technology stack
- delphi判断线程是否正在运行
- 基于stylus的border一像素线问题与ellipsis多行的兼容方案
- Tableau宣布退出中国市场,背后的原因细思恐极...
- 【简历】不带简历就是潇洒?醒醒吧
- 缓存和数据库同步问题解决方案
- excel实现分组计数
- 18048 自由落体
- 别让Java对象逃逸(Object Escape)
热门文章
- scikit-learn学习笔记(六)Decision Trees(决策树)
- 软件设计原则(三)里氏替换原则 -Liskov Substitution Principle
- 最小二乘与最大似然估计之间的关系
- Spark内存管理(3)—— 统一内存管理设计理念
- Elasticsearch对外提供分词服务实践
- HanLPTokenizer HanLP分词器
- 使用gevent启动bottle web框架
- 《Adobe InDesign CS6中文版经典教程》—第2课2.9节应用对象样式
- HashSet,TreeSet和LinkedHashSet的区别
- 前端神器avalonJS入门(二)