71
Балансировка нагрузки и отказоустойчивость в Одноклассниках Никита Духовный

Балансировка нагрузки и отказоустойчивость в Одноклассниках

  • Upload
    ontico

  • View
    433

  • Download
    5

Embed Size (px)

Citation preview

Page 1: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Балансировка нагрузки и отказоустойчивость в ОдноклассникахНикита Духовный

Page 2: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Никита Духовный

• Ведущий системный администратор

Page 3: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Инфраструктура Одноклассников

• >11000 физических серверов• 3 основных дата-центра• CDN

• >1 Tbps внешнего трафика

Page 4: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Системный администратор в Одноклассниках• Системы автоматизации• Исследовательская работа• Помощь разработчикам

Page 5: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Балансировка нагрузки и отказоустойчивость на примере Одноклассников

Page 6: Балансировка нагрузки и отказоустойчивость в Одноклассниках

На заре проекта

1. www.odnoklassniki.ru

2. redirect

3. wg13.odnoklassniki.ru• Имя привязано к серверу

Page 7: Балансировка нагрузки и отказоустойчивость в Одноклассниках

На заре проекта

• Недостатки• Отказ сервера• Имя добавлено в закладки

• Что-то нужно менять

Page 8: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Балансировщики нагрузки

• IP + port = Layer 4 балансировка• Опции

• Проприетарные• LVS

Page 9: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Балансировщики нагрузки

• IP + port = Layer 4 балансировка• Опции

• Проприетарные• LVS

• Выбор - LVS

Page 10: Балансировка нагрузки и отказоустойчивость в Одноклассниках

LVS

Page 11: Балансировка нагрузки и отказоустойчивость в Одноклассниках

LVS

Page 12: Балансировка нагрузки и отказоустойчивость в Одноклассниках

LVS

Page 13: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Управление LVS

• ldirectord• Добавляет сервера в таблицу LVS

• Проверяет реальные сервера• Корректирует таблицу LVS

Page 14: Балансировка нагрузки и отказоустойчивость в Одноклассниках

• ldirector - однопоточный• Проблема

• 200 web

• 5 секунд timeout

• Вывод половины - более 8 минут

Управление LVS

Page 15: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Управление LVS

• ok-lvs-monitor• Многопоточность проверок• Интегрирован с системой конфигурации

портала

Page 16: Балансировка нагрузки и отказоустойчивость в Одноклассниках

LVS - патчи

• расхождение между master и standby

• sync - на core0

• sync >50% CPU Usage на standby

• ipvsadm не различал Active/InAct

Page 17: Балансировка нагрузки и отказоустойчивость в Одноклассниках

LVS и persistence

• Для чего нам persistence

• LVS - по client IP

• Мобильный оператор Армении - с

нескольких IP

• mobile-web - неравномерно нагружены

Page 18: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Балансировщик для мобильной

версии

• Persistence по cookie

• Layer 7

Page 19: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Балансировщик для мобильной

версии

• Persistence по cookie

• Layer 7

• HAProxy

Page 20: Балансировка нагрузки и отказоустойчивость в Одноклассниках

HAProxy

Page 21: Балансировка нагрузки и отказоустойчивость в Одноклассниках

HAProxy

Page 22: Балансировка нагрузки и отказоустойчивость в Одноклассниках

HAProxy

Page 23: Балансировка нагрузки и отказоустойчивость в Одноклассниках

HAProxy

Page 24: Балансировка нагрузки и отказоустойчивость в Одноклассниках

HAProxy

Page 25: Балансировка нагрузки и отказоустойчивость в Одноклассниках

HAProxy

• Балансировщик за балансировщиком?

Page 26: Балансировка нагрузки и отказоустойчивость в Одноклассниках
Page 27: Балансировка нагрузки и отказоустойчивость в Одноклассниках

HAProxy

• Почему бы и нет:• LVS: 45 мастеров, 600 Mbit каждый• HAProxy: 36 серверов, 70 Mbit каждый

• Почему да:• Малый вес после реконфигурации• Оценить• Применить везде

Page 28: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Аварии в дата-центре

Page 29: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Аварии в дата-центре

• Сгорела и основная, и резервная оптика

Page 30: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Аварии в дата-центре

• Сгорела и основная, и резервная оптика• Стала плавиться изоляция

электропитания

Page 31: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Аварии в дата-центре

• Сгорела и основная, и резервная оптика• Стала плавиться изоляция

электропитания• Крыша прилетела на систему

охлаждения

Page 32: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Аварии в дата-центре

Проект должен работать в случае отказа

любого дата-центра!

Page 33: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Системы хранения данных

• СХД осведомлены о дата-центрах• Replication factor = 3

• Quorum = 2

Page 34: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Frontend и дата-центры

• В 3 дата-центрах• Запас мощности• 3 IP адреса

Page 35: Балансировка нагрузки и отказоустойчивость в Одноклассниках

GSLB DNS

• Автоматическая обработка аварии• Проверка

http:path=/getstatus;method=head;on=20/20;

off=10/20;timeout=3000

• За 5 минут переходят 80% пользователей

Page 36: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Сеть

Page 37: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Сеть

Page 38: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Сеть

Page 39: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Сеть

Page 40: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Сеть

Page 41: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Сеть

Page 42: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Сеть

Page 43: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Сеть

Page 44: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Тяжёлый контент

• Видео, музыка, фотографии• Плохие интернеты

• Медленный зарубежный трафик• Нестабильное соединение• Узкий канал

Page 45: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN

• Сервера близко к пользователю

• Кеширование контента

Page 46: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - IP Anycast

Page 47: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - IP Anycast

• Плюсы• Автономность

• Минусы• Нет прямого контроля• Неожиданный переход на другую площадку

Page 48: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - DNS

Page 49: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - DNS

Page 50: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - DNS

Page 51: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - DNS

Page 52: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - DNS

• IP-based geolocation

• Плюс• высокий контроль

• Минус• Физически близко != лучший сетевой путь• Не учитывают изменений в топологии

Page 53: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - Одноклассники

• Проекты “Трафик до ОК - бесплатно”

• Отправляем на площадку только сети

партнёра• Обычные решения - не подходят

Page 54: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - Одноклассники

Page 55: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - Одноклассники

Page 56: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - Одноклассники

Page 57: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - Одноклассники

Page 58: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - Одноклассники

Page 59: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - Одноклассники

Page 60: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - Одноклассники

Page 61: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - Одноклассники

Page 62: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - Одноклассники

Page 63: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - Одноклассники

Page 64: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - Одноклассники

Page 65: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - Одноклассники

Page 66: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - Одноклассники

Page 67: Балансировка нагрузки и отказоустойчивость в Одноклассниках

CDN - Одноклассники

• In-house• Контент - с соседней ноды

• nginx

Page 68: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Будущее

Page 69: Балансировка нагрузки и отказоустойчивость в Одноклассниках

1 IP

• Прозрачный отказ дата-центра• 100% решение проблем с DNS cache

• Устранение лишних переходов между

дата-центрами

Page 70: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Userspace Layer 4 load balancers

• Отсутствие переходов между user space и

kernel space

• Лёгкий сетевой стек• Очень быстро (по слухам :) )!

Page 71: Балансировка нагрузки и отказоустойчивость в Одноклассниках

Спасибо!

https://v.ok.ru/vacancies.html

https://v.ok.ru/publishing.html

[email protected]

• 7 ноября, 18:00 - “Как не положить тысячи серверов с помощью системы централизованного управления конфигурацией на примере CFEngine”