нагрузка приложения весенней загрузки сбалансирована с помощью Apache - PullRequest
0 голосов
/ 21 сентября 2018

У меня есть приложение с несколькими модулями

  • Два подпружиненных загрузочных бэкэнда, которые экспортируют службы json во внешний интерфейс
  • Приложение внешнего интерфейса node.js
  • Несколько phpстраницы, обслуживаемые сервером Apache

Веб-браузеры взаимодействуют только с сервером Apache, который направляет запросы в эти приложения (используя виртуальные узлы и перенаправления).

  • admin.myapp.com (внешние интерфейсы php и node.js)
  • api.myapp.com (серверная часть служб)
  • scheduler.myapp.com (серверная часть планировщика)

Для большей ясности вот графическое объяснение этого распределения

Вот конфигурация виртуального хоста для бэкэнда

<VirtualHost *:80> 
  ServerName api.myapp.com
  ProxyPreserveHost On
  ProxyRequests Off
  ProxyPass / http://localhost:8080/
  ProxyPassReverse / http://localhost:8080/
</VirtualHost> 

Мне нужно реализовать HA только для бэкэндаприложение с экземплярами программного обеспечения (т.е. я не могу добавить новый выделенный экземпляр apache для балансировки).

Я не могу понять, как это сделать, учебники, которые я прочитал, объясняют, как преобразовать весь экземпляр apache в балансировщик нагрузки, но мне нужно только перенести HA на один виртуальный хост (бэкэнд-сервисы), сохраняя программное обеспечениеэкземпляры, как они сейчас.

Буду признателен за любую помощь.

Спасибо

С уважением

1 Ответ

0 голосов
/ 21 сентября 2018

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

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

Для этого нам понадобится установить несколько модулей: sudo a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests должно быть достаточно, в противном случае проверьте журналы на наличие отсутствующих модулей или рекомендаций.

Затем заполните пробелы в вашем виртуальном хосте.:

<VirtualHost *:80>
        ServerName api.myapp.com
        ProxyPreserveHost On
        ProxyRequests Off
        #Your balanced backends
        <Proxy balancer://backend-cluster>
                BalancerMember http://localhost:3000
                BalancerMember http://localhost:9000
                ProxySet lbmethod=byrequests
        </Proxy>
        #Balancer admin interface for localhost access
        <Location /balancer-manager>
                SetHandler balancer-manager
                Order allow,deny
                allow from localhost 
        </Location>

        ProxyPass /balancer-manager !
        #Proxying everything to your backends
        ProxyPass / balancer://backend-cluster/

</VirtualHost>

Httpd также предоставляет несколько других алгоритмов для балансировки ваших запросов.Как вы можете видеть, приведенный пример балансирует с byrequest (в двух словах, разделяет запросы между участниками).Остальные (я рекомендую вам прочитать документы):

  • bytraffic - Распределить нагрузку по количеству трафика на одного участника
  • bybusyness - выбираются члены с меньшим количеством заданий
  • heartbeat - использует mod_heartbeat для балансировки работы

Эта минимальная конфигурация должна быть достаточной для достиженияминимальные бэкэнд-сервисы HA.

...