Системный администратор
VKontakte. Как?
Кирюшкин Антон –
старший
системный администратор Vkontakte
План доклада
• Быстрое распространение файлов
• Быстрое выполнение команд
• Контроль версий конфигурационных файлов
• Быстрое обновление исходных кодов
• Доступ на серверы
• Хранение алертов
• Ваши вопросы
Масштабы VKontakte
• Более 35 тысяч серверов
• Менее 10 системных администраторов
• Более 2Тбит внешнего трафика
Все технологии открыты
• Все технологии есть в открытом доступе
• Ссылки на места дислокации в конце презентации
Быстрое распространение
файлов
Способы распространения файлов
• почта/диски/флэшки
• ssh
• rsync
• http
• torrent
• gossip replication
Метод VK – gossip replication
• Быстро – распределенное копирование 70 мегабайт на > 10000
серверов за 20 секунд.
• Гибко – возможность раскидывать неограниченное число файлов
• Молодёжно (шутка)
• Отказоустойчиво – копирование файла не зависит от какого-то
конкретного сервера
• Атомарно – возможность распространять append в бинлог
Скорость копирования copyfast
• Copyfast-server знает о каждом copyfast-engine
• Каждый copyfast-engine знает трех соседей из
ближнего и дальнего порядка
• Порядок близости определяется топологией
сети
• Топология сети определяется
конфигурационным файлом
Гибкость распространения файлов
• Бинлоги и распространение их «хвоста»
• Бинарные файлы или архивы, распространяемые версиями
Быстрое выполнение команд
Copyexec как верный помощник
• Движок в двух лицах
• Транзакционность
• Независимый от интерпретатора
• Поддержка масок для распределения команд между
группами серверов
• Неизбежность выполнения транзакции
• Точки синхронизации
Вечные транзакции в copyexec
• export COLUMNS= ; yes | ./fix-script.sh
Copyexec и контроль версий файлов
• Подписываем новый файл версией на мастере
• Распространяем файл через Манифест
• Распространяем транзакцию на применение новой версии
конфигурационного файла
• Записываем на каждом сервере статус и обновляем
список применённых версий каждого файла
Быстрое обновление
исходных кодов
Обновление исходных кодов
• rsync
• git
• Docker
• filesys-xfs-engine + copyfast
Что такое filesys-xfs-engine
• Вся структура каталогов хранится в оперативной памяти
• Обновление сводится к синхронизации хвоста бинлога
• Добавление файлов через memcached-интерфейс или с
помощью filesys-commit-changes
• Получение файлов через memcached-интерфейс или
монтирование бинлога в папку
Доступ на серверы
Масштабы VKontakte
• Более 35 тысяч серверов
• Менее 10 системных администраторов
• Более 2Тбит трафика
• Более 50 разработчиков
Delegate – как способ безопасно выполнять
команды на серверах
• Клиент-серверная архитектура
• Возможность выполнять конкретную команду на
конкретных серверах
• Мы не пускаем пользователя на сервер
• Групповые и пользовательские права
• Сетевой протокол (TODO: поддержка шифрования)
• Поддержка нескольких аргументов для команд
• Поддержка очередей выполнения команд
Ограничения Delegate
• Запреты должны быть реализованы в скриптах
• Отсутствие транзакций
• Лог пишется в файл, действия пользователей никак не
отслеживаются
• Нельзя сделать длительные команды, например tail -f
Сбор алертов
Сбор алертов
• Писать в файл на каждом сервере и собирать с помощью
ssh
• Писать в файл в разметке и собирать по http
• Собирать по snmp
• Писать в СУБД, а потом делать SELECT
• Писать в logs-engine, а потом делать SELECT
Преимущества logs-engine
• rpc- или mc-интерфейс для чтения и записи
• Все данные доступные для чтения хранятся в памяти
• На диске хранится бинлог за сутки
• Можно восстановить события из бинлога
• Близкий по схожести формат запросов для чтения
Где можно найти движки
• Тут можно найти движки написанные на Си:
https://github.com/vk-com/kphp-kdb
• Тут можно найти Delegate:
https://github.com/VKCOM/Delegate
Спасибо
Если у вас есть вопросы:
• Вы можете успеть задать их в зале
• Вы можете написать мне:
- https://vk.com/swood
- telegram: @swood

