cyberbat Опубликовано 13 сентября, 2012 Здравствуйте! Есть 5 физических серверов с линуксом, каждый выполняет различные функции. Они все стоят в одной стойке и взаимодействуют между собой по гигабитной оптике через коммутатор (один сетевой сегмент). У каждого сервера есть горячий резерв: как только какой-то выходит из строя, остальные настроены так, что начинают работать с его дублем. В итоге узким местом остается только тот самый коммутатор. При выходе его из строя вся система горячего резервирования сходит на нет. Возможно ли как-нибудь организовать горячее резервирование коммутатора? Слышал, что такое бывает, но конкретных методик придумать не могу. Бюджет, предположим, не лимитирован, хотя интересует конечно же оптимальное решение. Заранее спасибо за помощь. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dazgluk Опубликовано 13 сентября, 2012 Глобально - 2 методики: 1. Отказоустойчивый коммутатор с системами резервирования собственных компонентов. (Например Cisco 6500) хотя уверен - есть и более дешевые решения. 2. Можно воткнуться 2мя сетевыми картами в 2 разных коммутатора и настроить механизм резервирования (MC-LAG, STP, FlexLinks или вообще протокол динамической маршрутизации). Так или иначе в данном случае серверы должны учавствовать в процессе резервирования, и постоянно проверять на живучесть своих соседей через определенный коммутатор. Чисто теоретически можно вообще написать скрипт рода: Через активную сетевку пингануть соседей, если соседи живи - ок, если нет - значит коммутатор упал => поднять вторую сетевку через второй коммутатор и прописать тот же IP. Все зависит от задачи :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zhenya` Опубликовано 13 сентября, 2012 и коммутаторы взять что-нить типа 4948 с двумя БП. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
martin74 Опубликовано 13 сентября, 2012 vrrp ? lvs ? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
-Pave1- Опубликовано 14 сентября, 2012 (изменено) Самый простой и дешевый типовой способ: поставить 2 стекируемых коммутатора и подключить каждый сервер к обоим посредством LACP агрегирования. В качестве коммутатора например Cisco 3750. Изменено 14 сентября, 2012 пользователем -Pave1- Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
mukca Опубликовано 14 сентября, 2012 2 коммутатора в стеке 2 линка от каждого сервера (по линку в коммутаторе) как бы все... Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
-Pave1- Опубликовано 14 сентября, 2012 Так или иначе в данном случае серверы должны учавствовать в процессе резервирования, и постоянно проверять на живучесть своих соседей через определенный коммутатор. Чисто теоретически можно вообще написать скрипт рода:Через активную сетевку пингануть соседей, если соседи живи - ок, если нет - значит коммутатор упал => поднять вторую сетевку через второй коммутатор и прописать тот же IP. Зачем городить колхоз из сложных кастомных решений, когда есть простое типовое решение? LACP решает все поставленные задачи прямо из коробки. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
azhur Опубликовано 14 сентября, 2012 Самый простой и дешевый типовой способ: поставить 2 стекируемых коммутатора и подключить каждый сервер к обоим посредством LACP агрегирования. В качестве коммутатора например Cisco 3750. Слышал, что при "смерти" головного коммутатора в стеке из 3750 весь стек перезагружается для выбора и активации новой головы. Это правда или мне "насвистели"? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 14 сентября, 2012 Если нужно обеспечить связь исключительно между серверами - то ИМХО стек городить не нужно, достаточно будет бондинг с 2 линками на 2 коммутатора (соединенных между собой линком на всякий); коммутаторы - исключительно по соображениям кошерности при этом выбираются, по функционалу хватит и мыльниц; их задача - тупо свичевать трафло. Режим - balance-rr или active-backup (LACP скорее всего не заведется, хотя не экспериментировал в таком конфиге). Да и 3750 - из пушки по воробьям, ставить л3 в роли тупого свича жирновато ИМХО. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dazgluk Опубликовано 14 сентября, 2012 Так или иначе в данном случае серверы должны учавствовать в процессе резервирования, и постоянно проверять на живучесть своих соседей через определенный коммутатор. Чисто теоретически можно вообще написать скрипт рода:Через активную сетевку пингануть соседей, если соседи живи - ок, если нет - значит коммутатор упал => поднять вторую сетевку через второй коммутатор и прописать тот же IP. Зачем городить колхоз из сложных кастомных решений, когда есть простое типовое решение? LACP решает все поставленные задачи прямо из коробки. Согласен, про стекируемые свичи я что-то не подумал. Dlink-DGS3120, дешего и сердито :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
random7 Опубликовано 14 сентября, 2012 Хм, ну а если у каждого сервера есть дубль, то даже два линка у сервера не нужны: можно один сервер подключить к одному коммутатору, второй - к другому. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Saab95 Опубликовано 14 сентября, 2012 А если есть бухта витухи, можно вообще все сервера друг с другом соединить без использования коммутаторов=) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
zhenya` Опубликовано 15 сентября, 2012 (изменено) 2960s тоже может cross stack etherchannel) оно дешевле 3750 :) Изменено 15 сентября, 2012 пользователем zhenya` Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s2n Опубликовано 15 сентября, 2012 А вот подскажите недорогой, не д-линк, не б/у, л2 коммутатор с поддержкой etherchannel в стэке, на 24*1Gb медных или SFP (как вариант с 2*10Gb SFP+)портов, пожалуйста. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
-Pave1- Опубликовано 17 сентября, 2012 2960s тоже может cross stack etherchannel) оно дешевле 3750 :) Дык сначала речь то об SFP шла. Дешевле циски экстримы. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
cmhungry Опубликовано 17 сентября, 2012 А вот подскажите недорогой, не д-линк, не б/у, л2 коммутатор с поддержкой etherchannel в стэке, на 24*1Gb медных или SFP (как вариант с 2*10Gb SFP+)портов, пожалуйста. вроде как 3120 это умеют. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
tester-str Опубликовано 20 сентября, 2012 (изменено) Слышал, что при "смерти" головного коммутатора в стеке из 3750 весь стек перезагружается для выбора и активации новой головы. Это правда или мне "насвистели"? Если стек состоит из 2х коммутаторов - да, 3 и более не пробовал. Если нужно обеспечить связь исключительно между серверами - то ИМХО стек городить не нужно, достаточно будет бондинг с 2 линками на 2 коммутатора (соединенных между собой линком на всякий); коммутаторы - исключительно по соображениям кошерности при этом выбираются, по функционалу хватит и мыльниц; их задача - тупо свичевать трафло. Режим - balance-rr или active-backup (LACP скорее всего не заведется, хотя не экспериментировал в таком конфиге). Да и 3750 - из пушки по воробьям, ставить л3 в роли тупого свича жирновато ИМХО. Плохое решение. При обрыве одного из линков на аплинк или одного из линков на сервере до свитча получите затык. Тут несколько вариантов: 1. hot-stack свитчей 2. Схема с *STP и на серверах сетевушки объединить в бридж. Только по умолчанию линуксовый бридж фильтрует bpdu-ки, надо патчить и пересобирать. Если нужна более быстрая сходимость - *STP заменить EAPS или что-то похожее. 3. На серверах подымаем квагу, резервируем с помощью OSPF. Изменено 20 сентября, 2012 пользователем tester-str Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
dmvy Опубликовано 20 сентября, 2012 2. Схема с *STP и на серверах сетевушки объединить в бридж. Только по умолчанию линуксовый бридж фильтрует bpdu-ки, надо патчить и пересобирать. Если нужна более быстрая сходимость - *STP заменить EAPS или что-то похожее. dmvy@dmvy-tn:~$ brctl show br0 bridge name bridge id STP enabled interfaces br0 8000.000000000000 yes dmvy@dmvy-tn:~$ brctl showstp br0 br0 bridge id 8000.000000000000 designated root 8000.000000000000 root port 0 path cost 0 max age 20.00 bridge max age 20.00 hello time 2.00 bridge hello time 2.00 forward delay 15.00 bridge forward delay 15.00 ageing time 300.01 hello timer 0.00 tcn timer 0.00 topology change timer 0.00 gc timer 0.00 flags вполне себе схема рабочая на обычном RSTP. свитчи являются рутом и сервак сам отрезает менее приоритетный линк. при его падении сам начинает отдавать трафик в резервный порт. главное, чтобы оба свитча были соединены и были в одном дереве. основной свитч может быть корнем, тогда трафик будет через него ходить в первую очередь. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
tester-str Опубликовано 20 сентября, 2012 (изменено) вполне себе схема рабочая на обычном RSTP. свитчи являются рутом и сервак сам отрезает менее приоритетный линк. при его падении сам начинает отдавать трафик в резервный порт. главное, чтобы оба свитча были соединены и были в одном дереве. основной свитч может быть корнем, тогда трафик будет через него ходить в первую очередь. Да, если RSTP на бридже включить - тоже вполне можно. Изменено 20 сентября, 2012 пользователем tester-str Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 20 сентября, 2012 При обрыве одного из линков на аплинк или одного из линков на сервере до свитча получите затык. Свичи соединены патч-кордом, так что затык не получится. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
tester-str Опубликовано 21 сентября, 2012 При обрыве одного из линков на аплинк или одного из линков на сервере до свитча получите затык. Свичи соединены патч-кордом, так что затык не получится. Вот схема, линки, начинающиеся с одинакового символьного индекса объедиенены в статические группы для серверов и коммутатора на аплинке: Навскидку, несколько ситуаций: 1. Алгоритм балансировки определил следующие линки для передачи трафика: A1 -> D -> C2. С аплинка трафик не летит. Если линк С2 будет оборван - передача трафика прекратится. 2. Оборван линк D. Идёт обмен трафиком между серверами. Первый сервер ведёт передачу с линка A1, второй отвечает ему по B2 - в итоге трафик начинает флудится. 3. Broadcast и multicast, прилетающие с аплинка будет туда же и заворачиваться. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 21 сентября, 2012 Алгоритм балансировки... Какой алгоритм балансировки в active-backup (или round robin)? Насчет LACP аплинка - экспериментировать надо в общем-то. С ходу не скажу, как свич отнесется к фактически соединению LACP портов между собой. Хотя - можно и STP или чем-то подобным на нем обойтись. Особенно если трафик не упирается в гиг. А вот если критичен любой обрыв связи между серверами - то ребутящийся стек это совсем не то, что нужно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
azhur Опубликовано 21 сентября, 2012 У нас собрана похожая на последний рисунок схема на работе: Каждый сервер с виртуалками (ESX) подключен к двум свитчам (без стека!), к каждому своей сетевкой (линки а1,а2, б1, б2), прямого линка между свитчаси (д) - нет. Каждый из свитчей подключен к двум ядрам, к каждому отдельной линией (с1 и с2 с рисунка - типа к одному из ядер), ядра соединены между собой прямым линком. На ядрах HSRP плюс RSTP на всех коммутаторах и никакого LACP или статических групп. В какой из линков запулить исходняк с сервера решает сам ESX, входящий скорее всего летит через 1 линк, но траффику далеко до гигабита, поэтому это не проблема. После сборки схемы пробовали роняли линки и серверные свитчи - субъективно или вообще разрыва связи до виртуалок не было, или короткий на пару секунд. Что будет если так же подключить сервак без виртуализации - хз, может и заведётся, не пробовали. Может можно сделать и лучше, но мы не смогли придумать как, и интригатор ничего заметно лучшего не за космические деньги не предложил. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...