Сегодня мы хотели рассказать вам о том, как наши ребята за три часа повысили производительность кластера для тестирования ПО в 4 раза, просто «пораскинув мозгами».
Сделаем несколько ремарок, чтобы было понятно, откуда у нашей темы «ноги растут». Особенность работы Virtuozzo состоит в том, что отдел разработки и все программисты находятся в Москве (наследие SWsoft и нашей альма-матер, ФизТеха), а головной офис – в Сиэтле (США). Но для сегодняшнего поста это важно лишь потому, что наш HPC-кластер для тестирования ПО находится также в США, а основные «заказчики» тестовых задач – в Москве. И не смотря на весь удаленный доступ, это могло бы быть проблемой, ведь между этими двумя точками – 11 часовых поясов, и когда рабочий день начинается в Сиэтле, он заканчивается в Москве, а значит поменять что-то на серверах физически — непросто.
Запустили, но не заточили
Но давайте предметно: чтобы тестировать новые версии ПО Virtuozzo был запущен большой кластер из 10 машин, на котором мы установили нашу систему виртуализации, а на уровне ВМ – снова загружаем наш софт для многочисленных тестовых прогонов. Несмотря на постоянный мониторинг этого процесса со стороны инженеров-разработчиков, более 99% нагрузки на кластер создают автоматизированные боты, которые стремятся запустить как можно больше подзадач тестирования в каждый момент времени.
Кластер был запущен относительно недавно, и на площадке ЦОД, где мы арендуем место, нет постоянного персонал Virtuozzo. И вроде бы это не должно быть проблемой – все же можно сделать удаленно… ну кроме физического реконфигурирования, а именно в нем и возникла потребность у наших ребят, так как у нас получалось запускать только 5-7 вложенных ВМ, когда хотелось намного больше.
Оказалось, что 10 серверов с процессорами Xeon L5640 и Xeon X5650 могут взять на себя достаточно высокую нагрузку, даже с учетом того, что на них работает система хранения данных Virtuozzo Storage. Но вот распределение памяти и дисков между ними было проведено без учета предстоящих задач, а установленные дополнительные сетевые карты не могли обеспечить прирост производительности, так как стояли просто «не там, где нужно».
Проанализировав кластер, мы поняли, что зря не составили предварительную модель работы при его сборке, потому что:
- Трафик доступа к ВМ пользователей (в основном ботов) перемешивался с трафиком системы хранения, забивая канал
- Виртуальные машины бессмысленно запускались на нодах с малым объемом ОЗУ, перегружая их
- Дополнительные сетевые карты просто простаивали из-за отсутствия правил перераспределения трафика
Чтобы победить все это безобразие, было решено пересобрать ряд серверов по следующим правилам:
— Установить по 2 (или 4 для серверов с VZ Storage) сетевые карты во всех серверах
— В серверы с менее мощными процессорами вставить самые емкие диски и объединить дополнительные сетевые интерфейсы (для VZ Storage) в бонды
— В серверы с более мощными процессорами вставить менее емкие диски, но максимум ОЗУ
От Брайтон бич до Дерибасовской
Чтобы провести эту «рокировку», нужен был «свой человек» в Сиэтле, и им стал наш коллега Кирилл Колышкин. Он по счастью имел доступ в ЦОД, и, хотя не являлся администратором кластера, был рад нам помочь.
Мы засели в конце рабочего дня с полной готовностью к работе, но Кирилл застрял в пробке и добрался к ЦОДу только в 20-30 по Москве. Пятница вечер, хочется домой, но работать надо. И мы начинаем в общем чате обсуждать, что и куда нужно установить.
«Я откуда знаю, как? Я в данном случае выполняю роль железного инженера, я в ваших системах ничего не понимаю», — одна из самых важных фраз нашего инженера.
Да, он работал вслепую и по указке, поэтому у нас было несколько очень интересных моментов. Чтобы не портить ощущение от процесса, приведем просто выдержки бесед из чата, в котором варилась вся каша:
kir [9:15 PM] я уронил пару болтиков, хотел у кого-нибудь спросить, где их можно тут найти
[9:15] ладно, сам поищу
[9:30] продолжаю искать болтики
[9:40] фиг с ними, с болтиками
[9:19] парни, я ударился головой об сервер
[9:19] пойду остановлю кровь
[9:19] (это не шутка)
Параллельно мы узнали много нового о наших системах, которые спокойно стоят в США:
kir [9:51 PM] У машины 118 гнутый рейлинг справа, чуть на ногу мне не упал, еле поставил обратно
apershin [9:52 PM] там на входе каски не выдавали ?)) как на опасных производствах )))
kir [9:52 PM] он там по сути на одной половине висит, точнее лежит на предыдущем
Без юмора, конечно, в такой ситуации нельзя, но один раз мы даже переборщили. Все же чат-то был незащищенный…
Alexandr: американцы — опять эти безумные русские хакеры что-то тут затевают — наверняка атаку на штаб Хилари ))))
apershin [11:05 PM] Ща мы допишемся, там за Киром приедут )))
Кирилл, конечно, очень хотел уже уйти из серверной и перестать заниматься делами, которые к нему фактически никак не относятся:
[11:41] Я готов отсюда отчаливать
[11:42] скажи мне, когда можно будет
[11:42] А то время обеда уже давно прошло
[11:45] Дяденька, а дяденька
[1:11] же не манж па сис жюр
«kir [10:47] короче все винты у меня на тележке»
Несколько часов и результат
Но отпустить Кирилла слишком рано мы не могли, потому что не все сразу заработало. Оказалось, что у нас больше сетевых карт, чем мы думали, оказалось, что не все кабели работали хорошо и, наконец, выяснилось, что на серверах имеются разные настройки BIOS, и некоторые из них просто не стали перезапускаться после смены конфигурации.
Мы проверяли линки, меняли патч-корды, заново ставили систему, и в результате ближе к часу ночи по Москве отпустили Кирилла с ушибленной ногой, поврежденной головой и голодным желудком разбираться со своими рабочими вопросами (обед-то он уже пропустил, так что отделался легким перекусом).
Что мы получили в итоге – так это более производительный кластер для тестирования: вместо 5-7 виртуалок в каждом окружении мы смогли запускать 15-20 штук. При этом Storage работал на отдельной сети через выделенный коммутатор, не мешая запросам ботов и пользователей. Так, наша команда доказала свою сплочённость, а серверы стали работать куда эффективнее за счет оптимального распределения компонентов. Так что не бойтесь удаленной работы с серверами – главное, чтобы на месте был надежный человек, который не боится ни травм, ни голода.
Автор: Virtuozzo