拓扑
思路:
Web上的请求,很大程度上需要在后端一台服务器上运行,而不能将请求1,与请求2分别在不同的真实机上。所以,就需要使用会话保持技术了。F5的会话保持有内置的,如简单会话保持,就是根据客户端ip地址而更新会话表的.还有cookie等,今天,我在这里演示的是通过iRule脚本来控制会话保持的,让其请求一直访问在某一台真实机上.
它会在两台真实机上轮询访问,此时我们想让一个客户端的访问能固定到某一台真实机上,那么我们可以选择F5自带的会话保持,或者我们想要更灵活的机制来控制,这里我就想到了在后端真实机上来定制cookie的名字来做到灵活性,web脚本如下:
<?php
$value = "php_web03";
setcookie("TestCookie",$value);
echo "This is web03!"
?>
<?php
$value = "php_web04";
setcookie("TestCookie",$value);
echo "This is web04!"
?>
iRule脚本如下:
when HTTP_REQUEST {
if { [HTTP::cookie exists "TestCookie"] } {
#log "[HTTP::cookieTestCookie]"
persist uie [HTTP::cookie "TestCookie"]
}
}
when HTTP_RESPONSE {
if { [HTTP::cookie exists "TestCookie"] } {
persist add uie [HTTP::cookie "TestCookie"]
}
}
将 iRule 脚本挂到 vs 资源里,再去强刷 , 结果 :在这里有几个知识点需要掌握的:
1.F5 会话保持负载均衡过程2. persist uie [HTTP::cookie"TestCookie"]
如果找到,则查询会话保持表,根据匹配结果将请求发送到对应的服务器上
3. persist add uie [HTTP::cookie"TestCookie"]
将服务器与找到的Cookie 内容进行对应
本文转自hahazhu0634 51CTO博客,原文链接:http://blog.51cto.com/5ydycm/1242363,如需转载请自行联系原作者