群集--Haproxy搭建Web群集( Haproxy 功能及常用群集调度算法、Haproxy 常用配置及日志管理 、Haproxy 参数优化)

Haproxy概述

Haproxy 是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如 LVS 和 Nginx。相比较而言,LVS 性能最好,但是搭建相对复杂;Nginx 的 upstream 模块支持群集功能,但是对群集节点健康检查功能不强,高并发性能没有 Haproxy 好。Haproxy 官方网站 是 http://www.haproxy.org/。

Haproxy与LVS相比

  • Haproxy是一款可提供高可用性、负载均衡、及基于TCP和HTTP应用的代理的软件,特别适用于负载特别大的Web站点
  • 运行在当前的硬件上可支持数以万计的并发连接连接请求
  • LVS性能最好,但不支持正则处理,不能实现动静分离
  • 对于大型网站,LVS的实施配置复杂,维护成本相对较高

一、 Haproxy 功能及常用群集调度算法

Haproxy支持多种调度算法,最常用的有三种:RR(Round Robin),LC(Least Connections),SH(Source Hashing)

1.1 轮询 RR(Round Robin)

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

1.2 最小连接数 LC(Least Connections)

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 的连接数会动态释放, 很难会出现一样连接数的情况,是目前用到比较多的一种算法。

1.3 基于来源访问 SH(Source Hashing)

基于来源访问调度算法,此算法用于一些有 Session 会话记录在服务器端的场景,可以基于来源的 IP、Cookie 等做群集调度。例如,使用基于源 IP 的群集调度算法,有三个节点 A、B、C,第一个用户第一次访问被指派到了 A,第二个 用户第一次访问被指派到了 B,当第一个用户第二次访问时会被继续指派到 A,第二个用户 第二次访问时依旧会被指派到 B,只要负载均衡调度器不重启,第一个用户访问都会被指派 到 A,第二个用户访问都会被指派到 B,实现群集的调度。此调度算法好处是实现会话保持, 但某些 IP 访问量非常大时会引起负载不均衡,部分节点访问量超大,影响业务使用。

1.4 常见的 Web 群集调度器

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

二、 Haproxy群集搭建

实验目的

Haproxy搭建Web群集,实现正常访问

实验环境

VMware软件
两台centos7虚拟机作为NGINX(IP地址:14.0.0.110 IP地址:14.0.0.177)
一台centos7虚拟机作为Haproxy(IP地址:14.0.0.107)

实验过程

1. nginx的手工编译安装

两台web服务器都要安装,以一台安装为例

[root@localhost ~]# iptables -F
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install -y pcre-devel zlib-devel gcc gcc-c++ make    ##安装环境包
将软件包拷贝到当前目录
[root@localhost ~]# useradd -M -s /sbin/nologin nginx   ##创建一个管理nginx的用户,不创建家目录,不能登录
[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz   ##解压软件包
[root@localhost ~]# cd nginx-1.12.0/
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx     ##configure配置
[root@localhost nginx-1.12.0]# make && make install    ##编译安装
[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值