TCP 负载均衡

本文档将介绍如何配置 FGW 代理和负载均衡 TCP 流量。

介绍

在 L4 负载均衡过程中,FGW 主要基于网络层和传输层信息,如 IP 地址和端口号,来决定将流量分配到哪个后端服务器。这种处理方式使得 FGW 可以快速地进行决策并将流量转发给适当的服务器,从而提高了整体的网络性能。

如果要负载均衡 HTTP 流量,请参考文档 L7 负载均衡

前置条件

  • Pipy(版本 >= 0.90.3-2)
  • FGW Repo(版本 >= v1.0.0)
  • 两个后端服务

配置

  1. 要使用 L4 负载均衡,首先我们需要将监听端口的协议设置为 TCP,参考文档监听端口配置
{
  "Listeners": [
    {
      "Protocol": "TCP",
      "Port": 8080
    }
  ]
}
  1. 接下来是设置端口 8080 的路由规则,参考文档 TCP 协议端口号路由规则配置
{
  "RouteRules": {
    "8080": {"backendService1":100}
  }
}
  1. 配置服务端点,参考文档服务配置
{
  "Services": {
    "backendService1": {
      "Endpoints": {
        "127.0.0.1:8081": {
          "Weight": 100
        },
        "127.0.0.1:8082": {
          "Weight": 100
        }
      }
    }
  }
}
  1. 不要忘记插件链的配置,本文档主要介绍 TCP 流量的负载均衡,这里只需要引入 TCPRoute 插件链和 tcp/forward.js 插件即可。完整的插件配置可以参考文档完整的插件配置
"Chains": {
    "TCPRoute": [
      "tcp/forward.js"
    ]
  }
  1. 最后完整的配置如下,使用其替换 FGW 工程中的 pjs/config.json
{
  "Listeners": [
    {
      "Protocol": "TCP",
      "Port": 8080
    }
  ],
  "RouteRules": {
    "8080": {
      "backendService1": {
        "Weight": 100
      }
    }
  },
  "Services": {
    "backendService1": {
      "Endpoints": {
        "127.0.0.1:8081": {
          "Weight": 100
        },
        "127.0.0.1:8082": {
          "Weight": 100
        }
      }
    }
  },
  "Chains": {
    "TCPRoute": [
      "tcp/forward.js"
    ]
  }
}

多次访问负载均衡器的 8080 端口,可以看到轮流返回两个后端服务的响应。

Feedback

Was this page helpful?