失效链接处理 |
HaProxy中文指南 PDF 下载
本站整理下载:
提取码:thz5
相关截图:
主要内容:
-------------
- LB1 接收 clients 的 requests
- 如果 1 个 request 不包含 cookie,则把这个 request 前传到分配的一个有效的 server - 作为回报, 1 个拥有 server 名称的 cookie "SERVERID"会被插入到 response 中
- 当 client 带有 cookie "SERVERID=A"再此访问时,LB1 就会知道这个 request 必须被前传到 server A. 同时删除这个 cookie 是的 server 不会看到它
- 当 server"webA"宕机时,request 会被前传至另外一个有效的 server,并且重新分配 cookie
2带 cookie 前缀的 HTTP 负载均衡和高可用性
2.1 带 cookie 前缀的 HTTP 负载均衡和高可用性
现在你可以不用添加更多的 cookie而是使用已有的 cookie如果应用已经生成 J 足够跟踪 session 的 SESSIONIDcookie我们会在看到该 cookie 时在它前面加上 servername 前
缀 由于 load-balancer 变得关 因此 可以通过利用 keepalived 使得运行在 VRRP 模式下
的第二台热备它 从网站上下载最新版本的 keepalived 并且安装在 load-balancer 1 和 LB2
上。http://www.keepalived.org/在两个 load-balancer(我们仍然使用原始 之间,我们使用一个共享 。在任何时刻只有 1 个 load-balancers 处于活跃状态。为了允许 proxy 在 Linux2.4 下绑定一个共享 ,需要 /proc 中启用如下配置:
#echo1>/proc/sys/net/ipv4/ip_nonlocal_bind
Config on both proxies (LB1 and LB2) :
listen webfarm 192.168.1.1:80
mode http
balance roundrobin
cookie JSESSIONID prefix
option httpclose
option forwardfor
option httpchk HEAD /index.html HTTP/1.0
server webA 192.168.1.11:80 cookie A check
server webB 192.168.1.12:80 cookie B check
本文档更新博客地址 http://itnihao.blog.51cto.com
It 你好 linux 学习文档之----haproxy 架构指南(中文翻译版)
QQ 972322817 itnihao@qq.com
server webC 192.168.1.13:80 cookie C check
server webD 192.168.1.14:80 cookie D check
提示:proxy 会修改 client 和 server 发出的每个 cookie,因此 proxy 能够访问每个 session 中的所有 request 的所有 cookie 是非常重要的。这意味着不是 keepalive(HTTP/1.1),需要使用'httpclose'选项。只有你能确认 clients 不会使用 keepalive,才能删除这个选项。
Configuration for keepalived on LB1/LB2 :
vrrp_script chk_haproxy { # Requires keepalived-1.1.13
script "killall -0 haproxy" # cheaper than pidof
interval 2 # check every 2 seconds
weight 2 # add 2 points of prio if OK
}
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 51
priority 101 # 101 on master, 100 on backup
virtual_ipaddress {
192.168.1.1
}
track_script {
chk_haproxy
}
}
描述:
—LB1 是 VRRP 的主( keepalived ), LB2 是备。他们都监控 haproxy 进程,并且如果 haproxyfailed 则降低他们的权重,迁移至另外的节点;
—LB1 将在 IP:192.168.1.1 上接收 clientrequest
—两个 LB 用他们的内部 IP 发送健康检测
—如果 request 不包含 cookie,request 会被前传至 1 个有效的 server
—在回复时,如果看到 JESSIONIDcookie,proxy 会在 cookie 加上以('~')为分隔符的 servername 前缀;
—如果 client 再次访问时带着"JSESSIONID=A~xxx" cookie,LB1 会知道这个 request 必须前传至 serverA。在把 cookie 发送给 server 之前,cookie 中的 servername 会先被剔除出来。
—如果 server"webA"宕机,requests 会被前传到另外的有效服务器,并且会重新分配 cookie;数据流:
|