Реализация проекта «Соцпакет»

Задача:

Запустить IT-инфраструктуру предприятия и обеспечить технологическую платформу для WEB-сайта.


Укрупнённый перечень элементов инфраструктуры:

1. Сервер виртуализации.

2. Офис с рабочими местами пользователей.

3. Каналы связи с Интернет и VLAN офис-ЦОД.

Сервер виртуализации


Платформа: Supermicro SYS-1028R-WTR
Процессор: Xeon E5-2620V3 - 2 шт.
Память: KVR21R15S4/8 - 12 шт
Жесткий диск: ST600MM0006 - 4 ШТ (RAID10)
Контроллер: Adaptec ASR-6405
В качестве гипервизора выбрали Xen. Ctirix XenServer - платформа управления виртуализацией. Данное решение нам подходило во-первых из-за быстрой скорости настройки системы, а во-вторых большинство "продкшн" серверов это linux машины, по этому паравиртуализация как нельзя лучше подходит для такой задачи. Ну и конечно же простота настройки всего комплекса, т.к. заказчих поставил очень маленькие сроки для реализации проекта. В качестве хранилища мы использовали ext4 "Local storage". Вся наша команда администраторов понимает что это далеко не лучщее решение, но бюджет был ограничен. Так же присутствовали весомые заявления заказчика, что проект скоро набереёт обороты и мы сможем купить нормальные хранилища, подключить их по Fiber Chanel или ещё по какой-либо технологии. В общем Citrix XenServer.


1. Обеспечить Интернет в офисе.

Провайдер даёт нам два тегированных VLAN - первый Интернет для этого статически смаршрутизированны две подсети /29 и /30, второй VLAN - это канал связи 100 мегабит с офисом. Соответственно, для обеспечение офиса Интернетом поднимаем Debian, добавляем в виртуальную машину два VLAN настраиваем NAT. В дальнейшем приобрели решение Интернет-шлюза от Ideco.
В офисе установлен маршрутизатор MicroTik RB3011 UiAS-RM в него через медиа-конвертер подключен VLAN до ЦОД. Соответственно шлюзом по умолчанию является IP-адрес VLAN на виртуальной машине с Debian. Такими минимальными настройками мы обеспечили интернет в офисе.

2. Телефония в офисе

Для телефонии мы использовали Elastix. Тут ничего сложного, стандартные настройки, fali2ban, firewall. На маршрутизаторе выполнили настройки приоритезации трафика до сервера телефонии. Правила достаточно просты - показываем максимальную полосу пропускания и говорим, что до сервера телефонии гарантированно должна быть полоса в 10 мегабит. По скольку звонков было не так много, этого хватало.

3. Технологическая платформа WEB-сайта

Технологическая платформа – совокупность логически связанных между собой виртуальных серверов и физических серверов.

Логический вид архитектуры :

4. WEB-сайт

WEB-сайт состоит из двух частей: frontend и backend. Frontend разрабатывался на AngularJS - JavaScript-фреймворк с открытым исходным кодом. Backend на Laravel - то же бесплатный веб-фреймворк с открытым кодом, предназначенный для разработки с использованием архитектурной модели MVC.

Изначально все приложения работали на одной виртуальной машине под управлением Debian GNU/Linux 8. Программисты на своих ноутбуках собирали проект и по ssh копировали на тестовый сервер, а затем на продакшн.

Front и back заимодействовали по REST Api. Все http запросы от пользователей принимал nginx, кэшировал в памяти и быстро отдавал. Самым проблемным местом был php-код, а точнее скрипт, который при единовременном обращении к странице запускал себя около 20 раз. С такой схемой работы мы справились с относительно большой нагрузкой в 200 запросов в секунду в течении нескольких часов. 6 ядрер на виртуальной машине были в "красной зоне" но тем не менее 500-х ошибок не было. Лучше всего показывал себя Angular и NodeJS. Из-за своей асинхронной архитектуры он и так не нагружал процессор, а ответ, будучи ещё помещённым в кэш, вообще не привлекал к себе внимания.

Для управления приложениями JS мы использовали Advanced, production process manager for Node.js (PM2)
PM2 имеет очень удобный интерфейс отображения статистики и лёгок в использовании. За год работы проблем не наблюдалось

5. CI/CD

По мере увеличения количества кода необходимо было упорядочить всё написанное ранее и понимать какой коммит
работает. Естественно мы использовали свой репозиторий GIT с интерфейсом gitweb но этого совсем не достаточно.

Задачи были следующие: во-первых: обеспечить автоматическую сборку проектов на Angular, во-вторых в зависимости от коммита в определенную ветку GIT'а проект должен деплоиться либо на тестовый сервер, либо на продакшн. Ну и конечно же в третьих, если что-то идёт не так можно было мгновенно сделать откат версии.

В нашем случае выбор пал на Jenkins, т.к. он закрывал все наши запросы, и, более того, его арсенал был очень богат.
Реализовали мы следующим образом:
Программист делает коммит в определённую ветку на GIT'e, далее срабатывает GIT-hook который проверяет ветку и делает GET-запрос к определённому URL в jenkins. В свою очередь Jeenkins затягивает изменения к себе, собирает проект и деплоит его на тестовый или на продакшн сервер. Так же хранятся 30 копий всех именений на Jenkins. В случае чего, мы может за 5 секунд перейти на рабочую копию, если возникнут непредвиденные ситуации.

6. Мониторинги

Мы использовали CACTI с плагином thold. Очень удобно, мы выставляем критические значения пиков у определённых графиков. Когда график достигает этого пика, срабатывает событие, например оправка письма ответственному за сервис или CMC сообщение.

Из-вне мы использовали мониторинги, которые предлагают популярные хостинг провайдеры, для отслеживания доступности WEB-сайта из различных точек земного шара. Так же при определёненом событии высылается электронное письмо или СМС сообщение.

Вся инфраструктура была реализована после 2 недель переговоров с заказчиком и 2 недель планирования ресурсов и разработки архитектуры.

Задайте вопрос

«ЛидерКом»

Мы коллектив профессионалов в области разработки, внедрения и поддержки различных компонентов информационных технологий.
Мы обеспечиваем нашим клиентам основу для успешного развития своих компаний за счет уменьшения затрат, благодаря внедрению новых и эффективных IT-решений.
© 2016-2019 Все права защищены «ЛидерКом». ИНН: 665902830370 ОГРНИП: 316965800181583