`
zhengdl126
  • 浏览: 2538370 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

haproxy+keepalived高可用负载均衡(七层)

 
阅读更多


HAproxy是一款基于TCP(第四层)和HTTP(第七层)应用的代理软 件,它也可以作为负载均衡器使用,而且完全免费。借助HAproxy,可以快速并可靠地提供基于TCP层和HTTP层应用的代理解决方案。HAproxy 最主要的优点是性能突出,它特别适合那些负载特别大的WEB站点,这些站点通常需要具备会话保持或七层处理功能。HAproxy完全可以支持数以万计的并 发链接,而且它的运行模式可以让你简单而安全地将它整合到你当前的架构中,同时可以保护你的WEB服务器不暴露到网络上(通过防火墙80端口映射的方 法)。作为一款优秀的负载均衡软件,HAproxy优点如下:

1、免费且开源,稳定性也非常好。我在自己所做的一些小项目中发现,单HAproxy也运行得不错,其稳定性可以与硬件级别的F5 BIG-IP相媲美。
2、负载带宽非常大。根据官方文档可知,HAproxy可以跑满10Gbps,对于软件级负载均衡器而言,这个数字是相当惊人的。
3、支持链接拒绝。因为保护一个链接保持打开状态的开销是很低的,有时我们需要防止蠕虫攻击,也就是通过限制它们的连接打开来防止它们的危害。这个功能已经拯救了很多被DDoS攻击的小型站点,这也是其他负载均衡器所不具备的。
4、支持全透明代理(已具备硬件防火墙的典型特点)。可以用客户端IP地址或任何其他地址来链接后端服务器,这个特性仅在Linux 2.4/2.6 内核打了cttproxy补丁后才可以使用。这个特性使得为某特殊服务器处理部分流量的同时又不修改服务器的地址成为可能。
5、支持TCP层的负载均衡。HAproxy现在多用于线上的MySQL集群环境,常用它作为MySQL(读)负载均衡。
6、强大的监控服务。自带强大的监控服务器状态的页面,在实际环境中我们可以结合Nagios来实现邮件或短信报警,这也是很多人非常喜欢它的原因之一。
7、支持虚拟主机。很多人认为它不支持虚拟主机,其实这是一个误解。
 
 
 
 


1.前面两台负载均衡服务器ha1、ha2,后面两台web服务器web1、web2

ha1:192.168.1.8

ha2:192.168.1.9

vip:192.168.1.10

web1:192.168.1.33

web2:192.168.1.34

2.在两台ha上安装haproxy

tar zxvf haproxy-1.4.21.tar.gz -C /usr/src/

cd /usr/src/haproxy-1.4.21/

make TARGET=linux26 PREFIX=/usr/local/haproxy

make install PREFIX=/usr/local/haproxy

cd /usr/local/haproxy

mkdir conf

cd conf/

cp /usr/src/haproxy-1.4.21/examples/haproxy.cfg ./

vi haproxy.cfg

global

      log 127.0.0.1 local0

      maxconn 4096

      chroot /usr/local/haproxy

      uid 99

      gid 99

      daemon

      nbproc 1

      pidfile /usr/local/haproxy/logs/haproxy.pid

defaults

      log 127.0.0.1 local3

      mode http

      option httplog

      option httpclose

      option forwardfor

      option redispatch

      option dontlognull

      retries 2

      maxconn 2000

      balance source

      stats uri /haproxy-stats

      contimeout 5000

      clitimeout 50000

      srvtimeout 50000

listen www.qikangwei.com

      bind *:80

      option httpchk HEAD /index.php HTTP/1.0

      server web1 192.168.1.33:80 cookie applinst1 check inter 2000 rise 2 fall 5

      server web2 192.168.1.34:80 cookie applinst2 check inter 2000 rise 2 fall 5

两台ha的haproxy.cfg配置一样. ..

mkdir /usr/local/haproxy/logs

vi /etc/syslog.conf 添加

local3.*    /var/log/haproxy.log

local0.*    /var/log/haproxy.log

vi /etc/sysconfig/syslog 修改

SYSLOGD_OPTIONS="-r -m 0"

service syslog restart

3.在两台ha安装keepalived

tar zxvf keepalived-1.1.15.tar.gz -C /usr/src/

cd /usr/src/keepalived-1.1.15/

./configure

make

make install

cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/sbin/keepalived /usr/sbin/

mkdir /etc/keepalived

cd /etc/keepalived

cp /usr/local/etc/keepalived/keepalived.conf ./

vi keepalived.conf

! Configuration File for keepalived

global_defs {
   notification_email {
 davidqikangwei@126.com
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_master
}

vrrp_instance hello {
    state MASTER        ###另外一台ha上改为BACKUP
    interface eth0
    virtual_router_id 51
    priority 150        ###另外一台ha上的值要比这个小
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.1.10
    }
}
4.启动keepalived和haproxy

service keepalived start

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg

(重启haproxy的命令:

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg -st `cat /usr/local/haproxy/logs/haproxy.pid`)

5.若要支持虚拟主机,可以修改haproxy.cfg配置文件 如下

global

      log 127.0.0.1 local0

      maxconn 4096

      chroot /usr/local/haproxy

      uid 99

      gid 99

      daemon

      nbproc 1

      pidfile /usr/local/haproxy/logs/haproxy.pid

defaults

      log 127.0.0.1 local3

      mode http

      option httplog

      option httpclose

      option forwardfor

      option redispatch

      option dontlognull

      retries 2

      maxconn 2000

      stats uri /haproxy-stats

      contimeout 5000

      clitimeout 50000

      srvtimeout 50000

frontend http_80_in

      bind *:80

      mode http

      acl qikangwei hdr_dom(host) -i www.qikangwei.com

      acl helloqikangwei hdr_dom(host) -i www.helloqikangwei.com      

      use_backend qikangwei_com if qikangwei                          

      use_backend helloqikangwei_com if helloqikangwei                 

backend qikangwei_com                                                   

      mode http

      balance source

      option httpchk HEAD /index.php HTTP/1.0

      server web1 192.168.1.33:80 cookie applinst1 check inter 2000 rise 3 fall 3

      server web2 192.168.1.34:80 cookie applinst2 check inter 2000 rise 3 fall 3

backend helloqikangwei_com

      mode http

      balance source

      option httpchk HEAD /index.php HTTP/1.0

      server web1 192.168.1.33:80 cookie applinst1 check inter 2000 rise 3 fall 3

      server web2 192.168.1.34:80 cookie applinst2 check inter 2000 rise 3 fall 3

 

 

 

 

---------------------------- Haproxy配置多域名负载均衡

global
        user    haproxy    #所属运行的用户uid
        group   haproxy   #所属运行的用户组
        chroot  /usr/local/haproxy

        daemon  #运行方式为后台工作
        quiet  #安装模式,启动时无输出
        nbproc  4 #创建工作的进程数目

        maxconn 40000
        log 127.0.0.1 local0 notice    #日志文件的输出定向
        spread-checks 2

defaults
        timeout server  150s
        timeout connect 150s
        timeout client  150s
        timeout http-request 150s
        timeout queue   150s

        http-check disable-on-404
        option httpclose    #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现
        option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数,可以从Http Header中获得客户端ip
 retries 3            #3次连接失败就认为服务器不可用,主要通过后面的check检查
        option  redispatch    #当serverid对应的服务器挂掉后,强制定向到其他健康服务器
 stats uri /status #haproxy 监控页面的访问地址
 stats auth    admin:admin #查看监控的帐户密码
 stats   refresh 60s             #监控页面的刷新时间

frontend http  
        #option forwardfor header X-Real-IP
 bind-process 4                #针对多核处理,启用处理器数量
        maxconn 1000000
        bind :80
        acl host_ileiming hdr_beg(host) -i www.ileiming.com 
 use_backend www.ileiming.com if host_ileiming #判断域名www.ileiming.com用host_ileiming负载均衡规则
        acl host_keatv hdr_beg(host) -i www.keatv.com 
 use_backend www.keatv.com if host_keatv  #判断域名www.keatv.com用host_keatv负载均衡规则
 option httplog #启用被动的http连接关闭
 option dontlognull #保证HAProxy不记录上级负载均衡发送过来的用于检测状态没有数据的心跳包。

backend www.keatv.com
        balance roundrobin   #负载均衡算法
 option  httpchk HEAD /index.html HTTP/1.0 #健康检查
        mode    http #所处理的类别
        cookie  SERVERID insert indirect
        option  abortonclose
        #option  forwardfor #default或是frontend设置了,这里就可以不用设置了
        server  web1       192.168.1.100:80  check cookie web1 rise 2  fall 3  #后端的主机 IP &权衡
 server  web2       192.168.1.101:80  check cookie web1 rise 2  fall 3  #后端的主机 IP &权衡
backend www.ileiming.com
        balance roundrobin   #负载均衡算法
 option  httpchk HEAD /index.php HTTP/1.0 #健康检查
        mode    http #所处理的类别
        cookie  SERVERID insert indirect
        option  abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链
        #option  forwardfor #default或是frontend设置了,这里就可以不用设置了
        server  web1       192.168.1.102:80  check cookie web1 rise 2  fall 3  #后端的主机 IP &权衡
 server  web2       192.168.1.103:80  check cookie web1 rise 2  fall 3  #后端的主机 IP &权衡

balance 后面是负载均衡算法,haproxy给出了一下几个值作为负载均衡算法,大家可以根据自己的需求选择自己需要的负载均衡算法
 roundrobin  每个服务器根据权重轮流使用,如果服务器的处理时间平均分布,这是最流畅和公平的算法。算法是动态的,对于实例启动慢的服务器的权重会在运行中调整。每个 backend的活动服务器在设计上限制为4128个。在一些大的群里面, 当服务器很短的宕机后恢复回来,有时会有几百个请求被重新整合到群当中,并开始接收处理。尽管很少发生,但是很正常。这也说明了有机会监视它们,所以不必 担心。

       static-rr  每个服务器根据权重轮流使用,类似roundrobin,但它是静态的,意味着运行时修改权重是无效的。另一方面,它对服务器的数量没有设计上的限制,服 务器启动后便会立即进到群中,整个分发方案会重新计算。这会略微降低CPU的运行(约1%)。

       leastconn  连接数最低的服务器优先接收连接。Round-robin用于负载相同的服务器,使每台服务器都被使用。leastconn建议用于长会话服务,例如 LDAP, SQL, TSE等,而不是很适合短会话协议,如HTTP。算法是动态的,对于实例启动慢的服务器的权重会在运行中调整。

       source    对源IP地址进行哈希,用可用服务器的权重总数除以哈希值,根据结果进行分配。只要服务器正常,同一个客户端IP地址总是访问同一台服务器。如果哈希的结 果随可用服务器数量而变化,那么有的客户端会定向到不同的服务器。该算法一般用于不能插入cookie的TCP模式。它还可以用于广域网上,为拒绝使用会 话cookie的客户端提供最有效的粘连。该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据"hash-type"的变化做调 整。

       uri        对URI左端(问号之前)进行哈希,用可用服务器的权重总数除以哈希值,根据结果进行分配。只要服务器正常,同一个URI地址总是访问同一台服务器。一般 用于代理缓存和反病毒代理,以最大限度的提高缓存的命中率。该算法只能用于HTTP后端。该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是 算法会根据"hash-type"的变化做调整。算法支持两个可选参数"len" 和 "depth", 都是后跟正整数。“len”参数指定算法只处理URI从头开始的字符数,据此计算哈希。因为大多URI以"/"开头,所以"len"最好不要设为 1。"depth" 参数指定URI中最大的路径深度,据此计算哈希。请求中的每个斜线为一级。如果同时声明了这两个参数,则截取URI时必须同时满足。

 url_param  在HTTP GET请求的查询串中查找<param>中指定的URL参数。若使用了修饰符"check_post",如果在URL问号('?')后面的查 询串中找不到参数,就会搜索HTTP POST 请求实体。或者在指定的一些字节后面尝试搜索消息体。如果搜索不到实体, 则使用round robin算法。例如,假设客户端总是在前128个字节发送LB参数,就可以指定它。默认为48。如果到达网关的字节数量不够,实体数据是检索不到的,至 少有:(default/max_wait, Content-Length or first chunk length)。如果Content-Length没有或为0,就不需要等待客户端发送更多的数据。当Content-Length有值且大 于<max_wait>,则等待仅限于<max_wait>,并假设有足够的数据用于搜索参数的存在。万一Transfer- Encoding被用了,则只能检查第一个块。如果参数值被块边界分隔开,则只能随机均衡负载了。如果参数后面跟着 ('=') 和一个值,则可以根据这个值进行哈希,用可用服务器的权重总数除以哈希值,根据结果进行分配。还可用于跟踪请求中的用户身份,只要服务器正常,同一个用户 ID的请求总是发给同一台服务器。如果没有参数或参数没有值,则使用轮询算法。该算法只用于HTTP后端。该算法默认是静态的,所以运行时修改服务器的权 重是无效的,但是算法会根据"hash-type"的变化做调整。

 

 

 

 

 

 

分享到:
评论

相关推荐

    Keepalived+HAProxy实现MySQL高可用负载均衡的配置

    【MySQL高可用负载均衡配置】 在IT领域,确保数据库系统的高可用性和负载均衡是至关重要的,特别是对于大型企业或高流量网站。Keepalived和HAProxy是两个强大的工具,常用于实现这一目标,尤其是针对MySQL数据库。在...

    Web负载均衡解决方案-HAproxy+keepalived实现高可用负载均衡.docx

    本文将对 Web 负载均衡解决方案进行详细介绍,该解决方案基于 HAproxy 和 keepalived 实现高可用负载均衡。HAProxy 是一种提供高可用性、负载均衡以及基于 TCP 和 HTTP 应用的代理,可以支持虚拟主机,免费、快速...

    Mariadb集群+haproxy+keepalived +性能测试

    首先,MariaDB集群的安装和配置是构建高可用和负载均衡数据库的关键步骤。MariaDB是MySQL的一个分支,提供了一组与MySQL类似的工具和服务。Galera是MariaDB实现的一种多主复制集群解决方案,可以实现多台数据库...

    Haproxy+Keepalived配置文件(带注释)

    Haproxy是一款开源的高性能、高可用的负载均衡器,它能对HTTP、TCP等多种协议进行负载均衡,支持四层和七层的负载调度。Haproxy以其高效、稳定和易于管理的特点,在许多大型网站中被广泛应用。配置文件`haproxy`包含...

    haproxy+keepalived实现高可用负载均衡(实例配置)

    Haproxy 是一款开源的高性能、高可用的代理服务器,它可以作为七层负载均衡器,处理 HTTP、TCP 等多种协议。Keepalived 则是一个用于网络服务高可用的工具,它主要通过 VRRP 协议来监控和切换网络服务,确保在主...

    用Keepalived与HAProxy实现高可用负载均衡的配置方法.docx

    【Keepalived与HAProxy高可用负载均衡配置详解】 负载均衡是现代分布式系统中的关键组件,它通过将网络流量分发到多个后端服务器,确保服务的稳定性和高可用性。Keepalived与HAProxy结合使用,能构建出一套强大的...

    haproxy高可用负载均衡方案

    haproxy高可用负载均衡方案 本方案旨在解决数据中心多款业务前台接入处于单点状态的问题,通过keepalived+haproxy方案实现高可用负载均衡,以保证业务的可用性。 keepalived介绍 keepalived是基于VRRP协议的高...

    搭建MySQL高可用负载均衡集群.docx

    搭建MySQL高可用负载均衡集群是确保数据库服务稳定性和性能的关键步骤。随着用户量和数据量的不断增长,单个MySQL实例可能无法满足高并发和大数据处理的需求,这时就需要采用一些策略来扩展数据库服务,比如主主复制...

    基于haproxy构建负载均衡集群.docx

    HAProxy 是一种免费、快速并且可靠的负载均衡解决方案,提供高可用性、负载均衡以及基于 TCP 和 HTTP 应用的代理,支持虚拟主机。HAProxy 特别适用于那些负载特大的 web 站点,这些站点通常又需要会话保持或七层处理...

    负载均衡haproxy双机双主3

    Haproxy不仅支持四层负载均衡,即基于TCP的负载均衡,还支持七层负载均衡,即基于HTTP的应用级负载均衡。通过这种负载均衡,它可以有效地分发网络流量,避免单个服务器过载,确保服务的持续稳定。 在中小型企业的...

    软件级负载均衡介绍

    软件级负载均衡工具如 LVS、Nginx 和 HAProxy 为不同规模的企业提供了高性价比的解决方案。LVS 适合需要高性能和高可靠性的场景;Nginx 在灵活性和多功能性方面表现突出;而 HAProxy 则在配置灵活性和高级路由方面...

    论当前一种先进实用的IT系统架构设计

    - **HAProxy+Keepalived+Squid**:对Squid服务器进行负载均衡,提高可用性。 - **Squid+Tomcat**:Squid缓存静态页面,Tomcat处理动态请求。 - **Tomcat集群**:5台Tomcat服务器构成集群,提供服务。 - **MySQL**:...

    haproxy-1.8.1.tar.gz

    haproxy-1.8.1.tar.gz 是一个...此外,haproxy可以与其他工具如Nginx、Keepalived等配合使用,构建更强大的高可用和负载均衡架构。总之,haproxy是一个强大而灵活的解决方案,对于构建可靠、高效的网络服务至关重要。

    linux 服务器集群与负载均衡技术

    5. **Keepalived**:Keepalived提供了VRRP协议实现虚拟路由器冗余,配合LVS进行高可用性负载均衡。 6. **Nginx和HAProxy**:这两种软件常作为七层负载均衡器使用,基于HTTP请求内容进行负载分配,适用于Web服务场景...

    Keepalived功能扩展1

    在实际应用中,Keepalived 广泛应用于服务器集群、数据库高可用性、负载均衡等领域。例如,在 MySQL кластер中,Keepalived 可以用来监控 MySQL 服务器的状态,并在服务器故障时自动将其从热备组中移除,从而...

    LVS 负载均衡器总结

    软件负载均衡器如LVS(Linux Virtual Server)专注于四层负载均衡,基于套接字(IP+端口)分配流量,而Nginx和Haproxy则更适用于七层负载均衡,它们可以根据用户请求内容进行调度。 LVS的工作原理依赖于用户空间的`...

    Nginx反向代理1

    HAProxy则是一个专注于高性能的七层负载均衡器,同样支持方向代理功能。 反向代理与正向代理的主要区别在于,反向代理是将客户端的请求转发给服务端,而正向代理则是将服务端的响应转发给客户端。数据转发则是在...

Global site tag (gtag.js) - Google Analytics