拓扑
思路:
Web上的请求,很大程度上需要在后端一台服务器上运行,而不能将请求1,与请求2分别在不同的真实机上。所以,就需要使用会话保持技术了。F5的会话保持有内置的,如简单会话保持,就是根据客户端ip地址而更新会话表的.还有cookie等,今天,我在这里演示的是通过iRule脚本来控制会话保持的,让其请求一直访问在某一台真实机上.
在没有使用此脚本的情况下,我们通过firefox强制刷新访问,结果:
它会在两台真实机上轮询访问,此时我们想让一个客户端的访问能固定到某一台真实机上,那么我们可以选择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资源里,再去强刷,结果:
在这里有几个知识点需要掌握的:
2. persist uie [HTTP::cookie"TestCookie"]
如果找到,则查询会话保持表,根据匹配结果将请求发送到对应的服务器上
3. persist add uie [HTTP::cookie"TestCookie"]
将服务器与找到的Cookie 内容进行对应
如果想了解更多,请关注我们的公众号
公众号ID:opdevos
扫码关注