Об’єднання портів, мистецтво агрегування каналів (Частина 4)

21.03.2024 3 хвилин Автор: Lady Liberty

Описується налаштування агрегування каналів, також відомого як об’єднання зв’язків, для покращення мережевої інфраструктури. Розглядається налаштування командування NIC та зв’язування для серверів, а також etherchannel, portchannel або LAG для комутаторів. Детально описуються переваги збільшення відмовостійкості та пропускної спроможності за допомогою технік, таких як LACP, зазначаючи необхідність управляємих комутаторів для правильної конфігурації.

Об’єднання портів

Ще одна задача, з якою адміністратор стикається з погляду взаємодії зі світом – налаштування агрегації каналів, тобто. об’єднання кількох портів. Ми про це говорили в першій темі, мовляв, потрібно використовувати два мережеві адаптери та два свитчі. Насправді можна більше портів і проводів, хоч 4, хоч 8. Але, як правило, це або два, або чотири.

Агрегацію каналів називають по-різному – до серверів зазвичай відносять поняття NIC teaming, bonding, а до свитків etherchannel, portchannel, lag і т.п. Але зазвичай всі під цим мають на увазі одне й те саме. Правда в лінуксах є два модулі, раніше був лише bonding, але потім додали новий і більш просунутий варіант – тимінг.

Як результат, під час налаштування ви стикаєтесь як з об’єднанням, так і з об’єднанням в команду, обидва роблять одне і те ж, і лише об’єднання в команду краще.

Затримка дає відразу 2 переваги-по-перше, підвищує стійкість до збоїв, а по-друге, збільшує пропускну здатність. До речі, у 2 – му випадку агрегація портів цього не дозволяє, а лише конкретна реалізація-LACP. При цьому не плутайте швидкість з пропускною здатністю. Для одиночного з’єднання максимальною швидкістю залишається швидкість одиночного каналу. Отже, умовно, якщо ви завантажуєте 1 файл, швидкість буде досягати гігабіта, а якщо у вас кілька файлів, вони будуть розподілені по порту, що в цілому складе близько 2 гігабіт. Ви не можете запускати LACP між портами з різною швидкістю.

LACP повинен бути налаштований з обох сторін. Як сервер, так і комутатор. І ви не можете налаштувати це за допомогою тупого свистка – отже, LACP потребує керованого пакета. Але зазвичай це не проблема – сервер підключений до тупого світчу за винятком сумної компанії.

Але це саме та ситуація, яку ми виявили – перемикач, запропонований GNS, майже дурний. З одного боку, вони мають Налаштування VLAN – і цього не можна зробити за допомогою некерованої прокрутки. З іншого боку, це все, що вони можуть зробити. Можливо, в майбутньому ми з вами встановимо інші комутатори з GNS в Linux, але поки ми будемо задоволені цими.

Тому в нашій схемі замість LACP ми використовуватимемо «activebackup» – у такому разі з двох з’єднань буде працювати лише одне. Але для прикладу ми налаштуємо LACP між двома хостами, просто щоб було розуміння.

Спочатку запустимо alma1. Нам знову доведеться користуватися консоллю, але скоро ми пересядемо на зручний ssh. Подивимося список активних інтерфейсів:

ip a

Так як ми підключили 0 і 1 адаптери в GNS, то перші два інтерфейси в системі будуть в UP – enp0s3 і enp0s8. Використовуючи їх, нам потрібно буде створити один логічний інтерфейс.

Сьогодні замість nmtui ми користуватимемося nmcli – командною версією цієї утиліти. Це буде трохи наочніше. Пам’ятаєте, заходячи в nmtui, ми в edit connection бачили список профілів мереж? У командному рядку їх можна побачити за допомогою команди:

nmcli connection show

Network manager за замовчуванням створив для активних інтерфейсів профілі – і за стовпчиком Device їх можна розпізнати. Нам потрібно буде створити новий профіль, у якому ми будемо використовувати ці пристрої. І щоб профілі не конфліктували один з одним, ці треба видалити. Можна навіть усі 4 видалити.

Для цього використовуємо опцію delete і вказуємо всі профілі через пропуск:

nmcli connection delete enp0s3 Wired\ connection\ 1 Wired\ connection\ 2 Wired\ connection\ 3
nmcli con sh

Як бачите, тепер профілів не лишилося.

Тепер потрібно створити новий профіль. Для цього використовуємо опцію add:

nmcli connection add type team con-name teams3s8 ifname myteam

При його створенні необхідно вказати тип інтерфейсу. Пам’ятайте, що ви вибрали Vlan під час створення Vlan у списку. І тут ми вибираємо команду. Потім скористайтеся опцією con-name, щоб вказати ім’я профілю. Нехай це буде teams3s8. Тепер пам’ятайте, що при створенні VLAN ви вказали пристрій. Ми створюємо логічний інтерфейс, і ви можете назвати його так, як вам подобається. Давайте назвемо його myteam. Тепер давайте подивимося, що вийшло:.

