3. Disclaimer
Чем больше мы познаём неизменные законы природы,
тем всё более невероятными становятся для нас чудеса.
Чарльз Дарвин.
Все используемые технологии – опенсорс
Все совпадения с реальными компаниями и
брендами случайны.
18. Основные проблемы с DNS балансировкой
• Постоянные выигрыши в лотерею
• UDP не безграничен (512 bytes)
19. Основные проблемы с DNS балансировкой
• Постоянные выигрыши в лотерею
• UDP не безграничен (512 bytes)
• Само по себе распределение не ровное
20. Основные проблемы с DNS балансировкой
• Постоянные выигрыши в лотерею
• UDP не безграничен (512 bytes)
• Само по себе распределение не ровное
• Нужен другой балансировщик
24. НО Вендоры не без греха!
• Vendor lock
• ELB на L4 не отправляет клиенту нотификации
о разрыве соединения
25. НО Вендоры не без греха!
• Vendor lock
• ELB на L4 не отправляет клиенту нотификации
о разрыве соединения
• Нет поддержки SNI (один сертификат - один IP)
26. НО Вендоры не без греха!
• Vendor lock
• ELB на L4 не отправляет клиенту нотификации
о разрыве соединения
• Нет поддержки SNI (один сертификат - один IP)
• На L7 нет возможности реализовать хотелки
27. НО Вендоры не без греха!
• Vendor lock
• ELB на L4 не отправляет клиенту нотификации
о разрыве соединения
• Нет поддержки SNI (один сертификат - один IP)
• На L7 нет возможности реализовать хотелки
• Не нулевая вероятность получить на свои
сервера чужой трафик.
30. Подоспели новые требования.
• Новое требование от бизнеса –
всегда показывать пиксел
• Появился полноценный
балансировщик
31. Подоспели новые требования.
• Новое требование от бизнеса –
всегда показывать пиксел
• Появился полноценный
балансировщик
• Нужно быть ближе к пользователю
• КАК бы CDN
32. GDNSD
• DNS балансировщик
• 100% opensource
• Авторитативный днс сервер
• Геобазы нескольких провайдеров
• Встроенные проверки состояния приложения
40. Продолжаем развиваться !
• Бизнес хочет странного, а именно - что то типа сессий
• Ограничения – никакого сессионного хранилища
• Минимальное перераспределение пользователей
при добавление ноды.
41. Продолжаем развиваться !
• Бизнес хочет странного, а именно - что то типа сессий
• Ограничения – никакого сессионного хранилища
• Минимальное перераспределение пользователей
при добавление ноды.
Включаем Ip_hash method в nginx
42. Продолжаем развиваться !
• Бизнес хочет странного, а именно - что то типа сессий.
• Ограничения – никакого сессионного хранилища.
• Минимальное перераспределение пользователей
при добавление ноды.
Включаем Ip_hash method в nginx
0
1000
2000
3000
4000
5000
6000
7000
8000
app1 app2 app3 app4 app5
58. Забег по граблям
• Генерили много точек по умолчанию - начала кончаться память
59. Забег по граблям
• Генерили много точек по умолчанию - начала кончаться память
Решение – динамическая генерация количества точек
60. Забег по граблям
• Генерили много точек по умолчанию - начала кончаться память
Решение – динамическая генерация количества точек
• 1 worker отказ в обслуживании при добавлении
61. Забег по граблям
• Генерили много точек по умолчанию - начала кончаться память
Решение – динамическая генерация количества точек
• 1 worker отказ в обслуживании при добавлении
Решение “cpu_count-2” workers на балансировщик
64. Продолжаем бежать
• Внутренний хелфчек не способен
добавить много хостов (массовый
деплой например), полная
деградация целиком сервиса
запросы становятся в очередь, вот
это всё
65. Продолжаем бежать
• Внутренний хелфчек не способен
добавить много хостов (массовый
деплой например), полная
деградация целиком сервиса
запросы становятся в очередь, вот
это всё
Решение – инкрементальный
пересчёт consistent hash
66. Пример конфигурации nginx
location / {
...
proxy_pass http://$best_upstream;
...
}
upstream app1 {
…
server app1 max_fails=n fail_timeout=k;
server unix:/var/run/nginx_fallback.sock backup;
}
upstream app2 {
…
server app2 max_fails=n fail_timeout=k;
server unix:/var/run/nginx_fallback.sock backup;
}