设为首页 收藏本站
查看: 1181|回复: 0

[经验分享] 负载均衡——HAProxy

[复制链接]

尚未签到

发表于 2015-11-20 12:18:36 | 显示全部楼层 |阅读模式
HAProxy是一款免费、快速并且可靠的提供高可用性、负载均衡以及TCP(4层)和HTTP应用(7层)的代理。虽然HAProxy可以工作在第4层,但是通过对其官网配置文件的了解,第4层之能做简单的转发,主要应用还是偏于第7层,配置参数很多,可以做很多分析。
       前段时间因项目需求,对其做了一个简单的调研,给大家做一个分享。
       网络上关于HAProxy的讲解很多,但都千篇一律,因此想全面了解它的同学,建议登陆其官网(http://haproxy.1wt.eu/)阅读其详细的各方文档,不过官网全是英文,描述晦涩且相关demo很少,要做好准备。
       一、安装:
            # tar zcvf haproxy-1.3.20.tar.gz            # cd haproxy-1.3.20
            # make TARGET=linux26 PREFIX=/usr/local/haproxy #将haproxy安装到/usr/local/haproxy,TARGET表示linux内核版本,                  可以根据自己机器调整
            # make install PREFIX=/usr/local/haproxy

        二、启动:
            HAProxy启动时需要配置文件,首次接触可以使用安装文件夹中的examples中的默认配置文件haproxy.cfg启动,为了清晰,先创建一个配置文件目录
            #mkdir /usr/local/haproxy/conf
            将安装目录中的haproxy.cfg拷贝到/usr/local/haproxy/conf
            启动服务:/usr/local/haproxy/sbin/haproxy –f /usr/local/haproxy/conf/haproxy.cfg
            如果启动中遇到如下错误:
            “Cannotcreate ** 目录/文件”
            解决:mkdir 目录
        三、配置:
            配置文件主要分为两大部分:global 区域和代理区域。
            global :主要涉及进程方面的参数。如下所示:

            log 127.0.0.1   local0            #log 127.0.0.1  local1 notice
            #log loghost    local0 info
            maxconn 4096
            chroot /home/develop/haproxy
            uid 99
            gid 504   #developgroup id
            daemon
            nbproc 1
            pidfile /home/develop/haproxy/logs/haproxy.pid

            其他参数和具体参数意义请大家参考官网。
            代理区域:分为三个部分:defaults、listen、frontend、backend
            defaults:为它下面声明的区(如listen、frontend、backend)设置了默认的参数。如果一个defaults下面又声明了一个defaults,那么相同参数的取最下面defaults的值。如下所示:

            mode    http       #工作模式http代理,即7层,其他取值:tcp(工作在四层)/health         
            option  httplog
            option  httpclose
            option  dontlognull
            option  forwardfor
            option  redispatch
            retries 2
            maxconn 2000
            balance roundrobin     #后端服务器负载均衡模式
            stats   uri     /haproxy-stats
            contimeout      5000
            clitimeout      50000
            srvtimeout      50000            

            frontend:描述一系列用来接收客户端链接的套接字,就相当于socket编程中的listen、bind、accept功能。如下所示:
           
            bind 192.168.198.79:7910 #haproxy绑定地址和侦听端口           mode tcp
            acl shunt src 10.28.169.231
            use_backend new_server if shunt
            default_backend old_server

            backend:描述真正服务器,一个配置文件中可以定义多个。如下所示:

            server second 192.168.198.77:7910 #真正的后端服务器
            server third 192.168.198.78:7910

            listen:frontend和backend的组合,通常用于tcp的转发中。

            强大的acl:
            acl的语法如下:
            acl<aclname> <criterion> [flags] [operator] <value> ...
            如下所示:
            mode tcp
            acl shunt src 10.28.169.231
            这个acl的名称为 shunt,criterion为src,value为10.28.169.231。这个acl中没有flags和operator部分。
            意思是如果链接请求的客户端的ip地址为10.28.169.231,就匹配上。初看起来,作用不是很大,但它可以形成条件判断。例如这么一个应用场景:如果请求客户端地址是10.28.169.231,转发到10.28.169.114服务器上执行,其他请求客户端转发到10.28.169.12上执行。可以按如下配置项达到要求:
            frontend only1
                  bind 192.168.198.79:7910
                  mode tcp
                  acl shunt src 10.28.169.231
                  use_backend new_server if shunt
                  default_backend old_server
            backend new_server
                  server first 10.28.169.114:7910
            backend old_server
                  server second 10.28.169.12:7910
        四、总结
            对HAProxy只做了简单的调研了解和测试,只能理解到这个程度,如果描述有误,欢迎大家纠正,共勉!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-141491-1-1.html 上篇帖子: Keepalived+HAProxy配置高可用负载均衡,解决keepalived无法安装问题 下篇帖子: Haproxy+Keepalived+MySQL实现读均衡负载
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表