haproxy

valsha
На сайте с 07.09.2008
Offline
107
1454

Добрый вечер.

Помогите пожалуйста с конфигом haproxy, необходимо с одного сервера перенаправлять запросы на другой сервер.

Пример:

TCP: 5900 -> haproxy-server (200.100.100.1) -> TCP: 5900 backend-server (200.200.100.1)

TCP: 5910 -> haproxy-server (200.100.100.1) -> TCP: 5910 backend-server (200.200.100.1)

При этом создать ограничения на haproxy-server, не более одного конекта с одного IP адреса.

Спасибо.

pupseg
На сайте с 14.05.2010
Offline
347
#1

Приветствую!

ээээ.... вам конфиг написать за вас ?

тут читали?

Качественная помощь в обслуживании серверов. (/ru/forum/661100) Бесплатных консультаций не даю, не помогаю, не обучаю. Минималка от 100$. Как пропатчить KDE-просьба не спрашивать. Есть форумы (http://linux.org.ru) и полезные сайты (http://www.opennet.ru/).
valsha
На сайте с 07.09.2008
Offline
107
#2
pupseg:
Приветствую!
ээээ.... вам конфиг написать за вас ?

тут читали?

да, читал конечно.

но там пример как бы в основном для http

и такой ..."немаленький/избыточный" пример :)) трудно разобрать.

pupseg
На сайте с 14.05.2010
Offline
347
#3

tcp в диалектах хапрокси ничем не отлчается от http. более того - хапрокси - это балансер именно tcp трафика, поддержка протокола http этого стека - это фича хапрокси, а не основное назначение, именно поэтому он получил популярность в низкобюджетных "типа кластерах хомячков".

если конфиг за вас написать - то за деньги.пойдем по минималке - 100$(3000р).

ну или показывайте ваши изыскания, логи, ошибки, ваши варианты конфига.

вот пример для tcp ,

http://www.tenfourty.com/2011/04/09/how-to-load-balance-tcp-connections-with-haproxy/

по сути меняется одна директива mode. по примеру выше чувак балансит так:

listen eds_odbc :31200

mode tcp

option tcplog

balance leastconn

server eds_odbc01 147.114.24.141:35432 check

server eds_odbc02 147.114.24.141:35532 check

server eds_odbc03 147.114.24.136:35432 check

server eds_odbc04 147.114.24.136:35532 check

valsha
На сайте с 07.09.2008
Offline
107
#4

создал конфиг

global

log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 4096
user haproxy
group haproxy
daemon

defaulеs
log global
mode tcp
retries 3
maxconn 2000
contimeout 5000
clitimeout 50000
srvtimeout 50000

listen stats1 :5900
mode tcp
option tcplog
balance leastconn

server stats1 200.200.100.1:5900 check

listen stats2 :5910
mode tcp
option tcplog
balance leastconn

server stats2 200.200.100.1:5910 check

выдало мне

haproxy -f haproxy.cfg -V
Available polling systems :
sepoll : pref=400, test result OK
epoll : pref=300, test result OK
poll : pref=200, test result OK
select : pref=150, test result OK
Total: 4 (4 usable), will use sepoll.
Using sepoll() as the polling mechanism.

когда запустил haproxy -f haproxy.cfg

[ALERT] 272/121701 (31196) : Starting proxy stats1: cannot bind socket
[ALERT] 272/121701 (31196) : Starting proxy stats2: cannot bind socket



---------- Добавлено 30.09.2013 в 20:31 ----------

видимо еще был запущен haproxy, убил все haproxy и вроде пока все нормально.

---------- Добавлено 30.09.2013 в 21:02 ----------

пара вопросов:

1. как ограничивать кол-во подключений с одного ip адреса, что бы haproxy не редиректил все пакеты и запросы на бакенд без ограничений.

