Системный администратор vkontakte. Как? / Антон Кирюшкин...
Post on 16-Apr-2017
395 Views
Preview:
TRANSCRIPT
Системный администратор 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
top related