haproxy 使用单个后端重新映射 tcp 端口

haproxy 使用单个后端重新映射 tcp 端口

我在 tcp 模式下使用 haproxy。我有一个监听多个端口的前端:

frontend front
   mode tcp
   bind *:20000
   bind *:20001
   ...
   default_backend back

并且单个后端无需改变端口就可以转发这些请求:

backend back
   server myserver server.host.com check port 20000
   server anotherServer another.host.com check port 20000
   server mybackup backup.host backup.host.com check port 20000 backup
   # some other useful backend logic, like logging
   # which I don't want to repeat a bunch of times

由于我们支持一些旧版 API,因此我们需要接受一些旧的、较低级别的端口并重新映射它们。例如,我想接受端口200并将其重新映射到2000020120001等。

我希望有一个前端指令来更改端口,就像您在 http 模式下对标头所做的那样,但我找不到。是否必须放弃我干净整洁的单一后端?

答案1

如果我是你的话我会使用 2 个后端。

如果您坚持,您可以使用use-server <server> if <condition>选项并测试dst_port

类似于:use-server bla20001 if dst_port 201或者类似于这样。

答案2

我认为没有好的办法可以做到这一点。我最终创建了更多的前端和后端。

相关内容