使用Haproxy搭建集群

Haproxy背景

  • Haproxy是用c语言编写的自由开放源代码的软件,提供高可用,负载均衡,和基于tcp和http的应用程序代理
  • Haproxy特别适合负载很大的web站点,这些站点通常需要会话保持或者七层处理,Haproxy运行在当前的硬件上,可以支持上万的并发请求,并且使得web服务器不会被暴露在外

常见的web集群调度器

硬件

通常使用较多的是F5,国内使用较多是梭子鱼,绿盟等

软件

通常使用开源的Haproxy,nginx,lvs

Haproxy作为高性能负载均衡器的主要有点

  • Haproxy在负载均衡的速度和并发处理上优于nginx
  • Haproxy支持虚拟主机,工作在4,7层
  • Haproxy有会话保持,cookie引导等工作
  • Haproxy支持以url的方式检测后端服务器状态
  • Haproxy可以对mysql进行负载均衡
  • Haproxy支持很多负载均衡算法:轮询。加权轮询,原地址保持,请求URL,根据cookie

Haproxy算法介绍

  • RR(轮询):轮询调度
  • LC(最小连接):根据后端节点连接数动态分配前端请求
  • SH(基于访问调度算法):用于一些有会话记录在服务器端的场景

三种web集群调度器的差别

Haproxy

  • 支持八种负载均衡策略
  • 仅做负载均衡软件使用,在高并发情况下性能优于nginx
  • 支持URL健康检查,支持会话保持

nginx

  • 支持正则表达式
  • 对网络稳定性要求不高
  • 只支持基于端口检查
  • 不支持会话保持
  • 反向代理能力强

lvs

  • 应用范围广泛
  • 在四层做分发作用,负载均衡能力强
  • 只能基于四层端口转发

Haproxy集群部署

实验环境:
Haproxy服务器: Haproxy:12.0.0.8/8
nginx服务器:nginx01:12.0.0.13/8
nginx服务器:nginx02:12.0.0.10/8

部署Haproxy服务器

  • 先解压包,布置依赖环境
[root@ha ~]# tar zxvf haproxy-1.5.19.tar.gz
[root@ha ~]# yum install -y pcre-devel bzip2-devel gcc gcc-c++ make

  • 然后编译
[root@ha haproxy-1.5.19]# make TARGET=linux2628 ARCH=x86_64	//指定内核版本和系统位数,2.6.18-371.e15,此时该参数用TARGET=linux26;kernel大于2.6.28的用TARGET=linux2628
[root@ha haproxy-1.5.19]# make install

  • 先创建一个放haproxy的配置文件的目录,然后修改内容
[root@ha haproxy-1.5.19]# mkdir /etc/haproxy
[root@ha haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/
[root@ha haproxy-1.5.19]# cd /etc/haproxy/
[root@ha haproxy]# vim haproxy.cfg 
global
        log /dev/log    local0 info		//local0为日志设备,默认存放到系统日志
        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		//负载均衡调度算法使用轮询算法
        server  inst1 12.0.0.10:80  check inter 2000 fall 3		//定义在线节点
        server  inst2 12.0.0.13:80  check inter 2000  fall 3
//check inter 2000		//表示haproxy服务器和节点之间的一个心跳频率
//fall 3				//表示连续三次检测不到心跳频率则认为该节点失效

  • 然后启动Haproxy
[root@ha ~]# cp haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
[root@ha ~]# cd /etc/init.d/
[root@ha init.d]# ls
functions  haproxy  jexec  netconsole  network  README
[root@ha init.d]# chmod +x haproxy 
[root@ha init.d]# chkconfig --add /etc/init.d/haproxy 
[root@ha init.d]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@ha haproxy]# service haproxy start 
Starting haproxy (via systemctl):                          [  确定  ]

部署nginx服务

详情请看nginx服务搭建

  • 然后在两台nginx服务器上创建一个主页为test.html的文件,然后启动服务
[root@nginx01 ~]# echo "this is jd" > /usr/local/nginx/html/test.html
[root@nginx02 ~]# echo "this is taobao" > /usr/local/nginx/html/test.html

  • 然后在浏览器中测试,以此达到负载均衡效果
    在这里插入图片描述

小结

如果中小型web应用,日访问量小于1000万,用nginx就可以,如果机器很多,可以用dns轮询,服务器比较多时可以考虑lvs

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值