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

Preview:

Citation preview

Системный администратор 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