nmcli con sh

Тепер потрібно прив’язати enp0s3 та enp0s8 до цього тимінгу інтерфейсу. Для цього треба створити два нові профілі з типом team-slave:

nmcli con add type team-slave ifname enp0s3 master myteam
nmcli con add type team-slave ifname enp0s8 master myteam

У них вказуємо імена інтерфейсів, які входитимуть у групу портів – ifname enp0s3 і enp0s8. Також після master вказуємо ім’я загального інтерфейсу – myteam.

Ще раз перевіримо, що вийшло:

nmcli con sh

Як бачите, тепер тут 3 профілі. Тепер все щодо IP адрес та іншого потрібно налаштовувати на майстер інтерфейсі, тобто. на профілі teams3s8.

Почнемо з раннера. Це, власне, механізм, як кілька інтерфейсів працюватимуть разом. Той самий lacp або activebackup. Є й інші раннери, але вони специфічні та використовуються не так часто. У нашій ситуації потрібно вибрати активнийbackup. І так, у профілі teams3s8 міняємо runner на потрібний:

nmcli con modify teams3s8 team.runner activebackup

Ну і насамкінець пропишемо IP адресу в цьому профілі:

nmcli con mod teams3s8 ipv4.addresses 10.0.1.1/24 ipv4.method manual

Також ми повинні вказати метод отримання IP-manual. Пам’ятаєте, ми змінювали nmtui Automatic на manual? Теж саме. Щоб побачити різні налаштування інтерфейсу, можна подивитися його за допомогою опції show:

nmcli con show teams3s8

Ми наче все налаштували, але для перевірки потрібен другий хост. Давайте підключимо до цієї мережі alma2 і на ній налаштуємо таку ж мережу.

Для початку подивимося список усіх профілів та видалимо їх:

nmcli con show 
nmcli con del enp0s3 Wired\ connection\ 2 VLAN2 Wired\ connection\ 1 Wired\ connection\ 3
nmcli con sh

Потім можна в один рядок створити тимінг інтерфейс з усіма потрібними параметрами:

nmcli con add type team con-name teams3s8 ifname myteam team.runner activebackup ipv4.addresses 10.0.1.2/24 ipv4.method manual

Ну і додамо до цього майстра слейв інтерфейси:

nmcli con add type team-slave ifname enp0s3 master myteam
nmcli con add type team-slave ifname enp0s8 master myteam

І подивимося, що вийшло:

nmcli con show

Залишилось на обох хостах підняти профіль, щоб налаштування застосовувалися:

nmcli con up teams3s8

Переконатись, що з’явився інтерфейс і на ньому є IP адреса:

ip a show myteam

Та й повернемо налаштування свитчу у вихідне положене, тобто. приберемо VLAN і транк інтерфейс.

Тепер спробуємо пінганути альму 2 з першого хоста:

ping 10.0.1.2

Все пінгується, отже зв’язок є.

Ми говорили, що при activebackup працює тільки один інтерфейс. За допомогою утиліти teamdctl ми можемо переглянути інформацію про тимінг інтерфейс:

teamdctl myteam state

Утиліта повинна вказати ім’я інтерфейсу замість імені профілю. Тут ви можете побачити, що activebackup використовується як runner для цього інтерфейсу, обидва інтерфейси знаходяться всередині API, а enp0s3 Активний. У другому Alma ситуація така ж. Активним інтерфейсом є enp0s3.

Ми пам’ятаємо, що інтерфейс enp0s3 – це e0 у GNS. Обидва хоста цими інтерфейсами йдуть до світчу 1, тобто. зараз все проходить через свитч 1.

Для наочності, давайте в GNS «зіпсуємо» провід, що веде від альми 1 до першого світчу. Але спершу запустимо пінг до хоста 2, щоб побачити, як поводиться мережа.

Потім натисніть правою кнопкою миші на кабелі та натисніть Suspend.

Повернемося до Alma 1. Як бачите, під час пінгу в адаптері enp0s3 сталася помилка, і пінг продовжився. Після того, як пінг припинився, результат показує, що сталася втрата пакетів, але невелика – всього 1ping. У більшості випадків втрата деяких Пакетів не має значення, і вся мережа влаштована так, що втрачені пакети все одно доходять.

Якщо ще раз глянути висновок команди teamdctl, можна побачити, що enp0s3 тепер недоступний і замість нього активним став enp0s8.

Тепер Alma 1 переглядає лише Перемикач 2. Але alma2, як і на активному інтерфейсі e0, посилається лише на Перемикач 1. В результаті пакет з Alma 1 переміщується тільки спочатку на Перемикач 2, потім на Перемикач 1, потім на Alma 2.

Давайте ще раз запустимо пінг, але тепер вирубаємо кабель, що йде від другої альми до першого світчу. І знову ми втратили один пакет. Тепер для спілкування між хостами залишився лише другий свитч.

Ну і після відновлення обох проводів teamdctl показує, що обидва лінки доступні.

