LoadBalancer. HAproxy и Keepalived. Настройка. Пример.
ฝัง
- เผยแพร่เมื่อ 25 ส.ค. 2024
- LoadBalancer. HAproxy и Keepalived. Настройка.
LoadBalancer - балансировщик нагрузки.
В примере использованы сервисы:
- apache2
- haproxy
- keepalived
Конфигурации и команды с видео:
github.com/Rom...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Буду очень благодарен за поддержку в виде чашечки ☕️:
www.buymeacoff...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
По предложениям пишите на: infotube@romnero.de
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Спасибо за урок!
Очень доступно объясняете, без воды
Смотрю только вас и adv-it
Спасибо😉😉
@@RomNero на гите исправьте код ) там нужно state Backup указать и приоритет ниже и router_id на второй ноде в ролике это есть в коде нет если кто то копипастит то добрый вечер )))
Спасибо за вниматкльность👍 Исправлю
@@RomNero еще вопросик ,а что если несколько интерфейсов ? что в keepalive тогда указать внешний интерфейс который смотрит в сторону второй ноды ? я правильно понимаю?
Нужно указывать интерфейс, на котором будет создаваться vip для входящего трафика от клиентов.
наконец я нашел видео которое наглядно и ясно объясняет как все это настроить! Пусть духи хранят тебя!
Спасибо )) Пользуйтесь ;)
Спасибо за отличный урок по НА и кипаливед, ответил на всем имеющиеся вопросы
Спасибо, очень приятно такое читать😉👍
@@RomNero было бы не плохо урок про постгрес, постоить кластер с балансировщиком и тд))
В postgesql есть хорошие решения. И сама БД, наверное, более приспособлен для работы в кластере, нежели MySQL.
@@RomNero Посмотрите в сторону Galera cluster в конфиге Active-Active-Active
Делал как-то galara cluster.
Но предпочитаю другую технологию. Позже будет видео.
Быстро, понятно , доступно , круто было ещё один третий урок с деталями и пояснениями как работают другие динамические алгоритмы и какой лучше использовать, а также про другие фичи типа сохранять рдп кэш. А так огромное спасибо автору!!!!
Спасибо.
Алгоритмы можно легко протестировать. Я весь код закинул на github. Ссылка в описании. Для rdp, я встречал, прикручивать guacamole. С Windows практически не работаю. К сожалению, многое подсказать не смогу.
Спасибо за урок!
Очень доступно объясняете, без воды👍👍👍
Спасибо за позитивный отзыв👍
Спасибо большое!!! С удовольствием посмотрел. Отличный урок с примером, все предельно понятно.
Спасибо за положительный отзыв. Очень приятно👍🙂
Спасибо за урок! Прикольно было бы еще увидеть тот случай когда эти два lb работают в параллельном режиме. То есть один vip публикуется одновременно на двух lb. Представленная схема как бы подразумевает что один из lb ждет пока другой отдаст концы. А хочется посмотреть на случай когда они вдвоем работают одновременно
На одном дыхании посмотрел. Очень полезно! Спасибо!
Спасибо. Приятно читать 👍
Благодарю! Очень доступно излагаете свои мысли.
Спасибо 👍
Отличный урок.Впрочем как всегда. А будет урок про репликации Mysql и сетевой файловой системы.чтоб создать полноценный HA кластер.
Спасибо. По MySQL сделаю видео😉
Спасибо тебе большое за этот труд!
Отличное видео супер, прошу Вас сделайте также по бэкенд (App) серверам т.е как синхронизировать их итд
Тут чисто только бэкенд.
Мой любимый канал на ютубе !!! Спасибо Рома, как всегда отличная работа продолжай в таком же духе 👍👍👍👍👍
Спасибо, Женя👍😉
Маленькое дополнение - если в системе включен firewall, то помимо очевидного трафика который мы пробрасываем нужно также открыть трафик keepalived. В случае если используется firewalld это можно сделать так:
sudo firewall-cmd --permanent --add-rich-rule='rule protocol value="vrrp" accept'
sudo firewall-cmd --reload
Спасибо! Все понятно! Очень хорошо объясняете! Высокий уровень контента.
Спасибо за хороший отзыв 😀
Спасибо за видео! Отличный материал! Будет ли видео о том, как поставить балансер перед базой данных и как настроить базу, чтобы одна была мастер, а другая slave? Очень интересует эта информация, и было бы круто, если бы ещё показали, как при такой компановке делать бэкапы базы и файлов) Думаю новичкам будет интересно посмотреть на это)))
Спасибо за отзыв и за предложение.
Сделаю видео по кластеру MySQL. Заодно можно затронуть тему Backup (хорошая идея) 👍
@@RomNero и закиньте пожалуйста ещё балансировщик туда)) чтобы вторая часть схемы была рассмотрена))) Заранее благодарю за ваши труды, материал отличный!)
Спасибо, вы лучший
Спасибо 👍😉
Спасибо
спасибо вам хороший человек!
Всегда пожалуйста
Подача огонь
Спасибо 👍😀
Спасибо за уроки и Ваши труды! Планируете сделать видео по load balancer nginx?
Спасибо за отзыв. Изначально не планировал, но вы не первый, кто о nginx спрашивает, поэтому стоит сделать видео.
Спасибо большое! Будем ждать)
Спасибо большое! Благодаря вам , становлюсь все ближе к DevOps=)
Удачи и много подписчиков =)
И что-бы продЫ не падали ))
Спасибо за отзыв. Приятно слышать👍😀
У меня не получается свичнуться в Devops из win/unix админа , всем нужен девопс с опытом , а джун без опыта в девопс не особо интересен (( .
Какие знания требуют?
Я не раз повторяю, что devops это очень растяжтмое понятие и все трактуют по разному. Нет конкретного определения. Можно быть админом, но делать вещи devops.
Не зацикливайся над этим, просто развивайся дальше. И дальше будет без разницы как называется должность - главное, работа будет приносить удовольствие 😉
@@RomNero , требуют обычно стандартный набор девопса , но всем нужен ОПЫТ работы девопсом .
И вот тут возникает патовая ситуация , чтобы получить опыт работы , надо работать девопсом , а чтобы работать , надо чтобы был опыт.
Занимаясь задачами админа, этот опыт в большинстве задач не получить . В идеале конечно перейти внутри компании с админа на девопса , но таких возможностей нет и в обьявлениях о работе такое очень редко предлагают.
Вот как то так.
ЗЫ Обьявлении о поиске джун девопсов исчезли . Так что тут тоже не вариант.
Ещё одно хотел сказать, часто вижу объявления на работу devops, но задачки описаны как для админов.
Спасибо за урок!
Спасибо за отзыв.
Видео интересное, спасибо, но есть нюанс. При вашей настройке кипалив мастером всегда будет 1 машина, что может привести к нежелательным последствиям в виде флапания вип,в случае, если на машине начнет перезапускаться хапрокси, например.
Опять же, в момент переезда вип старые сессии рвутся, что очень заметно, когда количество клиентов больше 100 хотя б. Такая настройка имеет смысл если второй балансировщик имеет слабый канал связи и предназначен только как резерв, а так лучше оба балансировщика настраивать в режиме BACKUP и включать nopriempt (не помню точно как пишется этот параметр) , чтобы запретить переезд вип с работающего балансировщика
Спасибо за полезную информацию. Не сталкивался с flapping в haproxy. Здесь стоит корректно указывать checks, которые должен делать haproxy, что бы vip не прыгал.
Спасибо! Класс!
Спасибо 👍
Отличное видео!
отличное видео! в чем преимущества и недостатки при выборе haproxy vs nginx?
По сравнению с бесплатной версией nginx, у haproxy больше функционала. В частности по проверке статуса бэкенда.
Спасибо за видео. Все подробно и красиво рассказал. Осталось только пару вопросов, что за оранжевая ошибка (PID) при просмотре статуса keepalived и что за терминал такой используете с множеством окон в одном месте?
Спасибо за отзыв.
По ошибке точно не помню, вроде бы из-за того, что pid файл не создан.
Терминал mobaxterm. Вот обзор: th-cam.com/video/tFVGS_Dp-gs/w-d-xo.htmlsi=wT2eNyeOkfDF5C1F
@@RomNero спасибо за ответы. как раз на него думал
Хороший урок, спасибо. А вот как к этому прикрутить TLS сертификат, что бы соединение было зашифрованным? Если знаете, был бы классный урок.
Спасибо. В видео я упомянул, что можно tls сертификаты указать в haproxy. Вот и решите вопрос с шифрованием😉
видео по nginx будет?)
Имеете в виду nginx в качестве loadbalancer? Не планировал делать. Но можно задуматься😉
@@RomNero да
@@RomNero Сделайте, если не сложно. Спасибо
Awesome!!!
Thank you 👍
Приветствую RomNero. Спасибо за видео которые ты делаешь. Как насчет k8s?
Привет. Спасибо за отзыв.
По K8s будет серия видео. Из-за некоторой сложности технологии ищу правильное объяснение, что бы было понятно даже человеку без опыта😀
@@RomNero Будем ждать )
Остался только один вопрос.
Как быть с последним бутылочным горлышком в виде пропускной способности интернет-канала. Как его балансит тот же TH-cam?
Супер! Только тема с AUTH не раскрыта. И на гихабе опечатка для второй ноды keepalived, надо прописать BACKUP, поправить router_id и изменить приоритет.
Спасибо. Исправлю github👍
Время половина четвертого утра я смотрю урок.
Похвально 😄👍
Привет, спасибо за видео! Не планируется ли обзор системы CasaOS?
Привет. Спасибо.
Не планировал делать видео по CasaOS. Но очень классное cloud решение. Можно задуматься.
Сейчас в Pipeline немного другие видео.
Только надо проверять не только доступность HaProxy, но и доступность web сервера
Спасибо за урок.
Настроил четыре виртуалки по видео. И вроде бы всё норм, НО...
Откуда вы открываете виртуальльный адрес? Лично у меня он недоступен с другой машины, из этой же сети.
Если на самих ЛБ обращаться к нему, то всё норм.
Спасибо за урок!!! Есть несколько вопросов: если подключать домен, то в DNS записи прописывать нужно VIP? VIP должен создаваться только в пределах локальной сети? Как быть если сервера находятся в разных локациях?
Да, в DNS прописывается vip адрес. Если сервер с public ip, то, наверняка перед ним стоит Firewall, который потом перенаправлял запросы. Все зависит от окружения.
Если vip - public, то его так же можно прописать в открытом dns.
Спасибо за материал, отличная работа. Но у меня вопрос по практической реализации такой схемы. Оба веб сервера динамически изменяют свои данные, файлы и пр. при использовании их клиентами, а балансировщики их постоянно переключают. Следовательно веб-серверы должны содержать либо неизменяемые клиентами данные, либо очень быстро синхронизироваться. В общем, хотелось бы какой-то рабочий пример данной схемы
Спасибо за отзыв. На первом видео о LB я говорил, что на практике все Web серверы в кластере используют одну базу данных. Поэтому и пользователи видят одну и ту же информацию, независимо на какой Web Server они попадают
Зачем обратно переключаться при поднятии упавшего сервиса, нельзя-ли оставаться на текущем рабочем и переключаться только когда и он грохнется?
Огромное спасибо за видео урок. У меня 2 HAproxy без KeepAlived (пока не решим вопрос о синхронизации статуса активных Backend серверов в момент переключения балансеров с MASTER на Backup и нооборот)
Вы как относитесь к haproxy-wi для этой задачи ?.
Спасибо за отзыв.
На сколько я знаю, то haproxy смотрит какие backend доступны. Стоит добавить helth checks в haproxy.
О haproxy-wi, узнал недавно. На днях смотрел это решение.
Как по мне, то ещё сырова-то немного, что бы за это решение брать деньги. Но выбора не много. Нормальных и функциональных UI для HA ещё не встречал.
Как вариант можно рассмотреть tp-link Loadbalancer к покупке. Он дешёвый и для небольших окружение подойдёт.
@@RomNeroу меня рождались идея, Если узнать где можно найти файл в котором хранится текущее состояние Backend servers, тогда, можно поднять 2 контейнера HAproxy балансера с общим volume где будет хранится данный файл с правами на rw для обоих балансеров, 😎.
Как вам кажется данное решение синхронизировать состояние Backend servers на момент переключения с мастера на Backup?
Hello in my environment Haproxy cluster has been configured with keepalived.How to integrate Modsecurity(WAF) with Haproxy?
Спасибо за урок, все понятно и доступно. А продолжение будет? В частности интересует вопрос, а если надо сессию с одного HAProxy на другой передавать, то какие технологии использовать? Например если пользователь залогинился на Web01 через HAProxy01 и он отказал - ему же придется заново логин\пароль вводить, когда через второй пойдет. Или если балансировка RDP сессии - это как то можно сделать? Ну и режимов там несколько - их в каких случаях применяют? То что в ролике показано это по сути NLB Cluster, без передачи авторизованной сессии. Может там как-то можно и Failover как-то сделать....Или для него другое надо использовать? Заранее спасибо :)
Для RDP лучше использовать apache guacamole
Не планировал делать по haproxy более углублённые вещи. В вашем случае стоит посмотреть varnish или что-то подобное. Я так понимаю, нужно кешировать запросы.
Классная пирога для rdp или ssh через https. Не думаю, что это имел Антон в виду
Если дело только в авторизации, то при использовании токенов доступа авторизация слетать не должна, при разрыве соединения и запросе к сервису который о вас ещё не слышал (вторая реплика), он поидеи должен сделать запрос на авторизацию и в ответ ему придёт токен авторизации и повторый логин не потребуется. А чтобы востановить стейт приложения его в любом случае нужно хранить локально у пользователя, ведь если этого не делать то и при любой ошибки в текущей сессии, даже на первой реплике вас будет редиректить в начальный стейт.
Добрый день. Спасибо за урок, очень полезно! А а как можно реализовать Virtual IP для серверов имеющих белые (внешние статические) IP от провайдера? Например один WEB сервер имеет белый (внешний статический) IP 1.2.3.2 выданный провайдером, а второй IP 1.2.3.3, как для них реализовать VIP (1.2.3.1)? Понятно что можно использовать DNS Round Robin на уровне регистратора доменных имен, но хотелось бы в DNS зоне указать запись типа A возвращающую один VIP (1.2.3.2). Или это не возможно сделать в рамках своих двух серверов? Тут только провайдер выдающий статические IP адреса, должен такую услугу предоставить?
Сделайте пожалуйста видео по GUI для настройки, Roxy-wi , очень удобная штука для конфигурации , настройки и мониторинга NLB
Не слышал раньше об этом сервисе. Посмотрю обязательно 👍
@@RomNero Он на гитхабе есть, есть бесплатная версия, ее я использую и очень доволен, новые версии и фишки постоянно появляются! Разработчик поддерживает свой софт! Есть канал в ТГ, разраб русский живет в Казахстане, можно по русски либо по английски к нему обращаться! Спасибо, жду Ваше видео по данному GUI!
Спасибо. Вот такие полезные комментарии я очень люблю. Получается двухсторонняя поддержка и обучшение👍
Я обязательно посмотрю программу, так как, думаю, что многим подобные функции очень нужны👍
Она платная в бесплатной функционал бесполезен
При создании пользователя keepalived_script на обоих серверах (14:02 и 17:32) можно заметить, что ubuntu оба раза ругнулось на несуществующую/недоступную оболочку /usr/bin/nologin. Выходит, пользователь добавился, но с неработающей оболочкой по умолчанию. Что будет, если попытаться под ним зайти?
Я заметил ошибку, но не стал уже перезаписывать.
Пользователь не сможет подключиться самостоятельно. Можете попробовать.
Спасибо. Напрашивается вопрос: если упадёт один из веб-серверов, haproxy продолжит каждый второй запрос открывать страницу с ошибкой или он проверяет доступность ноды?
Haproxy будет направлять запросы только на работающие серверы.
по Application серверам будет ?
Спасибо, очень полезно. А существует ли какие-то GUI для всей этой кухни? Например у меня есть два десятка веб-сервисов, каждый из них имеет по три отдельных инстанса, каждому по три HAPROXY + KEEPALIVED. Оперативно настраивать всё это через файлы конфигураций или мониторить всё это будет просто невозможно. Что посоветуете для администрирования такого зоопарка?
ansible - для настройки, prometheus + grafana - для мониторинга?
Gui нормального я не находил. Можно попробовать использовать traefic.
А так, Захар, назвал самый простой способ конфигурации - ansible. Как мониторить уже можете выбрать сами.
Roxy-wi я его использую
Спасибо. Обязательно посмотрю 👍😀
Да, как всё запутано. А как можно с серым ip достучаться до своего компьютера, не прибегая к аренде сервера с белым ip?
Использовать vpn.
@@RomNero другими словами, через NAT провайдера, иначе не достучаться до своего компьютера, кроме как через vpn, или покупкой у того же провайдера, белого ip. Я не it-шник если что...
Без использования vpn, скорое всего, других способов нет. Часто встречаются продукты, которые такое предлагают, но называют себя по другому. Хотя в основе всегда лежит vpn. Например:
ZeroTier
TailScale
SoftEther
@@RomNero Понял, благодарю.
А каким образом эти 2 (lb01 lb02) сервера узнают о друг друге? т.е как lb02 узнает что у lb01 проблемы и ему надо взять виртуальный IP на себя?
По keepalived
@@RomNero я имею ввиду keepalived как говорят друг с другом, если один не имеет понятия о существовании другой.
Происходит по multicast. На официальном сайте всё подробно описано - весь процесс 😉
а как задать днс имя на этот vip?
На dns сервере
Почему apache, а не nginx ?
А есть какая-то разница для данного примера? 🙂
Спасибо, Сергей. Да, я понимаю что вы имеете ввиду👍
потому что гладиолус
Прикольно, но жалобы на даунтайм все же будут
Спасибо но вместо Keepalived надо было показать как HTTPS настроить в связке HAproxy-> apache1, apache2.
Кому нужен балансировщик для HTTP сайтов?
Спасибо. Здесь всё просто. Нужно всего лишь добавить несколько строк в конфиг haproxy, не думаю, что это создаст проблему, если люди уже работали с Web серверами. Цель была показать как можно сделать loadbalancer. А что за ним стоит - это уже другой вопрос.
Спасибо
Спасибо, вопрос есть а зачем haproxy? Нельзя ли сразу keeplived?
Haproxy отвечает за балансирование.
А Keepalived за HA.