Системный администратор Vkontakte. Как? / Антон Кирюшкин (Vkontakte)

  • 1.
    Системный администратор VKontakte. Как? КирюшкинАнтон – старший системный администратор Vkontakte
  • 2.
    План доклада • Быстроераспространение файлов • Быстрое выполнение команд • Контроль версий конфигурационных файлов • Быстрое обновление исходных кодов • Доступ на серверы • Хранение алертов • Ваши вопросы
  • 3.
    Масштабы VKontakte • Более35 тысяч серверов • Менее 10 системных администраторов • Более 2Тбит внешнего трафика
  • 4.
    Все технологии открыты •Все технологии есть в открытом доступе • Ссылки на места дислокации в конце презентации
  • 5.
  • 6.
    Способы распространения файлов •почта/диски/флэшки • ssh • rsync • http • torrent • gossip replication
  • 7.
    Метод VK –gossip replication • Быстро – распределенное копирование 70 мегабайт на > 10000 серверов за 20 секунд. • Гибко – возможность раскидывать неограниченное число файлов • Молодёжно (шутка) • Отказоустойчиво – копирование файла не зависит от какого-то конкретного сервера • Атомарно – возможность распространять append в бинлог
  • 8.
    Скорость копирования copyfast •Copyfast-server знает о каждом copyfast-engine • Каждый copyfast-engine знает трех соседей из ближнего и дальнего порядка • Порядок близости определяется топологией сети • Топология сети определяется конфигурационным файлом
  • 9.
    Гибкость распространения файлов •Бинлоги и распространение их «хвоста» • Бинарные файлы или архивы, распространяемые версиями
  • 10.
  • 11.
    Copyexec как верныйпомощник • Движок в двух лицах • Транзакционность • Независимый от интерпретатора • Поддержка масок для распределения команд между группами серверов • Неизбежность выполнения транзакции • Точки синхронизации
  • 12.
    Вечные транзакции вcopyexec • export COLUMNS= ; yes | ./fix-script.sh
  • 13.
    Copyexec и контрольверсий файлов • Подписываем новый файл версией на мастере • Распространяем файл через Манифест • Распространяем транзакцию на применение новой версии конфигурационного файла • Записываем на каждом сервере статус и обновляем список применённых версий каждого файла
  • 14.
  • 15.
    Обновление исходных кодов •rsync • git • Docker • filesys-xfs-engine + copyfast
  • 16.
    Что такое filesys-xfs-engine •Вся структура каталогов хранится в оперативной памяти • Обновление сводится к синхронизации хвоста бинлога • Добавление файлов через memcached-интерфейс или с помощью filesys-commit-changes • Получение файлов через memcached-интерфейс или монтирование бинлога в папку
  • 17.
  • 18.
    Масштабы VKontakte • Более35 тысяч серверов • Менее 10 системных администраторов • Более 2Тбит трафика • Более 50 разработчиков
  • 19.
    Delegate – какспособ безопасно выполнять команды на серверах • Клиент-серверная архитектура • Возможность выполнять конкретную команду на конкретных серверах • Мы не пускаем пользователя на сервер • Групповые и пользовательские права • Сетевой протокол (TODO: поддержка шифрования) • Поддержка нескольких аргументов для команд • Поддержка очередей выполнения команд
  • 20.
    Ограничения Delegate • Запретыдолжны быть реализованы в скриптах • Отсутствие транзакций • Лог пишется в файл, действия пользователей никак не отслеживаются • Нельзя сделать длительные команды, например tail -f
  • 21.
  • 22.
    Сбор алертов • Писатьв файл на каждом сервере и собирать с помощью ssh • Писать в файл в разметке и собирать по http • Собирать по snmp • Писать в СУБД, а потом делать SELECT • Писать в logs-engine, а потом делать SELECT
  • 23.
    Преимущества logs-engine • rpc-или mc-интерфейс для чтения и записи • Все данные доступные для чтения хранятся в памяти • На диске хранится бинлог за сутки • Можно восстановить события из бинлога • Близкий по схожести формат запросов для чтения
  • 24.
    Где можно найтидвижки • Тут можно найти движки написанные на Си: https://github.com/vk-com/kphp-kdb • Тут можно найти Delegate: https://github.com/VKCOM/Delegate
  • 25.
    Спасибо Если у васесть вопросы: • Вы можете успеть задать их в зале • Вы можете написать мне: - https://vk.com/swood - telegram: @swood