Тепер давайте налаштуємо LACP. Як ви можете собі уявити, за винятком команди, в Налаштуваннях взагалі немає різниці.Параметри бігуна. Тому для внесення змін підключіть alma2 відразу до двох інтерфейсів timin g.activebackup розглядає пакет, а LACP розглядає третю alma.

Після підключення до alma2 ми бачимо:

ip a

що інтерфейси enp0s9 та enp0s10 піднялися.

А далі ті ж команди створення тимінгу інтерфейсу та слейвів:

nmcli con add type team con-name teams9s10 ifname myteam2 team.runner lacp ipv4.addresses 10.0.2.2/24 ipv4.method manual
nmcli con add type team-slave ifname enp0s9 master myteam2
nmcli con add type team-slave ifname enp0s10 master myteam2
nmcli con show

Вкажіть runner lacp та іншу IP-адресу, якщо ви не вказали інше ім’я-myteam2 для імені інтерфейсу. Крім того, на підлеглому вкажіть myteam2 в якості ведучого. Мої імена myteam та myteam2, безумовно, не найкращі. У реальному середовищі це зазвичай називається team 0, team 1 і т.д. але для наочності ми використовували наступні назви, щоб можна було розрізняти назву профілю мережевого менеджера і назва інтерфейсу.

Ну і на alma3 все за тією ж схемою – очищаємо профілі, створюємо профіль з тимінгом інтерфейсом з раннером lacp і створюємо слейви:

nmcli con show 
nmcli con del enp0s3 Wired\ connection\ 2 VLAN2 Wired\ connection\ 1 Wired\ connection\ 3
nmcli con add type team con-name teams3s8 ifname myteam2 team.runner lacp ipv4.addresses 10.0.2.3/24 ipv4.method manual
nmcli con add type team-slave ifname enp0s3 master myteam2
nmcli con add type team-slave ifname enp0s8 master myteam2
nmcli con show

Розумію, у консолі зі шрифтами біда і незручно читати, але для налаштування ssh потрібно було б налаштувати мережу та NAT, а це майбутні теми, тому не хотілося стрибати вперед.

Після налаштування мережі спробуємо з альми3 пінганути другий хост:

ping 10.0.2.2

Все пінгується – значить мережа працює.

Давайте ще на альмі 2 подивимося teamdctl на другий інтерфейс:

teamdctl myteam2 state

Як тут видно, як раннер обраний lacp і обидва інтерфейси в апі.

Та й давайте тестувати:

ping 10.0.2.3

потім вирубую один з лінків у GNS, чекаю пару секунд, врубаю його, потім чекаю пару секунд, щоб перший інтерфейс прийшов до тями, потім вимикаю другий лінк, знову чекаю і включаю.

І ви бачите, що немає жодного втраченого пакета, згідно з результатами перевірки. Все працює чудово. Тому LACP краще у виробництві, але в якості останнього засобу ви можете використовувати activebackup для налаштування відмовостійкості навіть при тупому перемикачі.

Для одночасного Налаштування псевдоніма та плану спочатку потрібно створити командний інтерфейс, а потім використовувати його як інтерфейс для vlan.

Для прикладу створимо другий влан і пустимо його між альма 1 та альма 2. Спочатку треба на обох свитчах на портах 0, 1 та 2 виставити тип dot1q. Ці свитчі не вміють пропускати тільки дві влади, тому вони пускають або одну, як варто по дефолту, або все. Ну ось ми зараз все і дозволяємо. У цьому перший лан залишається нетегированным.

Далі на альмі 1 та 2 створюємо через nmcli профілі з типом vlan:

nmcli con add type vlan con-name vlan2 dev myteam id 2 ipv4.addresses 10.0.3.1/24 ipv4.method manual
nmcli con add type vlan con-name vlan2 dev myteam id 2 ipv4.addresses 10.0.3.2/24 ipv4.method manual

Зверніть увагу, що при створенні  вказуємо інтерфейс, поверх якого буде влан – dev myteam, і id цього влана – id 2. А ім’я профілю та адреси – все за стандартом.

Ну і подивимося список отриманих інтерфейсів:

nmcli con show

Як бачите, профілі утворилися.

Та й пінги теж працюють, тобто. все як ми хотіли.

Для того, щоб підсумувати все, що ми сьогодні сказали, вам потрібно буде скласти зазначену цифру. Отже, використовуємо Nick timing в режимі activebackup для підключення 3 хостів до 2 комутаторів і налаштування 3 воланів з 3 мережами на цих інтерфейсах. І, звичайно, переконайтеся, що все працює – всі перевіряють один одного на всіх 3 мережах, потім від’єднайте дроти та перевірте стійкість.

Підводячи підсумок, сьогодні ми розберемося, що таке nictiming, дізнаємося, як його налаштувати, зрозуміємо різницю між activebackup і lacp, дізнаємося, як включити живлення поверх агрегованого інтерфейсу і переконаємося, що команди вас не лякають, навіть якщо команди довгі, вони дуже прості.

Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.