2. смотрел трафик, да все запросы уходят на сервер где установлен haproxy, вижу что трафик на 200.200.100.1 приходит с haproxy, но потом ...трафик не возвращается на haproxy, а сразу с 200.200.100.1:5910 идет напрямую клиенту уже. То есть я вижу адрес сервера 200.200.100.1 , а не сервера где установлен haproxy.

pupseg
На сайте с 14.05.2010
Offline
347
#5

там у хапрокси есть чтото типа allow_forwarder_for директива - с ней поиграйтесь.

хапрокси должен прозрачно прокидывать коннекшны клиентов на вас. или вам нужно именно что бы был виден на сервере - адрес хапрокси, а не клиента?

2 - это нормальное поведение tcp-трафика, пакет пришел оттуда, откуда его послали, а вернулся он через шлюз по умолчанию - поэтому на клиенте вы будите видеть ответ от бэкенда а не от хапрокси. если нужно от хапрокси - то бэкенды нужно прятать за NAT,которым будет выступать сам хапрокси для этих бекедов.

1 - не заморачивался так средствами хапрокси... я бы сделал через iptables наверное ...

---------- Добавлено 30.09.2013 в 22:15 ----------

хапрокси - это тупой прокси-сервер, он просто проксирует трафик и все, типа nginx.

пришел пакет на хапрокси, хапрокси согласно своему алгоритму - форворднул пакет на бэкенд, а бекенд согласно tcpip - ответил на этот пакет, но он не знает куда его направить - кроме как в шлюз по умолчанию, и ественно - на отправителе в ответе вы видиите айпи бэкенда а не хапрокси.

обычно - некоторые мегакардеры - хотят спрятать свои серверы за прокси сервером например. сталкиваются с такой же проблемой, что исходящий трафик идет от сервера, который прятать пытаются - выход - тянуть впн между серверами и делать NAT, тогда бэкенд будет отвечать через фронтед

---------- Добавлено 30.09.2013 в 22:16 ----------

у вас задача какая ? распишите подробнее, почему в роли балансировщика был выбран хапрокси и тд

---------- Добавлено 30.09.2013 в 22:18 ----------

вкрадце - если вы хотите спрятать за хапрокси свое хозяйство - то нужно тянуть от хозяйства до хапрокси впн и уже с хозяйства заворачивать исходящий трафик в впн

valsha
На сайте с 07.09.2008
Offline
107
#6

Я хотел запустить haproxy на одном сервере и что бы он редиректил запросы с двух портов 5900, 5910 на другой сервер.

При этом что бы клиент видел что трафик идет только с сервера где установлен haproxy, а не с того сервера куда он редиректит трафик.

pupseg
На сайте с 14.05.2010
Offline
347
#7

ну то есть реального получателя хотите спрятать.

тяните между ним и хапрокси впн

---------- Добавлено 30.09.2013 в 22:42 ----------

ну или без впн, если серверы в локальной сети

valsha
На сайте с 07.09.2008
Offline
107
#8
pupseg:
ну то есть реального получателя хотите спрятать.
тяните между ним и хапрокси впн

---------- Добавлено 30.09.2013 в 22:42 ----------

ну или без впн, если серверы в локальной сети

Да, такой был план. Я даже сервису прописал что бы он отправлял все запросы на сервер где установлен haproxy, а он все равно палит свой ip 200.200.100.1 (для примера ip).

К сожалению 2 сервера не в локалке.

Попробую VPN. Большое спасибо вам за помощь!!!

pupseg
На сайте с 14.05.2010
Offline
347
#9

утро доброе, если серверы не в локалке - то VPN -единственный выход, что бы тот сервер, который вы прячите - выпустить в интернет из-за NAT'а по впн-каналу, коим будет являться haproxy. минус - скорость работы, так как ответ сервера-бэкенда будет складываться из канала от него до хапрокси и от хапрокси до внешнего интернета. Если серверы у вас в разных частях света - то скорость будет соответствующая. Некоторые прячут даже за дабл-впн, но расплачиваются скоростью канала. от этого никуда не дется

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий