HAProxy Lua如何改变服务器端口?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HAProxy Lua如何改变服务器端口?相关的知识,希望对你有一定的参考价值。

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)
答案

更新。 从 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接口来支持更新端口是非常简单的,因为所有的逻辑都在那里。我给HAProxy发送了 补丁 到他们的邮件列表。

以上是关于HAProxy Lua如何改变服务器端口?的主要内容,如果未能解决你的问题,请参考以下文章

编译安装HAProxy

haproxy默认端口号 是多少

haproxy lua程序的生命周期

HaProxy 实现443 端口复用

HaProxy 实现443 端口复用

linux下安装haproxy作为端口转发服务器,以及安装keepalived作为haproxy高可用方案