文章目录
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

最低0.47元/天 解锁文章
1619





