HAProxy初探及简单案例_Net21_第二周

前言

随着互联网业务的迅猛发展,大型电商平台和门户网站对系统的可用性和可靠性的要求越来越高,高可用集群、负载均衡集群成为一种热门的系统架构解决方案。在众多的负载均衡解决方案中,有基于硬件的负载均衡设备,例如F5、Big-IP等,也有基于软件的负载均衡产品,如LVS、Nginx以及本文介绍的HAProxy等。在软件的负载均衡产品中,又分为两种实现方式,分别是基于操作系统的实现和基于第三方应用的实现。LVS就是基于Linux操作系统的一种软负载实现,而HAProxy就是基于基于第三方应用实现的软负载均衡。

HAProxy简介

HAProxy是一个开源、高性能、基于TCP(四层)和HTTP(七层)应用的负载均衡软件,它的显著优点如下:
  • 可靠性与稳定性都非常出色,可与硬件级设备媲美。

  • 支持多种负载均衡调度算法,并且也支持session保持。

  • 理论上1G可用RAM空间可维持4W-5W个并发连接,性能强大可见一斑。

  • 拥有功能强大的后端服务器的状态监控web页面,可以实时了解设备的运行状态,还可实现设备上下线等简单操作。

  • HAProxy还拥有功能强大的ACL支持,在架构设计与实现上带来很大方便。

HAProxy配置概述

在讲配置之前,顺带提一下安装HAProxy,以Centos7为例的话可以直接yum安装一下就ok了。安装完成之后默认的主配置文件路径为/etc/haproxy/haproxy.cfg.这个主配置文件主要由5个部分组成:
  • global段:
    用来设定全局配置参数,配置的为进程级别的参数,且通常与其运行的OS相关。

  • defaults段:
    默认参数的配置,在此处配置的各种参数默认会被frontend、backend、listen段引用,而如果frontend、backend、listen段如果设置新的相对应的参数,会覆盖defaults段的设定。

  • frontend段:
    用于定义一系列监听的套接字,这些套接字可接受客户端请求并与之建立连接。

  • backend段:
    用于定义一系列“后端”服务器,代理将会将对应客户端的请求转发至这些服务器。

  • listen段:
    是frontend和backend的结合体,通过关联“前端”和“后端”定义了一个完整的代理,通常只对TCP流量有用。

HAProxy简单配置实例

拓扑环境很简单,3台虚拟机作为3个节点,其中一台运行HAProxy,另外2台作为后端Web Server。其中192.168.1.67为HAProxy节点的地址,.68和.69是后端Web Server地址。
  • HAProxy的日志配置策略
       默认情况下,HAProxy没有配置日志输出功能,但是为了管理和维护方便,日志的输出很有必要,这里简单介绍下HAProxy如何启用日志功能:
      

       ①首先在global段开启,一般默认是开启的;

    vim /etc/haproxy/haproxy.conf
    global
        log         127.0.0.1 local2

       ②以rsyslog管理系统日志为例:
        

    vim /etc/rsyslog.conf
    $ModLoad imudp
    $UDPServerRun 514                                   #启用相关协议与监听接口
    local2.*          /var/log/haproxy.log            #设置日志输出路径
    systemctl restart rsyslog.service

         

  • frontend与backend简单示例
    实现将来自用户的80端口的http请求转发至后端8000上的server服务:

        ①编辑Web Server主配置文件(/etc/httpd/conf/httpd.conf),找到约在42行的Listen 80,并在下面追加:

Listen 8000

        并且在两台web服务器的首页添加内容以示区别。

        ②编辑haproxy主配置文件如下:

frontend  main :80         #:80代表匹配任意源地址且源端口为80的请求
    
        default_backend websrvs
backend websrvs
    
        balance     roundrobin      #轮询调度
    
        server web1 192.168.1.68:8000 check
    
        server web2 192.168.1.69:8000 check     #check用于做健康状态检测

        ③启动haproxy

  • 实例效果

    web1.jpgweb2.jpg

原创文章,作者:Net21_charles,如若转载,请注明出处:http://www.178linux.com/24613

(1)
Net21_charlesNet21_charles
上一篇 2016-07-22 10:08
下一篇 2016-07-22 10:09

相关推荐

  • linux 使用者管理 (9月底)

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。     ~]#w | cut -d ' ' -f 1 |uniq -u 2、取出最后登录到当前系统的用户的相关信息。 ~]# last -1(数字1) 3、取出当前系统上被用户当作其默认shell的最多的那个shell。 ~]#…

    Linux干货 2016-10-02
  • 马哥教育网络班21期第5周课程练习

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; # grep '^[[:space:]]\+' /boot/grub2/grub.cfg 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; # grep…

    Linux干货 2016-08-05
  • linux学习心得

    Linux学习心得 之前没怎么了解过linux运维,机缘巧合来到了这里,刚刚开始一脸蒙圈,或者说现在仍然是,不过最大的收获是我在这里真正认真学习了,有了一个端正的态度,一切都是好的开始。 这一周,我学习了linux的发展史,如何安装系统,一些简单的命令等。。。。下面我一一介绍一下,初学者,可能简单粗暴,多多指教! 系统安装: 1:首先用光盘进行linuxIS…

    2017-07-16
  • shell 脚本中数组的总结

    描述:   变量是存储单个元素的内存空间,而数组是多个变量的集合,是一个连续的空间;但整个数组只能有 的名字。   数组内的数据都有指定的索引,从而找到数组内所指定的数据。索引的编号是从0开始的,依次递增(0,1,2,3,…),这种方式叫数值索引。格式为:数组名[索引];${ARRAY_NAME[INDEX]}。索引也支持自定…

    Linux干货 2016-08-29
  • grep,egrp,fgrep 命令与正则表达式

    一 简介     grep (global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 Unix的grep家族包括grep、egrep和fgrep…

    Linux干货 2016-01-19
  • 开机启动流程

    Centos的开机启动流程 具体步骤解释:  第一步:加电自检:POST         加电自检是检测硬件设备是否正常运行,以及一些外围设备的输入输出是否存在。 自检功能的实现是依靠BIOS软件程序实现的 BIOS即基本输入输出系统,它是装载在一个硬件芯片COMS上的,加电过程…

    Linux干货 2016-09-13

评论列表(1条)

  • 马哥教育
    马哥教育 2016-07-22 10:46

    写的很好,排版还可以在漂亮一点,用5w1h的思想写,加油