当前位置:首页 > 行业动态 > 正文

f5七层负载均衡配置

配置虚拟服务器,定义池成员,编写iRules,设置健康检查与SSL卸载,实现F5七

F5七层负载均衡配置详解

创建虚拟服务器(Virtual Server)

虚拟服务器是七层负载均衡的核心配置,负责接收客户端请求并将流量分发到后端服务器池,以下是关键配置参数:

参数 说明
Name 虚拟服务器的名称(自定义,建议与业务相关)
Type 选择 Standard(标准模式)或 FastL4(四层加速模式,仅支持四层负载)
IP Address 绑定的公网IP或域名(如 0.0.0 表示所有IP)
Port 监听的端口(如HTTP为80,HTTPS为443)
Protocol 协议类型(如 HTTPHTTPSTCP 等)
Persistence 会话保持方式(如 cookiesource_addrssl 等)
Health Monitors 关联的健康检查(如 httptcphttps 等)
iRules 可选的流量处理规则(如URL重写、Cookie插入等)

示例配置:

# 创建一个HTTP虚拟服务器,监听80端口
ltm virtual /Common/vs_http {
    destination /Common/pool_backend
    ipAddress 192.168.1.100
    port 80
    protocol http
    persistence profile /Common/cookie_persistence
    health monitor /Common/http_monitor
}

配置iRules(流量处理规则)

iRules是基于TCL语言的脚本,用于实现复杂的流量控制逻辑(如URL重写、Header插入、会话保持等)。

常见场景及示例:

  • 基于Cookie的会话保持

    f5七层负载均衡配置  第1张

    # 检查请求Cookie,若不存在则插入新Cookie
    if { [HTTP::cookie "SESSIONID"] ne "" } {
        # 存在Cookie,直接转发
    } else {
        HTTP::respond 302 redirect "/login" # 重定向到登录页
    }
  • URL路径重写

    # 将 `/oldpath` 重写为 `/newpath`
    when HTTP_REQUEST {
        if { [HTTP::path] starts_with "/oldpath" } {
            HTTP::uri_rewrite "/newpath[string range [HTTP::path] 7 end]"
        }
    }

健康检查(Health Monitor)

七层健康检查通过发送应用层请求(如HTTP GET)验证后端服务器状态。

参数 说明
Type 检查类型(如 httphttpstcp
Interval 检查间隔(如 5s
Timeout 超时时间(如 3s
Receive String 预期返回内容(如 nginx
Send String 发送的请求内容(如 GET / HTTP/1.1

示例配置:

# 创建一个HTTP健康检查,检测后端服务器状态
ltm monitor /Common/http_monitor {
    interval 5s
    timeout 3s
    type http
    send "GET / HTTP/1.1r
Host:localhostr
r
"
    receive "200 OK"
}

SSL配置(HTTPS场景)

若需处理HTTPS流量,需配置SSL证书和加密策略。

关键步骤:

  1. 上传证书:通过F5 Web界面或命令行上传证书文件(.crt)和私钥(.key)。
  2. 创建SSL Profiles:定义加密套件、协议版本等。
    # 创建SSL配置文件,强制使用TLS 1.2+
    ltm profile /Common/ssl_profile {
        defaults from /Common/http_profile
        ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256"
        protocol_version TLSv1.2
    }
  3. 绑定虚拟服务器:将SSL Profile关联到HTTPS虚拟服务器。

后端服务器池(Pool)

服务器池定义后端真实服务器的列表,支持权重、动态端口等功能。

参数 说明
Members 后端服务器IP和端口(如 168.1.10:80
Load Balancing Method 分发算法(如 round_robinleast_connections
Monitor 关联的健康检查(如 /Common/http_monitor

示例配置:

# 创建一个后端服务器池,包含两台服务器
ltm pool /Common/pool_backend {
    loadBalancingMethod round_robin
    monitor /Common/http_monitor
    members add {
        { address 192.168.1.10 self_port 80 }
        { address 192.168.1.11 self_port 80 }
    }
}

常见问题与排查

  1. 问题:iRules不生效

    • 原因:iRules未绑定到虚拟服务器,或语法错误。
    • 解决:检查虚拟服务器的 iRules 字段是否关联了正确的规则,并通过F5控制台测试iRules语法。
  2. 问题:健康检查失败

    • 原因:后端服务器未启动、网络不通或健康检查参数错误。
    • 解决:手动访问后端服务器地址,验证服务是否正常;检查健康检查的 Receive String 是否与实际响应匹配。

相关问题与解答

问题1:iRules如何实现基于URL的请求转发?

解答
通过 HTTP::path 或正则表达式匹配URL路径,结合 HTTP::redirectpool 切换实现。

when HTTP_REQUEST {
    if { [HTTP::path] starts_with "/api" } {
        # 将/api开头的请求转发到API服务器池
        pool = /Common/pool_api
    } else {
        pool = /Common/pool_web
    }
}

问题2:如何优化健康检查性能?

解答

  • 减少检查频率:适当增加 Interval(如从 5s 调整为 10s)。
  • 启用被动检查:通过 pw_enabled 参数开启被动健康检查,利用后端服务器的响应状态更新健康状态。
  • 精简检查内容:仅检测关键路径(如 `/health
0