Обзор #
Цель этой статьи - объяснить, как сделать приложение CRM критическим для такой компании, как Odooочень масштабируемый Кроме того, как настроить его в высокой доступности, чтобы быть терпимым к сбоям, и как повысить безопасность доступа к нему.
Что такое высокая доступность? #
Высокая доступность - это качество системы или компонента, которое обеспечивает высокий уровень эксплуатационных характеристик, обычно времени безотказной работы, в течение периода времени, превышающего нормальный.
Что такое оду? #
Odoo (она же OpenERP) - это программное обеспечение с открытым исходным кодом для бизнеса, которое объединяет все потребности бизнеса, включая CRM, биллинг, бухгалтерский учет, управление веб-сайтами, складом и проектами, производство, инвентаризацию и многое другое!
Настройка RELIANOID Балансировщик нагрузки #
С RELIANOID Балансировщик нагрузки мы можем обеспечить высокую доступность и подготовиться к массовой масштабируемости для Odoo услуги, следуя шагам ниже.
Обратите внимание, что для следования этим инструкциям потребуется установить экземпляр RELIANOID Балансировщик нагрузки и несколько экземпляров Odoo Приложения. Кроме того, очень важно, чтобы Postgresql реплицируются между ними, чтобы обеспечить последовательность.
Среда, которую мы собираемся описать в этой статье, показана ниже.

Шаг 1: создайте виртуальный IP #
Требуется создание виртуального IP-адреса в балансировщике нагрузки, поскольку он будет точкой входа в Odoo Сервисы. В нашем примере у нас будет два Odoo реальные серверы, но вы можете включить столько, сколько вам нужно, без каких-либо ограничений. Чтобы создать новый виртуальный IP, из RELIANOID LB главное меню, выберите Настройки-> Интерфейсы.

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

Введите адрес и маску сети вашего нового виртуального IP-адреса, он должен находиться в той же подсети, что и физическое устройство. Сохраните его, нажав на кнопку сохранить виртуальный интерфейс.

Шаг 2: создание фермы http #
Ферма - это набор компьютерных серверов, которые обеспечивают функциональность сервера, значительно увеличивая его возможности. Итак, создав ферму Odoo На серверах мы повысим его производительность и масштабируемость, что крайне важно для высокой доступности. Для этого перейдите на Управление-> Фермы.

Нажмите на Добавить новую ферму и в новом окне выберите имя и HTTP как профиль. Мы выбрали профиль HTTP, потому что это лучший вариант для веб-сервисов, и он требуется для анализа содержимого приложения, чтобы обеспечить постоянство на уровне приложения.

Будут отображены еще два варианта. Выберите виртуальный IP-адрес, созданный на шаге 1, и порт (в примере мы выбираем 80, так как он используется по умолчанию для протокола HTTP) и нажмите на Сохранено .

Для получения дополнительной информации о фермах, пожалуйста, обратитесь к Управление :: ферм.
Шаг 3: добавить сервис #
После того, как ферма была создана, мы должны отредактировать ее, чтобы добавить новый сервис. Пожалуйста, нажмите на кнопку редактировать ферму.

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

На скриншоте выше найдите Добавить сервисный разделвведите название службы и нажмите Добавить.

Сейчас мы оставим значения по умолчанию и добавим только те бэкэнды, где Odoo реальные службы будут работать. Найдите раздел бэкэндов и нажмите кнопку Добавить реальный сервер.

Включите IP-адреса и порты Odoo сервисы (по умолчанию 8069 для сервисов Odoo), время ожидания и вес и нажмите на кнопку сохранить на реальном сервере.

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

Вставить session_id в качестве идентификатора персистентной сессии и нажмите на Изменить.

Наконец, мы должны применить изменения, перезапустив ферму.
![]()
Поздравляем! вы настроили Odoo в высокой доступности. Вы можете получить к нему доступ, набрав http://[VIRTUAL_IP]:[PORT] (в нашем примере http://192.168.56.200).
Шаг 4: расширенная проверка работоспособности #
Теперь мы настроим опекуна фермы для выполнения расширенных проверок работоспособности бэкэндов, обеспечивающих их работоспособность и работоспособность, а также правильное поведение приложения, а не только проверку TCP-порта. Пожалуйста, найдите Ферма Страж в Odoo Сервис мы настроили на шаге 3. Нажмите на Используйте FarmGuardian для проверки Backend серверовВы также можете изменить время между проверкой и, наконец, в Команда для проверки В текстовом поле введите следующую команду:
check_http -I ХОСТ -w 10 -c 10 -t 10 -e 200 -p ПОРТ -s ' '
В конце, нажмите Изменить.

