1. Архитектура и первичные настройки Платформы
- 1 Архитектура системы
- 1.1 Варианты исполнения
- 1.2 Требования к аппаратной части
- 1.2.1 Веб-сервер
- 1.2.2 Сервер БД
- 1.2.3 Тестовая среда
- 1.3 Требования к программному обеспечению
- 1.3.1 Конфигурация open-source
- 1.3.1.1 Веб-сервер
- 1.3.1.2 Сервер БД
- 1.3.2 Конфигурация в стеке Microsoft
- 1.3.2.1 Веб-сервер
- 1.3.2.2 Сервер БД
- 1.3.1 Конфигурация open-source
- 2 Настройка веб-сервера
- 2.1 Сетевые настройки
- 2.2 Структура сайтов
- 2.3 Файлы конфигурации сайтов
- 2.3.1 prd.corteos.ru
- 2.3.2 prd.admin.corteos.ru
- 2.3.3 prd.sso.corteos.ru
- 2.3.4 prd.avia.corteos.ru
- 2.3.5 prd.adm.avia.corteos.ru
- 2.3.6 prd.hotels.corteos.ru
- 2.3.7 prd.adm.hotels.corteos.ru
- 2.3.8 prd.adm.rail.corteos.ru
- 2.3.9 prd.rail.corteos.ru
- 3 Настройка сервера БД (только для MS SQL)
Данный раздел содержит общее описание Платформы и рассматривает особенности ее развертывания и настроки в контуре заказчика.
Архитектура системы
Платформа представляет из себя трехслойную структуру(three layer), состоящую из базы данных, веб-сервисов (движки бронирования услуг) и веб-приложений, и может быть предоставлена в одном из вариантов исполнения:
Программное обеспечение, как услуга (SaaS) - размещается на аппаратных средствах, принадлежащих Corteos с предоставлением веб-интерфейса или API;
Размещение на аппаратных средствах заказчика с наличием доступа пользователей из сети Интернет;
Размещение на аппаратных средствах заказчика с доступом только из внутренней сети.
Варианты исполнения
Программное обеспечение, как услуга (SaaS)
Платформа располагается в контуре разработчика и предоставляется в виде себ-сайта и веб-сервисов.
Плюсы:
минимальная сложность запуска,
минимальная стоимость использования услуги,
нет необходимости создавать и поддерживать инфраструктуру для обеспечения работы Платформы,
нет необходимости решать задачи, связанные с взаимодействием с поставщиками услуг (сетевые настройки, занесение ip-адресов в белый список, генерация сертификатов и т.п),
разработчик может максимально оперативно выявить и устранить возникающие ошибки и произвести необходимые настройки
Минусы:
возникает необходимость обеспечения информационной безопасности каналов взаимодействия пользователей с Платформой (например, настройка vpn-тоннеля),
управление жизненным циклом данных заказчика ограничено возможностями API
Размещение на аппаратных средствах заказчика с наличием доступа пользователей из сети Интернет
Плюсы:
полная управляемость инфраструктурой,
сотрудники заказчика, использующие систему, находятся во внутренней сети, что упрощает задачу обеспечения информационной безопасности,
появляется возможность полностью управлять жизненным циклом хранимых данных
Минусы:
повышенная стоимость, по сравнению с SaaS
более сложный процесс интеграции,
необходимо самостоятельно осуществлять поддержку инфраструктуры,
необходимо производить дополнительные настройки для взаимодействия с поставщиками услуг (настройка сертификатов, внесение ip-адресов в белый список и т.п.)
возникает необходимость обеспечения информационной безопасности каналов взаимодействия пользователей агента с Платформой (например, настройка vpn-тоннеля),
поддержка решения разработчиком требует дополнительных трудозатрат
Размещение на аппаратных средствах заказчика с доступом только из внутренней сети
Плюсы:
полная управляемость инфраструктурой и обрабатываемой информацией,
появляется возможность полностью управлять жизненным циклом хранимых данных,
передача персональных данных в сеть Интернет сведена до минимума и ограничена необходимым взаимодействием с поставщиками услуг
Минусы:
повышенная стоимость, по сравнению с SaaS
более сложный процесс интеграции,
необходимо самостоятельно осуществлять поддержку инфраструктуры,
необходимо производить дополнительные настройки для взаимодействия с поставщиками услуг (настройка сертификатов, внесение ip-адресов в белый список и т.п.) и агентом
поддержка решения разработчиком требует дополнительных трудозатрат
требуется выделение рабочих мест для пользователей агента
оказание услуг агентом требует дополнительных трудозатрат
Требования к аппаратной части
Требования к аппаратной части во многом определяются нагрузкой на систему - то есть, количеством пользователей, количеством запросов поиска услуг за единицу времени, количеством формируемых заказов и т.п.
Усредненные рекомендуемые требования для каждого сервера:
Веб-сервер
Процессор | серверная модель процессора, от 12 логических ядер |
---|---|
Оперативная память | от 16 ГБ |
Жесткие диски | Минимальные требования:
Рекомендуемые требования:
|
Сервер БД
Процессор | серверная модель процессора, от 12 логических ядер |
---|---|
Оперативная память | от 32 ГБ |
Жесткие диски |
|
Рекомендации:
Для повышения быстродействия рекомендуется установить NVME-диски для ОС и раздела с данными БД.
Тестовая среда
Для тестовой среды возможно односерверное исполнение стенда и понижение требований к аппаратной части:
Процессор | серверная модель процессора, от 12 логических ядер |
---|---|
Оперативная память | от 16 ГБ |
Жесткие диски |
|
Требования к программному обеспечению
Конфигурация open-source
Веб-сервер
Операционная система Debian последней stable-версии
Ngnix последней stable-версии
.NET Core 6
Для корректной работы сайтов обязательно наличие SSL-сертификата на доменные имена.
Сервер БД
Операционная система Debian последней stable-версии
PostgreSQL последней stable-версии
Конфигурация в стеке Microsoft
Веб-сервер
Операционная система Microsoft Windows Server 2016 и выше, русская локализация
Internet Information Services 10 и выше
.NET Framework 4.7.2
Для корректной работы сайтов обязательно наличие SSL-сертификата на доменные имена.
Сервер БД
Операционная система Microsoft Windows Server 2016 и выше, русская локализация
MS SQL Server 2017 и выше
Настройка веб-сервера
Одним из существенных моментов настройки является локализация системы, она должна быть обязательно русской, RU-ru. Остальные настройки остаются после установки компонента IIS по умолчанию.
Сетевые настройки
Для бронирования услуг компоненты Платформы осуществляют сетевое взаимодействие с сервисами поставщиов услуг. Таким образом, до начала работы заказчика в системе следует определить используемых поставщиков и настроить сетевой доступ к их веб-сервисам.
Для ускорения отображения интерфейсов веб-сайта файлы стилей и изображения вынесены на внешний кэширующий сайт static.corteos.ru. Таким образом, для полнофункцинальной работы в системе необходимо настроить доступ к сайту static.corteos.ru из корпоративной сети заказчика, либо разворачивать этот сайт внутри сети.
Структура сайтов
Платформа объединяет в себе множество сайтов, взаимодейстсующих между собой как сервисы посредством API (движки бронирования услуг), так и через сквозную авторизацию SSO (административные интерфейсы).
В состав Платформы входят следующие сайты, которые необходимо создать на сервере IIS:
prd.corteos.ru - рабочая область Платформы, позволяет заказывать услуги и управлять заказами,
prd.admin.corteos.ru - административный интерфейс системных настроек Платформы (css, подключенные услуги, настрокйи почтового сервера и т.п.),
prd.sso.corteos.ru - сервис для выполнения сквозной авторизации,
prd.avia.corteos.ru - сервис (движок) бронирования авиабилетов, взаимодействует с рабочим сайтом посредством API,
prd.adm.avia.corteos.ru - административный интерфейс сервиса бронирования авиабилетов, позволяет настраивать доступы к системам поставщиков, редактировать сравочник географических объектов и авиакомпаний, и выполнять прочие настройки процесса авиабронирования,
prd.hotels.corteos.ru - сервис (движок), бронирования гостиниц, взаимодействует с рабочим сайтом посредством API,
prd.adm.hotels.corteos.ru - административный интерфейс сервиса бронирования гостиниц, позволяет настраивать доступы к системам поставщиков, редактировать сравочник географических объектов, и выполнять прочие настройки, относящиеся к работе сервиса,
prd.rail.corteos.ru - сервис (движок) бронирования жд билетов, взаимодействует с рабочим сайтом посредством API.
Структура сайтов может быть представлена в виде схемы:
Файлы конфигурации сайтов
Основные параметры, настраиваемые в файлах конфигурации - это доступы к БД, url сервисов, с которыми взаимодействует сайт, и физический путь к директории с лог-файлами.
prd.corteos.ru
Название файла конфигурации: appSettings.config
Ключ | Значение |
---|---|
HangFireConnectionString | ConnectionString к базе Hangfire, требуемой для работы таймера |
JavelinModel.SQL.ConnectionString | ConnectionString к базе AgencyBase, требуемой для работы с заказами |
RailModel.SQL.ConnectionString | ConnectionString к базе RailBase, требуемой для работы услуги покупки ЖД билетов |
AviaModel.SQL.ConnectionString | ConnectionString к базе AviaBase, требуемой для работы услуги покупки авиабилетов |
HotelModel.SQL.ConnectionString | ConnectionString к базе HEBase, требуемой для работы услуги бронирования гостиниц |
JavelinSession.SQL.ConnectionString | ConnectionString к базе ServiceBase, используемой для хранения контекста поиска услуг |
API.AviaServiceUrl | URL сервиса авиабронирования (prd.avia.corteos.ru) |
API.HotelServiceUrl | URL сервиса бронирования гостиниц (prd.hotels.corteos.ru) |
AviaAdminUrl | URL сайта административного интерфейса услуги авиабронирования (prd.adm.avia.corteos.ru) |
HotelAdminUrl | URL сайта административного интерфейса услуги бронирования гостиниц (prd.adm.hotels.corteos.ru) |
RailAdminUrl | URL сайта административного интерфейса услуги покупки ЖД билетов (prd.adm.rail.corteos.ru) |
SsoServiceUrl | URL API сервиса SSO для перехода на внешние ресурсы, например в административные интерфейсы (Outgoing.asmx) |
SSO.WebServiceUrl | URL API сервиса SSO для работы мода ModSSOService (DataService.asmx) |
RecaptchaSiteKey | Ключ для работы сервиса Google reCAPTCHA, используемого сайтом |
RecaptchaSecret | Секретный ключ для работы сервиса Google reCAPTCHA, используемого сайтом |
Logging.Enabled | Флаг, позволяющий включать и выключать ведение логов |
FilesystemLogRoot | Физический путь к директории с логами, по умолчанию c:\corteos\logs |
SQL.Logging.Enabled | Флаг, позволяющий включать и выключать ведение допллнительного лога взаимодействия с БД |
prd.admin.corteos.ru
Название файла конфигурации: appSettings.config
Ключ | Значение |
---|---|
AdminLogin | Логин пользователя с правами администратора |
AdminPassword | Пароль пользователя с правами администратора |
SsoServiceUrl | URL API сервиса SSO для перехода на внешние ресурсы, например в административные интерфейсы (Outgoing.asmx) |
HomeSiteUtilsAPIUrl | URL основного сайта для получения списка доступных модов |
AviaAdminUrl | URL сайта административного интерфейса услуги авиабронирования (prd.adm.avia.corteos.ru) |
HotelAdminUrl | URL сайта административного интерфейса услуги бронирования гостиниц (prd.adm.hotels.corteos.ru) |
RailAdminUrl | URL сайта административного интерфейса услуги покупки ЖД билетов (prd.adm.rail.corteos.ru) |
JavelinModel.SQL.ConnectionString | ConnectionString к базе AgencyBase, требуемой для работы с заказами |
RecaptchaSiteKey | Ключ для работы сервиса Google reCAPTCHA, используемого сайтом |
RecaptchaSecret | Секретный ключ для работы сервиса Google reCAPTCHA, используемого сайтом |
prd.sso.corteos.ru
Название файла конфигурации: web.config
Ключ | Значение |
---|---|
JavelinModel.SQL.ConnectionString | ConnectionString к базе AgencyBase, требуемой для работы с заказами |
prd.avia.corteos.ru
Название файла конфигурации: appSettings.config
Ключ | Значение |
---|---|
AviaModel.SQL.ConnectionString | ConnectionString к базе AviaBase, требуемой для работы услуги покупки авиабилетов |
Environment.Test | Флаг для включения режима тестовой среды, при котором блокируются запросы к боевым сервисам и подменяются на тестовые доступы |
AviaV3.LogRoot | Физический путь к директории с логами, по умолчанию c:/corteos/logs/aviaengineV3 |
Zip.TempPath | Физический путь для промежуточного сохранения лог-файлов перед упаковкой их в архив, по умолчанию c:/corteos/zipTemps |
RecaptchaSiteKey | Ключ для работы сервиса Google reCAPTCHA, используемого сайтом |
RecaptchaSecret | Секретный ключ для работы сервиса Google reCAPTCHA, используемого сайтом |
prd.adm.avia.corteos.ru
Название файла конфигурации: web.config
Ключ | Значение |
---|---|
AviaModel.SQL.ConnectionString | ConnectionString к базе AviaBase, требуемой для работы услуги покупки авиабилетов |
API.AviaServiceUrl | URL сервиса авиабронирования (prd.avia.corteos.ru) для отправки запроса очистки кэша |
SSO.LogoutPage | URL для обратного перехода на страницу, с которой был выполнен SSO-переход на этот сайт (https://prd.sso.corteos.ru/OutgoingRedirection/Back) |
RecaptchaSiteKey | Ключ для работы сервиса Google reCAPTCHA, используемого сайтом |
RecaptchaSecret | Секретный ключ для работы сервиса Google reCAPTCHA, используемого сайтом |
prd.hotels.corteos.ru
Название файла конфигурации: appSettings.config
Ключ | Значение |
---|---|
HotelModel.SQL.ConnectionString | ConnectionString к базе HEBase, требуемой для работы услуги бронирования гостиниц |
Environment.Test | Флаг для включения режима тестовой среды, при котором блокируются запросы к боевым сервисам и подменяются на тестовые доступы |
HotelV4.LogSearches | Флаг для включения ведения логов поиска гостиниц - по умолчанию false |
HotelV4.LogRoot | Физический путь к директории с логами, по умолчанию c:\corteos\logs\engines\hotel |
Zip.TempPath | Физический путь для промежуточного сохранения лог-файлов перед упаковкой их в архив, по умолчанию c:/corteos/zipTemps |
prd.adm.hotels.corteos.ru
Название файла конфигурации: web.config
Ключ | Значение |
---|---|
HotelModel.SQL.ConnectionString | ConnectionString к базе HEBase, требуемой для работы услуги бронирования гостиниц |
API.HotelServiceUrl | URL сервиса бронирования гостиниц (prd.hotels.corteos.ru) для отправки запроса очистки кэша |
SSO.LogoutPage | URL для обратного перехода на страницу, с которой был выполнен SSO-переход на этот сайт (https://prd.sso.corteos.ru/OutgoingRedirection/Back) |
RecaptchaSiteKey | Ключ для работы сервиса Google reCAPTCHA, используемого сайтом |
RecaptchaSecret | Секретный ключ для работы сервиса Google reCAPTCHA, используемого сайтом |
prd.adm.rail.corteos.ru
Название файла конфигурации: web.config
Ключ | Значение |
---|---|
RailModel.SQL.ConnectionString | ConnectionString к базе RailBase, требуемой для работы услуги покупки ЖД билетов |
SSO.LogoutPage | URL для обратного перехода на страницу, с которой был выполнен SSO-переход на этот сайт (https://prd.sso.corteos.ru/OutgoingRedirection/Back) |
RecaptchaSiteKey | Ключ для работы сервиса Google reCAPTCHA, используемого сайтом |
RecaptchaSecret | Секретный ключ для работы сервиса Google reCAPTCHA, используемого сайтом |
prd.rail.corteos.ru
Название файла конфигурации: web.config
Ключ | Значение |
---|---|
RailModel.SQL.ConnectionString | ConnectionString к базе RailBase, требуемой для работы услуги покупки ЖД билетов |
Environment.Test | Флаг для включения режима тестовой среды, при котором блокируются запросы к боевым сервисам и подменяются на тестовые доступы |
RailV1.LogRoot | Физический путь к директории с логами, по умолчанию c:\corteos\logs\engines\rail |
Zip.TempPath | Физический путь для промежуточного сохранения лог-файлов перед упаковкой их в архив, по умолчанию c:/corteos/zipTemps |
Настройка сервера БД (только для MS SQL)
Для работы сервера БД необходимо после установки MS SQL Server произвести следующие настройки:
Включить работу по сетевому протоколу (SQL Server Configuration Manager):
Включить работу с Filestream (SQL Server Configuration Manager):
Отключить генерацию имен файлов 8.3 в файловой системе NTFS при помощи команды
fsutil 8dot3name set 1
По умолчанию эта настройка включена, что очень сильно замедляет работу таблиц с FILESTREAM.
Кроме этого для повышения производительности рекомендуется:
Для баз данных установить модель восстановления Simple
Размещать базу tempdb на отдельном физическом диске, желательно SSD.