Haproxy搭建Web群集

常见的Web集群调度器

目前常见的Web集群调度器分为软件和硬件

软件通常使用开源的Lvs. Haproxy、Nginx

硬件般使用比较多的是F5。也有很多人使用国内的一些产品,如梭子鱼、绿盟等

Haproxy应用分析

LVS在企业应用中抗负载能力很强,但存在不足

LVS不支持正则处理,不能实现动静分离
对于大型网站,LVS的实施配置复杂,维护成本相对较高

Haproxy是一款可提供高可用性、负载均衡、及基于TCP和HTTP应用的代理的软件

适用于负载大的Web站点
运行在硬件上可支持数以万计的并发连接的连接请求

Haproxy调度算法原理

Haproxy支持多种调度算法,最常用的有三种

RR (Round Robin)

RR算法是最简单最常用的—种算法,即轮询调度

理解举例

有三个节点A、B、C
第一个用户访问会被指派到节点A
第二个用户访问会被指派到节点B
第三个用户访问会被指派到节点C
第四个用户访问继续指派到节点A,轮询分配访问请求实现负载均衡效果

Haproxy支持多种调度算法,最常用的有三种

Lc (Least Conmections)

最小连接数算法,根据后端的节点连接数大小动态分配前端请求

理解举例

有三个节点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算法有很大改进,是目前用到比较多的一种算法

Haproxy支持多种调度算法,最常用的有三种

SH (Source Hashing)

基于来源访问调度算法,用于一些有Session会话记录在服务器端的场景,可以基于来源的IP、Cookie等做集群调度

理解举例

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

Haproxy高性能负载均衡的主要优点

Haproxy在负载均衡速度和并发处理上是优于Nginx
Haproxy支持虚拟主机,可以工作在4、7层
能够补充Nginx的一些缺点,比如session的保持、Cookie的引导等工作支持url检测后端的服务器的状态
Haproxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡
支持很多负载均衡算法,Round-robin (轮询)、weight-round-robin (加权轮询)、source(原地址保持)、RI(请求URL) 、 rdp-cookie(根据cookie)

LVS、Haproxy、 nginx区别

LVS和Haproxy应用分析

LVs在企业应用中抗负载均衡能力很强,但存在不足
LVS不支持正则处理,不能实现动静分离
对于大型网站,LVs的实施配置复杂,维护成本相对较高
Haproxy是一块可提供高可用性、负载均衡及基于TCP和HTTP应用的代理软件特别适合于负载特别大的web站点(可以承受高并发,可与Nginx配合)
运行在当前的硬件上可支持数以万计的并发连接请求

nginx和Lvs、Haproxy的区别

1)nginx
支持正则
只支持基于端口的健康检查
不支持session的直接保持,但能通过IP_hash来解决对网络稳定性要求不高
反向代理能力强
nginx社区活跃(社区:维护、更新服务的组织)
2)Lvs
只能基于四层端口转发
在四层做分发作用,抗负教能力强
应用范围广(几乎可以对所有应用做负载)
3)Haproxy
支持8种负载均衡策略
仅做负教均衡软件使用,在高并发情况下性能优于nginx支持URL健康检测、支持session保持
对后端具备监控的能力

部署haproxy服务

[root@haproxy ~]# cd /opt
[root@haproxy opt]# ls

在这里插入图片描述

[root@haproxy opt]# yum -y install pcre-devel bzip2-devel gcc gcc-c++ make
[root@haproxy opt]# tar zxvf haproxy-1.5.19.tar.gz 
[root@haproxy opt]# cd haproxy-1.5.19/
[root@haproxy haproxy-1.5.19]# make TARGET=linux2628 ARCH=x86_64
[root@haproxy -1.5.19]# make install

haproxy服务配置

[root@haproxy haproxy-1.5.19]# mkdir /etc/haproxy
[root@haproxy haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/
[root@haproxy haproxy-1.5.19]# cd /etc/haproxy/
[root@haproxy haproxy]# vim haproxy.cfg 
global
        log /dev/log    local0 info
        log /dev/log    local0 notice
        #log loghost    local0 info
        maxconn 4096  最大连接数,需考虑ulimit -n限制
        #chroot /usr/share/haproxy
        uid 99      用户UID
        gid 99      用户GID
        daemon      守护进程模式
        #debug 
        #quiet

defaults
        log     global   定义日志为global配置中的日志定义
        mode    http     模式为http
        option  httplog  采用http日志格式记录日志
        option  dontlognull 不记录健康检查日志信息
        retries 3  检查节点服务器失败次数,连续达到三次失败,则认为节点不可用
        redispatch  当服务器负载很高时,自动结束当前队列处理比较久的连接
        maxconn 2000  最大连接数
        contimeout      5000  连接超时时间
        clitimeout      50000 客户端超时时间
        srvtimeout      50000 服务器超时时间
listen webcluster 0.0.0.0:80  
    option httpchk GET /test.html 检查服务器的test.html文件
    balance roundrobin 负载均衡调度算法使用轮询算法roundrobin
    server inst1 192.168.235.179:80 check inter 2000 fall 3 定义在线节点
    server inst2 192.168.235.144:80 check inter 2000 fall 3

启动Haproxy服务

[root@localhost haproxy]# cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
[root@localhost haproxy]# cd /etc/init.d/
[root@localhost init.d]# ls
functions  haproxy  netconsole  network  README
[root@localhost init.d]# chkconfig --add /etc/init.d/haproxy
[root@localhost init.d]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@localhost init.d]# service haproxy start

在这里插入图片描述

编译安装Nginx服务器

[root@nginx1 nginx-1.12.2]# yum -y install pcre-devel zlib-devel gcc gcc-c++ make
[root@nginx1 nginx-1.12.2]# useradd -M -s /sbin/nologin nginx
[root@nginx1 nginx-1.12.2]# tar zxvf nginx-1.12.2.tar.gz -C /opt/
[root@nginx1 nginx-1.12.2]# cd nginx-1.12.2/
[root@nginx1 nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
[root@nginx1 nginx-1.12.2]# make && make install
[root@nginx1 nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@nginx1 nginx-1.12.2]# echo "this is kgc web" > /usr/local/nginx/html/test.html
[root@nginx1 nginx-1.12.2]# nginx
[root@nginx1 nginx-1.12.2]# netstat -natp | grep nginx

在这里插入图片描述

[root@nginx2 nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@nginx2 nginx-1.12.2]# echo "this is benet web" > /usr/local/nginx/html/test.html
[root@nginx2 nginx-1.12.2]# nginx
[root@nginx2 html]# netstat -natp | grep nginx

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
小结:
1,haproxy是一个可以通过搞可用性,搞负载均衡,以及基于tcp和http的代理的软件,主要有三种调度方式,rr,lc ,sh。haproxy是工作在七层上的,在负载均衡和出来并发的速度上由于nginx,能够补充nginx的一些缺点
2,lvs和haproxy的区别,lvs在企业应用中抗负载能力强,但是存在不足,lvs不支持正则表达,不能动静分离,复杂,维护成本高,而,haproxy是一块可提高可用性,负载均衡以及基于tcp和http的应用代理软件,支持高并发,基于端口的检查。
3,在配置安装中,make中指定诶和版本和系统的位数,其次在主配置文件配置日志记录和listen的内容,指定算法策略,和分配的服务器ip以及端口号。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值