Команда check_http проверяет HTTP-соединения с указанным хостом. В нашем случае мы используем следующие параметры:
-Я ХОЗЯИН: Токен HOST будет заменен заданным внутренним IP-адресом.
-w 10: время реакции на выдачу предупреждения: 10 секунд
-c 10: время реакции на критическое состояние: секунды 10
-t 10: 10 секунд до истечения времени соединения
-e 200: ожидает строку 200 в статусе ответа сервера
-Р ПОРТ: ПОРТ токена будет заменен заданным внутренним портом.
-s ' ': ожидаемая в содержании строка ' '
Эта расширенная проверка работоспособности гарантирует, что мы получим ответ 200 OK от реальных серверов и что команда ответа содержит строку ' '. Мы выбираем эту строку, потому что она находится в конце ответа, таким образом мы можем гарантировать, что получим правильный ответ от серверного приложения.
Шаг 5: высокий уровень безопасности #
Odoo не обеспечивает безопасный канал для веб-общения, но мы можем легко достичь этого с RELIANOID Балансировщик нагрузки, как показано ниже.

Нам нужно настроить прослушиватель HTTPS: на Изменить глобальные параметры фермы измените прослушиватель фермы с HTTP на HTTPS и Виртуальный порт в 443.

На данном этапе, Odoo можно получить, набрав https://[VIRTUAL_IP] В Вашем браузере.
Теперь безопасная связь работает, но мы можем пойти дальше, настроив шифры HTTPS: в глобальных параметрах фермы найдите Настройки HTTPS раздел. Мы можем изменить шифры Строгий режим.

Поле ciphers используется для создания списка шифров, принятых HTTPS-сервером для усиления SSL-соединения. Выбрав Строгий режимПо умолчанию мы установим шифры.
kEECDH+ECDSA+AES128:kEECDH+ECDSA+AES256:kEECDH+AES128:kEECDH+AES256:kEDH+AES128:kEDH+AES256:DES-CBC3-SHA:+SHA:!aNULL:!eNULL:!LOW:!kECDH:!DSS:!MD5:!EXP:!PSK:!SRP:!CAMELLIA:!SEED
Другим вариантом является HTTPS сертификаты доступны: будет показан список сертификатов, которые будут выбраны для текущей фермы (только для HTTP-ферм, как в нашем случае). Мы можем выбрать один из списка и нажать на Добавить, Наконец, нажмите на Изменить и перезапустите ферму, чтобы применить изменения.
Наконец, zencert.pem сертификат можно использовать для тестирования прослушивателя HTTPS, но важно использовать собственный сертификат SSL.
Для получения дополнительной информации, пожалуйста, обратитесь к Фермы профиля HTTP.
Шаг 6: веб-база Odoo #
Odoo строит URL с учетом его настройки web.base.url, Если мы получим доступ через RELIANOID Load Balancer мы увидим, что URL-адрес переключается на URL-адрес бэкэнда. Поскольку мы настроили безопасную связь через HTTPS, это могло создать проблему, и мы могли только перейти к Odoo базовый URL. Чтобы избежать этого, мы должны установить web.base.url параметр в каждом odoo сервера.
Для этого откройте каждый бэкэнд и на левой панели перейдите к Технические >> Параметры >> Параметры системы и изменить web.base.url до RELIANOID Виртуальный IP-адрес балансировщика нагрузки и порт, выбранные для фермы odoo. В нашем примере это будет https: // 192.168.56.200 или, что еще лучше, https://odoo.mycompany.com.

Технические функции могут быть отключены. В таком случае технические параметры не будут доступны. Чтобы решить эту проблему, выберите Пользователи >> Пользователи, отредактируйте текущего пользователя и включите Технические характеристики вариант под Удобство использования.
Шаг 7: хранилище файлов Odoo #
Существует несколько параметров для настройки хранилища файлов в режиме высокой доступности.
1. В каждом бэкэнде мы можем смонтировать общее хранилище и настроить локальный путь через параметр ir_attachment.location в разделе Настройки >> Технические >> Параметры >> Системные параметры.
2. Если у нас нет модуля, обеспечивающего высокую доступность общего ресурса для файлового хранилища, мы можем использовать RELIANOID создать его для NFS (Сетевая файловая система), чтобы быть смонтированным в каждом бэкэнде. Поскольку эта служба использует порты TCP и UDP, мы можем создать L4xNAT через все порты с определенным виртуальным IP-адресом, который будет использоваться для автоматической настройки подключения во время загрузки через / И т.д. / Fstab .
3. Другой вариант - настроить SSHFS который использует безопасный сервис SSH для использования удаленной общей файловой системы. В качестве службы SSH по умолчанию используется порт TCP 22, который может быть сбалансирован по нагрузке через L4xNAT, не беспокоясь о ситуации, аналогичной случаю NFS.
В зависимости от того, нужно ли создать ресурс общего хранилища файлов активно-активный или активно-пассивный, потребуется репликация или синхронизация файлов.
Хотя эта тема выходит за рамки данной статьи, она будет рассмотрена в специальной статье.
Теперь ваши бизнес-процессы и операции готовы к масштабированию, установив Odoo в режим высокой доступности с помощью RELIANOID, наслаждаться!