【问题标题】:HAProxy Lua how to change server port?HAProxy Lua如何更改服务器端口?
【发布时间】:2020-05-06 04:50:18
【问题描述】:

Server.set_addr (sv, addr)

我无法理解该方法将什么作为输入。 看起来Server.get_addr(sv) 返回ip:port - 所以你还需要通过ip:port,但不是。这不起作用。

文档内容如下: See the documentation for the control socket for more information on the string format.

好吧,我看到您需要转移ip port: port(例如:127.0.0.1 port 80)。但这也不起作用。

唯一有效的方法是只传递 ip(例如:127.0.0.1)。

问题是如何更改端口?

代码示例:(如果不起作用 - 日志中没有任何条目)

-- work
-- log entry: changed its IP from 1.1.1.1 to 2.2.2.2 by Lua script.
local newAdr = backendServer.ip
server:set_addr(newAdr)

-- not work
local newAdr = backendServer.port
server:set_addr(newAdr)

-- not work
local newAdr = backendServer.ip .. ":" .. backendServer.port
server:set_addr(newAdr)

-- not work
local newAdr = backendServer.ip .. " " .. backendServer.port
server:set_addr(newAdr)

-- not work
local newAdr = backendServer.ip .. " port " .. backendServer.port
server:set_addr(newAdr)

【问题讨论】:

    标签: lua haproxy


    【解决方案1】:

    更新:从 HAProxy 2.2dev7 开始,此功能现已合并:set_addr 采用额外的可选参数来指定新端口。


    目前无法通过 Lua 做到这一点。查看HAProxy的源代码可以发现set_addr调用hlua_server_set_addr,后者调用server_parse_addr_change_request,后者调用update_server_addr,它只更新地址而不是端口。将此与管理套接字的set server 进行对比,后者调用cli_parse_set_server,后者调用update_server_addr_port,它也会更新端口。

    不过,有两个好消息:

    1. 由于管理套接字可以做到这一点,您可以使用它作为解决方法。
    2. 修改 HAProxy 的 Lua 接口以支持更新端口将非常简单,因为所有逻辑都已经存在。我将a patch that does so 发送到他们的邮件列表。

    【讨论】:

    • 感谢您的回答。这对我来说不一定,如果没有这个,您将不得不为服务器保留一个端口。关于补丁 - 我对创建他的 haproxy 知之甚少 :)
    • @KopeMorta 如果 HAProxy 开发人员批准,我打算自己编写一个补丁。如果它登陆,我会在这里发表评论。
    • @KopeMorta 合并了!
    • 太棒了! :) 现在我可以通过手动编译源来使用它吗?
    • @KopeMorta 是的,只需将the patch 应用于您正在运行和编译的任何版本。
    猜你喜欢
    • 2013-07-17
    • 2012-07-02
    • 2017-07-09
    • 1970-01-01
    • 2022-01-09
    • 2018-02-14
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多