游戏服务器的 HaProxy,我的配置有什么问题?

游戏服务器的 HaProxy,我的配置有什么问题?

我托管一个网站,其中包含一个使用 TCP 进行连接的游戏客户端。我目前正在寻找一种方法来将我的连接从一台服务器代理到我的原始服务器。我已经测试了 Iptables 转发,我发现虽然它可以工作,但 HaProxy 似乎表现更好。我面临的问题是 HaProxy 在用户连接打开的随机时间后随机断开用户的连接。通常不到 2 分钟。我对 Linux 还很陌生,当然我对 haProxy 也是新手。

这里是我的配置,由于显而易见的原因,原始 IP 地址已被删除:

global
daemon
maxconn 1000

defaults
    mode tcp
    timeout connect 5000ms
    timeout client 5000ms
    timeout server 5000ms

frontend proxy-in
    mode tcp
    bind *:1233
    default_backend proxy-out

backend proxy-out
    mode tcp
    server s1 127.0.0.1:1232

listen admin
    bind *:7772
    stats enable

谢谢。可以提供更多详细信息(如果需要)。

答案1

根据游戏服务器的工作方式,您可能需要与您的timeout client和您的合作timeout server。在您的配置中,这些当前设置为 5 秒。

这些设置与您的 tcp 会话有关。如果您希望更好地平衡服务器,您可能还需要查看持久性配置文件以平衡与同一服务器的某些连接。同样,这实际上取决于您的配置。

还请查看balance浏览文档的选项。

haproxy 文档中的示例算法:(http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#balance

leastconn   The server with the lowest number of connections receives the
            connection. Round-robin is performed within groups of servers
            of the same load to ensure that all servers will be used. Use
            of this algorithm is recommended where very long sessions are
            expected, such as LDAP, SQL, TSE, etc... but is not very well
            suited for protocols using short sessions such as HTTP. This
            algorithm is dynamic, which means that server weights may be
            adjusted on the fly for slow starts for instance.

可能还需要设置 tcp keep alive: (http://cbonte.github.io/haproxy-dconv/configuration-1.5.html#option%20tcpka

您还可以使用一个很棒的工具 haproxyctl 主动查看您的会话,您可以在 github 上找到它或使用 进行安装gem install haproxyctl

> haproxyctl show sess

0x1eb23c0: proto=tcpv4 src=172.12.0.149:57749 fe=https be=<NONE> srv=<none> ts=08 age=1m36s calls=40 rq[f=400000h,i=0,an=1ch,rx=1m23s,wx=,ax=] rp[f=008000h,i=0,an=00h,rx=,wx=,ax=] s0=[7,8h,fd=2,ex=] s1=[0,0h,fd=-1,ex=] exp=1m23s
0x1e3b170: proto=tcpv4 src=172.12.0.149:57750 fe=https be=<NONE> srv=<none> ts=08 age=1m36s calls=31 rq[f=400000h,i=0,an=1ch,rx=1m23s,wx=,ax=] rp[f=008000h,i=0,an=00h,rx=,wx=,ax=] s0=[7,8h,fd=3,ex=] s1=[0,0h,fd=-1,ex=] exp=1m23s
0x1e35da0: proto=tcpv4 src=172.12.0.149:57751 fe=https be=<NONE> srv=<none> ts=08 age=1m36s calls=35 rq[f=400000h,i=0,an=1ch,rx=1m23s,wx=,ax=] rp[f=008000h,i=0,an=00h,rx=,wx=,ax=] s0=[7,8h,fd=8,ex=] s1=[0,0h,fd=-1,ex=] exp=1m23s
0x1e4fa50: proto=tcpv4 src=172.12.0.149:57754 fe=https be=<NONE> srv=<none> ts=08 age=1m36s calls=15 rq[f=400000h,i=0,an=1ch,rx=1m23s,wx=,ax=] rp[f=008000h,i=0,an=00h,rx=,wx=,ax=] s0=[7,8h,fd=9,ex=] s1=[0,0h,fd=-1,ex=] exp=1m23s

相关内容