Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Lua和TCP重定向的HAproxy 1.6_Tcp_Lua_Haproxy - Fatal编程技术网

带有Lua和TCP重定向的HAproxy 1.6

带有Lua和TCP重定向的HAproxy 1.6,tcp,lua,haproxy,Tcp,Lua,Haproxy,Hy, 我正在尝试使用基于TCP内容的HAproxy重定向流量 使用Lua,我可以注册一个检查内容的服务,如下所示: core.register_service("chooseserver", "tcp", function(AppletTCP) function string.checkit(str) --mylogichere return string.char('server1') end tcp_line = AppletTCP:getline()

Hy, 我正在尝试使用基于TCP内容的HAproxy重定向流量

使用Lua,我可以注册一个检查内容的服务,如下所示:

core.register_service("chooseserver", "tcp", function(AppletTCP)
  function string.checkit(str)
      --mylogichere
      return string.char('server1')
  end

  tcp_line = AppletTCP:getline()
  server = tcp_line:checkit()
  if server == 'server1'   then
    -- HERE
    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_操作来代替此任务,但我也无法使其工作


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

它以什么方式不符合您的期望?这是一个错误吗?只是没有(无声地)发送吗?它会崩溃吗?具体点。包括错误和日志消息。我希望HTTP小程序类的applet.send的行为与applet.send类似,至少回答客户端,但我在客户端中看不到任何内容,并且无论如何都不是我想要的输出。因此,是的,“静默”可能是最好的定义。请尝试将
返回字符串.char('server1')
替换为
返回'server1'
当Lua脚本是最终目标时,使用服务。分析内容将通过一个操作完成,
tcp请求内容lua.xxxx
,但您不能“返回”后端。您需要从Lua设置HAProxy事务变量,并基于此选择后端。后端逻辑是什么?Lua是绝对必要的吗?@Michael sqlbot,我试图使用tcp请求内容Lua.xxx,但回答:
“tcp-request内容”要求“接受”、“拒绝”、“跟踪-sc0”…”track-sc2、'sc-inc-gpc0(*)'、'sc-set-gpt0(*)'、'silent drop'、'use service'、'set var(*)'、'lua.chooseserver'在proxy'proxy'(获得'lua.chooseserver')中的'lua.chooseserver'。
不确定我是否需要lua,将在问题中澄清要求。但我想是的。后端逻辑很简单,目的地很少(少于30个)。如果我可以基于TCP内容从“Lua output”设置变量,我想我可以在HAproxy中使用If条件设置后端。你能告诉我怎么做吗?