PDA

Просмотр полной версии : Как настроить балансировку WEB сервера


JET
21.11.2015, 19:38
Есть веб-сервер на Centos 6.7 с двумя сетевыми картами, где работает NGINX

eth0
ip: 10.10.10.147
mask: 255.255.255.128
gw: 10.10.10.129

eth1
ip: 10.10.10.145
mask: 255.255.255.0
gw: 10.10.10.129

Запросы приходят на обе сетевые карты.
После мониторинга видно что вес трафик уходить только через eth0

Возникает вопрос. Как с помощью IPTABLES возвращать ответ через ту сетевую карту, откуда пришел запрос?

Aziz Madetov
21.11.2015, 21:46
Что за? На какой интерфейс пришёл запрос, с того и будет ответ.

JET
21.11.2015, 22:33
В нашем случае почему то не так. на eth0 приход и уход. А в eth1 только входящие пакеты видны
http://img.uz/d/2015/11/5650ab9906df9.jpg (http://img.uz/)

alisherk
22.11.2015, 02:51
Что за? На какой интерфейс пришёл запрос, с того и будет ответ.
ответ будет с того интерфейса, через который идет дефолтный маршрут, ну или специфик маршрут.

alisherk
22.11.2015, 02:52
Возникает вопрос. Как с помощью IPTABLES возвращать ответ через ту сетевую карту, откуда пришел запрос?


iproute2 для этого используйте

barmaley
22.11.2015, 20:13
http://backdrift.org/lacp-configure-network-bonding-linux
может так попробуешь

Alexander Sofyenkov
22.11.2015, 20:37
Есть веб-сервер на Centos 6.7 с двумя сетевыми картами, где работает NGINX

eth0
ip: 10.10.10.147
mask: 255.255.255.128
gw: 10.10.10.129

eth1
ip: 10.10.10.145
mask: 255.255.255.0
gw: 10.10.10.129

Запросы приходят на обе сетевые карты.
После мониторинга видно что вес трафик уходить только через eth0

Возникает вопрос. Как с помощью IPTABLES возвращать ответ через ту сетевую карту, откуда пришел запрос?

Что-то у вас с масками. Попробуйте на второй карте поставить маску, как и на первой, а 4-й октет в адресе сделать в диапазоне 1-126.

JET
22.11.2015, 20:43
Есть веб-сервер на Centos 6.7 с двумя сетевыми картами, где работает NGINX

eth0
ip: 10.10.10.147
mask: 255.255.255.128
gw: 10.10.10.129

eth1
ip: 10.10.10.145
mask: 255.255.255.0
gw: 10.10.10.129

Запросы приходят на обе сетевые карты.
После мониторинга видно что вес трафик уходить только через eth0

Возникает вопрос. Как с помощью IPTABLES возвращать ответ через ту сетевую карту, откуда пришел запрос?

Что-то у вас с масками. Попробуйте на второй карте поставить маску, как и на первой, а 4-й октет в адресе сделать в диапазоне 1-126.

Прошу прощение. Там у обеих одинаково было. При копировании наверное перепутал. То есть у обеих маска 255.255.255.128

Nestik
23.11.2015, 16:44
На уровне http http://nginx.org/en/docs/http/load_balancing.html
На уровне интерфесов http://xgu.ru/wiki/Linux_Bonding

Фёдор
23.11.2015, 17:22
Оптимальней всего разруливать трафик используя маршруты, так как в дефолтном наборе утилит нет логики балансировки трафика на разные интерфейсы, у которых один и тот же шлюз.

ip ro add 10.10.10.0/24 via dev eth0
ip ro add 10.10.11.0/24 via dev eth1

и т.д.

Nestik
23.11.2015, 17:38
Оптимальней всего разруливать трафик используя маршруты
Хм это по какому принципу? половина тасикса и мира сюда половина туда?

Фёдор
23.11.2015, 22:16
Хм это по какому принципу? половина тасикса и мира сюда половина туда?
Гениальное просто. Поставить карточку 1Gb =)

JET
24.11.2015, 10:42
Оптимальней всего разруливать трафик используя маршруты, так как в дефолтном наборе утилит нет логики балансировки трафика на разные интерфейсы, у которых один и тот же шлюз.

