首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用F5替换Apache以平衡4个web服务器上的负载

用F5替换Apache以平衡4个web服务器上的负载
EN

Stack Overflow用户
提问于 2016-06-02 15:32:41
回答 1查看 194关注 0票数 0

请原谅我对F5和它的实现一无所知。我们有4个web服务器,我们希望在其上使用F5来分发负载。我们正在替换Apache Camel软件负载均衡器。

当前实现:

  1. 当客户端发起交互并向SW发送SOAP请求时,每个客户端都会创建一个会话ID。http://Server1:7001/WebService
  2. SW负载均衡器使用循环算法从以下4个目的地查找合适的服务器,并创建服务器端点和会话ID的映射。http://Server1:9080/WebService http://Server2:9080/WebService http://Server3:9080/WebService http://Server4:9080/WebService
  3. SW LB将此会话维持10分钟。在此期间,如果同一个会话ID再次发出请求,则使用相同的目标服务器来处理请求。因此,以这种方式,如果用户与Server2有会话-此服务器将继续为他服务,直到用户结束会话(或会话超时)。

可以在Server1上看到,我们有负载均衡器+ web服务。我们是在F5上分解SW负载均衡器。

以上方案可以在F5上实现?F5会给我们一个新的网址吗?我们将与客户分享哪些请求?就像[端口]/WebService

它是否能够从传入的请求中提取会话ID,并能够维护粘性的会话映射?

EN

回答 1

Stack Overflow用户

发布于 2016-06-03 01:41:48

是的,您可以用F5代替Apache,并且您的设置非常标准。创建4个节点、4个成员的池和虚拟服务器。

F5将需要一个新的IP地址URL,除非Server1放弃该地址。您还可以使用标准端口( HTTP为80,HTTPS为443 )。

最困难的部分是会话ID持久性。您需要创建一个具有600秒超时的通用持久性配置文件(Local流量? Profiles ? Persistence),并创建一个基于iRule格式的记录。iRules可能很棘手,但是DevCentral社区已经有了一个您可以适应的解决方案。

来自斯坦尼斯拉斯DevCentral:如何获得响应参数贷款。这个iRule将捕获<uid>标记中的参数。

代码语言:javascript
复制
when HTTP_RESPONSE {
  # Trigger collection for up to 1MB of data
  if {[HTTP::header exists "Content-Length"] && [HTTP::header "Content-Length"] <= 1048576}{
    set content_length [HTTP::header "Content-Length"]
  } else {
      set content_length 1048576
  }
  # Check if $content_length is not set to 0
  if { ([HTTP::status] == 200) && ($content_length > 0)} {
    HTTP::collect $content_length
  }
}

when HTTP_RESPONSE_DATA {
    # do stuff with the payload
    #find the application unique identifier between <uid> and </uid> (5 is the length of <uid> string)
    persist add uie [string trim [findstr [HTTP::payload] "<uid>" 5 "</uid>"]]
}

when HTTP_REQUEST {
    persist uie [string trim [findstr [HTTP::payload] "<uid>" 5 "</uid>"]]

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37596210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档