Я размещаю веб-сайт с игровым клиентом, который использует 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
Спасибо. Более подробная информация может быть предоставлена (при необходимости).
В зависимости от того, как работает ваш игровой сервер, вам, вероятно, потребуется работать с вашим 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