ip ro add 10.10.10.0/24 via dev eth0
ip ro add 10.10.11.0/24 via dev eth1

и т.д.

Вариант. Как бы для разных подсеток пойдет.
Но как быть если у обеих картах все одинаково кроме самого IP?

Фёдор
24.11.2015, 12:08
Вариант. Как бы для разных подсеток пойдет.
Но как быть если у обеих картах все одинаково кроме самого IP?

Я показал пример именно для Вашего случая.

Nestik
24.11.2015, 12:14
Вариант. Как бы для разных подсеток пойдет. Но как быть если у обеих картах все одинаково кроме самого IP?
Чем bonding не устроил?

JET
24.11.2015, 12:27
Вариант. Как бы для разных подсеток пойдет.
Но как быть если у обеих картах все одинаково кроме самого IP?

Я показал пример именно для Вашего случая.

вечером постараюсь проверить. Спасибо за помощь.

JET
24.11.2015, 12:29
Вариант. Как бы для разных подсеток пойдет. Но как быть если у обеих картах все одинаково кроме самого IP?
Чем bonding не устроил?

если с routing не получиться, то придется воспользоваться Bonding.
Уже подготовил вариант реализации с mode=6 (так как switch не в моей компетенции)

Спасибо за помощь.

JET
24.11.2015, 19:52
Оптимальней всего разруливать трафик используя маршруты, так как в дефолтном наборе утилит нет логики балансировки трафика на разные интерфейсы, у которых один и тот же шлюз.

ip ro add 10.10.10.0/24 via dev eth0
ip ro add 10.10.11.0/24 via dev eth1

и т.д.

ip ro add 192.168.10.0/24 via dev eth0
Error: an inet address is expected rather than "dev".

Фёдор
24.11.2015, 20:41
JET, http://xgu.ru/wiki/Маршрутизация_в_Linux
Добавление маршрута через интерфейс: ip route add 172.16.10.0/24 dev eth0
т.е. без via =)

JET
25.11.2015, 19:33
JET, http://xgu.ru/wiki/Маршрутизация_в_Linux
Добавление маршрута через интерфейс: ip route add 172.16.10.0/24 dev eth0
т.е. без via =)

RTNETLINK answers: File exists

Не получилось

Фёдор
25.11.2015, 20:08
JET, так скорей всего маршрут уже существует.

JET
25.11.2015, 22:48
Фёдор, но этот маршрут работает только через eth0.
eth1 уже ничего не делает.
Для теста в eth1 сменил ip диапазон из другого класса.
Все пакеты стали нормально ходить именно по своим сетевым картам.
Думаю что это глюк Centos, из за одинаковых ip диапазонов в обеих картах

shumbola
25.11.2015, 23:34
Фёдор, но этот маршрут работает только через eth0.
eth1 уже ничего не делает.
Для теста в eth1 сменил ip диапазон из другого класса.
Все пакеты стали нормально ходить именно по своим сетевым картам.
Думаю что это глюк Centos, из за одинаковых ip диапазонов в обеих картах

Эх, зачем вы это сказали? Теперь админы CentOS ненавидят. :-)
Может быть вам SUSE попробовать, там наверняка глюков меньше, все-таки немецкая ОС.

Abdurohman
25.11.2015, 23:57
Думаю что это глюк Centos, из за одинаковых ip диапазонов в обеих картах
Не только Centos. Недавно было такая ситуация в FreeBSD.

Nestik
26.11.2015, 03:45
Думаю что это глюк Centos
Думаю что вы пытаетесь резать нож маслом.

Фёдор
26.11.2015, 10:24
Думаю что это глюк Centos, из за одинаковых ip диапазонов в обеих картах
С маршрутами глюков не бывает. Это давно "отточенная" система.
File exists означает что данное направление уже существует.

По идеи при загрузки ОС должно Вам дать ошибку что маршрут уже существует, поскольку Вы указали на втором интерфейсе шлюз по умолчанию и даже на ту самую сеть что и на первом интерфейсе.
Я бы по убирал все дефолтные маршруты и вручную добавил поочерёдно всё что нужно, после, убедивший что работает так как надо - добавить их в загрузку.
На второй странице я скинул ссылку, там подробно описывается возможности маршрутизации.