Rate this post

Черную пятницу можно назвать фестивалем распродаж. Фестиваль, как любое развлекательное мероприятие, является развлечением для посетителей и результатом слаженной работы организаторов и систем. Причем высокие требования выставляются к обоим.  И чтобы им соответствовать, необходима некоторая подготовка. Вот и мы решили подготовиться.n

Исходная архитектура

Старая система Цитруса едва выдерживала ежедневные нагрузки. Еще бы. Интернет-магазин, который по результатам исследования 2015 года находится в 5ке лидеров направления «Электроника и бытовая техника», изначально располагался на 2х серверах: веб и база данных, где уживались frontend на Bitrix с MySQL и backend на Laravel с PostgreSQL и Redis.nnоптимизация интеренет магазина цитрусnnВсе это скромно было прикрыто CDN.nnПроанализировав показатели работы, было принято решение расширяться. В качестве промежуточного решения для обеспечения стабильности работы и балансировки нагрузки использовалась схема с сервером-балансировщиком  HAProxy и несколькими web серверами. Cначала было добавлено три backend сервера . Такая топология выявила проблемные места, которыми оказались процессорные мощности и нагрузки на сеть.nnотказоустойчивость интернет магазина citrusn

Полученная архитектура

На следующем этапе было принято решение о замене аппаратной составляющей и увеличении количества серверов. Добавляли по мере надобности.nnоптимизация сайтаnnПережив Черную пятницу и проанализировав показатели полученной системы, появилось желание добавить еще один сервер баз данных для разделения MySQL и PostgreSQL. В первую очередь такое решение было принято из соображений безопасности,  а также для того, чтобы разгрузить сервер, обеспечив возможность дальнейшего беспрепятственного роста системы. Таким образом, финальная конфигурация получилась следующая:оптимизация сайта интернет магазина цитрусnnВсе изменения проводились поэтапно на протяжении месяца.n

 Особенности реализации

Старая аппаратная инфраструктура после первой попытки расширения оказалась в разных дата-центрах: всего 3 физических не очень новых сервера и 2 виртуальных машины. Нагрузка в часы пик была на них такая, что если исключить из работы хоть один из этих серверов, то сайт перестает работать.nnНами было принято решение заказать 5 новых однотипных серверов со следующими характеристиками:n

  • HP DL380eG8 (8xLFF)
  • 2x Intel Hexa-Core Xeon E5-2420
  • 64GB DDR3
  • 8x2TB SATA

Для страховки оставили один старый сервер…n

  • Brand and Model Hp — DL180 G6
  • Processor 2x Intel Quad-Core Xeon E5620 [ 4 Core(s) ]
  • RAM 32 GB
  • HDD 8×300 GB SAS

…и отдельно стоящие сервера DB и HAProxy.n

  • Brand and Model Dell — R730xd
  • Processor 2x Intel Octa-Core Xeon E5-2630v3 [ 8 Core(s) ]
  • RAM 128 GB
  • HDD 4×480 GB SSD 2.5 Inch

 n

  • Brand and Model Hp — DL380e Gen8 (12 LFF)
  • Processor 2x Intel Hexa-Core Xeon E5-2420 [ 6 Core(s) ]
  • RAM 64 GB
  • HDD 4×480 GB SSD 2.5 Inch

 n

  • Brand and Model Hp — DL120 G7
  • Processor 1x Intel Dual-Core Pentium G850 [ 2 Core(s) ]
  • RAM 16 GB

 n

Александр (старший системный администратор):nn«Все аппаратные ресурсы расположили в одном дата-центре. Это решение имеет дополнительное преимущество при коммутации. Сервера объединили в один отдельный свитч, что позволило получить максимальную скорость передачи данных между серверами и экономию трафика. Если раньше между веб-серверами и базой служебного трафика за месяц накапливалось на десятки терабайт, который надо было оплачивать как обычный, то сейчас заказчик платит только за трафик от веб-сервера до клиента, что на порядок меньше».

Компания уже долгое время плодотворно сотрудничает с некоторым дата-центром. Новые сервера, приобретенные в нем —  все физические.  Это оказалось заметно дешевле, чем аналогичные виртуальные мощности.nnНа шести серверах расположилась веб-ферма, сервера с базами данных и прокси не задублированы.  Отказоустойчивость обеспечивается с помощью репликации на резервные виртуальные машины.  Но это уже совсем другая история.nnНа серверах используем Ubuntu 16.04 Xenial и Docker 1.12.n

Виктор (Генеральный диретктор):nn «Докер ускорил установку новых серверов, значительно снизив требуемые человеко-ресурсы на реализацию задачи по переносу системы на новое оборудование».

На каждом веб-узле по одному контейнеру, который «нафарширован» всем необходимым. На серверах БД расположились контейнеры с различными типами баз данных для нужд системы.nnРазвертывание выполнялось по стандартной откатанной схеме: предварительная настройка сервера, установка докера, копирование файлов настроек и сайтов, запуск контейнера докер. На уровне веб-сервисов изменений не производилось.nnПри планировании были пересмотрены задачи по обслуживанию серверов. Предусмотрительно на время ожидаемой высокой нагрузки были отключены некритичные регламентные задания, которые могли нагрузить базу в неподходящий момент. Что, к слову, не помогло избежать незапланированных сюрпризов.nnМенеджеры с разгар Черной Пятницы решили поменять цены на сайте и создали приличную нагрузку, которая к счастью не оказала критического влияния на работу сайта. Такое конечно стоит делать заранее. Но от человеческого фактора никуда не денешься.n

Виталий (Системный администратор):nn«Так как менеджеры решили посреди дня обновить акцию, и почти весь день была повышенная нагрузка, то запас ресурсов системы был не очень большой, я бы даже сказал на пределе. Без этого процентов 20-30 было бы как минимум. В штатном режиме система работает ‘в зеленой зоне’: Нагрузка процессорных мощностей колеблется на уровне 30%, объемы занятой оперативной памяти в среднем по ферме не доходит до 90%, занятое дисковое пространство на всех серверах за некоторым исключением не превышает 50%. Нагрузка на сетевом интерфейсе на выходе к пользователю в пике не превышает 20ти %»

На графике месячные объемы трафика, выдаваемые системой в Сеть.nnhightload citrusnnВ такой конфигурации система с легкостью выдерживает более 250 000 уникальных пользователей в день.nnвысоко нагруженный сайтnnБольшое количество используемой памяти объясняется высокими потребностями php-скриптов. Для работы некоторых из них лимиты подняты до нескольких гигабайт. n

Вывод

Таким образом, все изменения позволили повысить критический порог нагрузки на систему. Что можно явно увидеть на графике обращений к системе. Если на начало месяца нагрузочные значения были практически потолочными, то после изменений, даже при увеличении нагрузки более чем в 2 раза в Черную Пятницу, еще остается запас около 20%.nnнагрузка на сайтnnКак видно из продолжения графика, система успешно справляется с повышением нагрузок.nnхайлоадnnЗа половину декабря среднесуточная нагрузка составляет около 50М запросов, таким образом, прирост составляет приблизительно 40% по сравнению с прошлым месяцем. И это теперь далеко не предел, сайт может выдержать hightload нагрузку.n

Хотите сайт выдерживающий высокую нагрузку посетителей, обращайтесь [email protected]