Chinaunix首页 | 论坛 | 博客
  • 博客访问: 567956
  • 博文数量: 30
  • 博客积分: 125
  • 博客等级: 民兵
  • 技术积分: 1871
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-03 11:29
文章分类

全部博文(30)

文章存档

2014年(9)

2013年(21)

分类: LINUX

2013-08-22 23:29:39

本系列博文是个人学习笔记,非原创,只加工,较粗糙,不喜勿喷。
本文是第一部分的最后篇章。

描述

LB1是VRRP【注 1】的master(配置了keepalived),LB2用来备份。两者同时监听HAProxy进程,在遇到故障时降低优先级,并将工作转到另一个节点。LB1以IP地址192.168.1.1【注 2】接收客户端请求。
两个负载均衡器都以本地IP发送信息。
如果有不含session的request,就会被转发到任意可用服务器。
如果有JESSIONID,就会添加服务器名称作为前缀,以~分割。
当有JESSIONID=A~xxx,LB1将获知这条请求必须投递给服务器A。在投递之前,服务器名会被抽离。
如果webA宕机了,请求会被发送到另一台服务器,cookie重置。【注 3】

数据流

(client)                           (haproxy)                         (server A) 
>-- GET /URI1 HTTP/1.0 ------------> | 
            ( no cookie, haproxy forwards in load-balancing mode. ) 
                                     | >-- GET /URI1 HTTP/1.0 ---------->
                                     |     X-Forwarded-For: 10.1.2.3
                                     | <-- HTTP/1.0 200 OK -------------< 
                    ( no cookie, nothing changed ) 
<-- HTTP/1.0 200 OK ---------------< |
>-- GET /URI2 HTTP/1.0 ------------> | 
    ( no cookie, haproxy forwards in lb mode, possibly to another server. ) 
                                     | >-- GET /URI2 HTTP/1.0 ---------->
                                     |     X-Forwarded-For: 10.1.2.3
                                     | <-- HTTP/1.0 200 OK -------------< 
                                     |      Set-Cookie: JSESSIONID=123 
    ( the cookie is identified, it will be prefixed with the server name ) 
<-- HTTP/1.0 200 OK ---------------< | 
    Set-Cookie: JSESSIONID=A~123     | 
>-- GET /URI3 HTTP/1.0 ------------> |
    Cookie: JSESSIONID=A~123         | 
    ( the proxy sees the cookie, removes the server name and forwards to 
    server A which sees the same cookie as it previously sent ) 
                                     | >-- GET /URI3 HTTP/1.0 ---------->
                                     |     Cookie: JSESSIONID=123
                                     |     X-Forwarded-For: 10.1.2.3
                                     | <-- HTTP/1.0 200 OK -------------< 
                    ( no cookie, nothing changed ) 
<-- HTTP/1.0 200 OK ---------------< | 
                                  ( ... ) 

注意

有些情况下,服务器场中有性能较强的主机,举例而言,如果webA的CPU主频是1GHz,webC的CPU 主频是3GHz,从CPU性能看,这两个服务器性能比可能差3倍。HAProxy为了处理这些情况,提供了 weight选项,分级,1~256,可以配置这个选项以获得更理想的负载分配。

server webA 192.168.1.11:80 cookie A weight 12 check 
server webB 192.168.1.12:80 cookie B weight 12 check
server webC 192.168.1.13:80 cookie C weight 26 check
server webD 192.168.1.14:80 cookie D weight 26 check

===========================================================
第一部分到此结束,下篇博文开始第二部分。

注解

【1】VRRP,虚拟路由器冗余协议,控制虚拟路由器地址的路由器成为主路由器,负责转发数据包到虚拟IP。注意,主机也可以是路由器,实际上,路由器本身就是一台简化电脑。
【2】LB1和LB2的共享IP,LB1是VRRP的master,

阅读(3025) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~