Балансировка нагрузки и отказоустойчивость в...
-
Upload
ontico -
Category
Engineering
-
view
433 -
download
5
Transcript of Балансировка нагрузки и отказоустойчивость в...
Балансировка нагрузки и отказоустойчивость в ОдноклассникахНикита Духовный
Никита Духовный
• Ведущий системный администратор
Инфраструктура Одноклассников
• >11000 физических серверов• 3 основных дата-центра• CDN
• >1 Tbps внешнего трафика
Системный администратор в Одноклассниках• Системы автоматизации• Исследовательская работа• Помощь разработчикам
Балансировка нагрузки и отказоустойчивость на примере Одноклассников
На заре проекта
1. www.odnoklassniki.ru
2. redirect
3. wg13.odnoklassniki.ru• Имя привязано к серверу
На заре проекта
• Недостатки• Отказ сервера• Имя добавлено в закладки
• Что-то нужно менять
Балансировщики нагрузки
• IP + port = Layer 4 балансировка• Опции
• Проприетарные• LVS
Балансировщики нагрузки
• IP + port = Layer 4 балансировка• Опции
• Проприетарные• LVS
• Выбор - LVS
LVS
•
LVS
•
LVS
•
Управление LVS
• ldirectord• Добавляет сервера в таблицу LVS
• Проверяет реальные сервера• Корректирует таблицу LVS
• ldirector - однопоточный• Проблема
• 200 web
• 5 секунд timeout
• Вывод половины - более 8 минут
Управление LVS
Управление LVS
• ok-lvs-monitor• Многопоточность проверок• Интегрирован с системой конфигурации
портала
LVS - патчи
• расхождение между master и standby
• sync - на core0
• sync >50% CPU Usage на standby
• ipvsadm не различал Active/InAct
LVS и persistence
• Для чего нам persistence
• LVS - по client IP
• Мобильный оператор Армении - с
нескольких IP
• mobile-web - неравномерно нагружены
Балансировщик для мобильной
версии
• Persistence по cookie
• Layer 7
Балансировщик для мобильной
версии
• Persistence по cookie
• Layer 7
• HAProxy
HAProxy
HAProxy
HAProxy
HAProxy
HAProxy
HAProxy
• Балансировщик за балансировщиком?
HAProxy
• Почему бы и нет:• LVS: 45 мастеров, 600 Mbit каждый• HAProxy: 36 серверов, 70 Mbit каждый
• Почему да:• Малый вес после реконфигурации• Оценить• Применить везде
Аварии в дата-центре
Аварии в дата-центре
• Сгорела и основная, и резервная оптика
Аварии в дата-центре
• Сгорела и основная, и резервная оптика• Стала плавиться изоляция
электропитания
Аварии в дата-центре
• Сгорела и основная, и резервная оптика• Стала плавиться изоляция
электропитания• Крыша прилетела на систему
охлаждения
Аварии в дата-центре
Проект должен работать в случае отказа
любого дата-центра!
Системы хранения данных
• СХД осведомлены о дата-центрах• Replication factor = 3
• Quorum = 2
Frontend и дата-центры
• В 3 дата-центрах• Запас мощности• 3 IP адреса
GSLB DNS
• Автоматическая обработка аварии• Проверка
http:path=/getstatus;method=head;on=20/20;
off=10/20;timeout=3000
• За 5 минут переходят 80% пользователей
Сеть
Сеть
Сеть
Сеть
Сеть
Сеть
Сеть
Сеть
Тяжёлый контент
• Видео, музыка, фотографии• Плохие интернеты
• Медленный зарубежный трафик• Нестабильное соединение• Узкий канал
CDN
• Сервера близко к пользователю
• Кеширование контента
CDN - IP Anycast
CDN - IP Anycast
• Плюсы• Автономность
• Минусы• Нет прямого контроля• Неожиданный переход на другую площадку
CDN - DNS
CDN - DNS
CDN - DNS
CDN - DNS
CDN - DNS
• IP-based geolocation
• Плюс• высокий контроль
• Минус• Физически близко != лучший сетевой путь• Не учитывают изменений в топологии
CDN - Одноклассники
• Проекты “Трафик до ОК - бесплатно”
• Отправляем на площадку только сети
партнёра• Обычные решения - не подходят
CDN - Одноклассники
CDN - Одноклассники
CDN - Одноклассники
CDN - Одноклассники
CDN - Одноклассники
CDN - Одноклассники
CDN - Одноклассники
CDN - Одноклассники
CDN - Одноклассники
CDN - Одноклассники
CDN - Одноклассники
CDN - Одноклассники
CDN - Одноклассники
CDN - Одноклассники
• In-house• Контент - с соседней ноды
• nginx
Будущее
1 IP
• Прозрачный отказ дата-центра• 100% решение проблем с DNS cache
• Устранение лишних переходов между
дата-центрами
Userspace Layer 4 load balancers
• Отсутствие переходов между user space и
kernel space
• Лёгкий сетевой стек• Очень быстро (по слухам :) )!
Спасибо!
https://v.ok.ru/vacancies.html
https://v.ok.ru/publishing.html
• 7 ноября, 18:00 - “Как не положить тысячи серверов с помощью системы централизованного управления конфигурацией на примере CFEngine”