TCP 负载均衡
本文档将介绍如何配置 FGW 代理和负载均衡 TCP 流量。
介绍
在 L4 负载均衡过程中,FGW 主要基于网络层和传输层信息,如 IP 地址和端口号,来决定将流量分配到哪个后端服务器。这种处理方式使得 FGW 可以快速地进行决策并将流量转发给适当的服务器,从而提高了整体的网络性能。
如果要负载均衡 HTTP 流量,请参考文档 L7 负载均衡。
前置条件
- Pipy(版本 >= 0.90.3-2)
- FGW Repo(版本 >= v1.0.0)
- 两个后端服务
配置
- 要使用 L4 负载均衡,首先我们需要将监听端口的协议设置为
TCP
,参考文档监听端口配置。
{
"Listeners": [
{
"Protocol": "TCP",
"Port": 8080
}
]
}
- 接下来是设置端口
8080
的路由规则,参考文档 TCP 协议端口号路由规则配置。
{
"RouteRules": {
"8080": {"backendService1":100}
}
}
- 配置服务端点,参考文档服务配置。
{
"Services": {
"backendService1": {
"Endpoints": {
"127.0.0.1:8081": {
"Weight": 100
},
"127.0.0.1:8082": {
"Weight": 100
}
}
}
}
}
- 不要忘记插件链的配置,本文档主要介绍 TCP 流量的负载均衡,这里只需要引入
TCPRoute
插件链和tcp/forward.js
插件即可。完整的插件配置可以参考文档完整的插件配置。
"Chains": {
"TCPRoute": [
"tcp/forward.js"
]
}
- 最后完整的配置如下,使用其替换 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?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
最后修改 November 29, 2023: add docs for fault injection and request mirror, fix typo (b53e400)