HAproxy 1.6配备了Lua和TCP重定向功能。

嗨, 我正在尝试使用基于 TCP 内容的 HAproxy 重定向流量。通过 Lua,我可以注册一个检查内容的服务,像这样:

core.register_service("chooseserver", "tcp", function(AppletTCP)
  function string.checkit(str)
      --我的逻辑在这里
      return string.char('server1')
  end

  tcp_line = AppletTCP:getline()
  server = tcp_line:checkit()
  if server == 'server1'   then
    -- 这里
    AppletTCP:send(tcp_line)
  else
    AppletTCP:send(tcp_line)
  end
end)

在 HAproxy 配置中可以添加:

listen proxy
   bind 127.0.0.1:10001
   tcp-request content use-service lua.chooseserver

这将执行此服务(我可以记录信息),但是 AppletTCP: send 没有按照我预期的方式(没有错误)发送包到后端定义,并且我无法将 TCP 包发送到我选择的服务器。

我不确定是否应该改用 register_action 执行此任务,但是我也无法使其工作。

我需要使用 Lua,因为我需要读取 TCP 包的内容,并根据其内容将其发送到另一台服务器。我需要能够拆分解码和编码字符串,迭代数组和类似的基本运算符。如果您知道其他方法也很好。

点赞