Балансировщик нагрузки не может подключиться к серверной части

Я развернул загрузочное приложение Spring на вычислении OCI, и оно прекрасно работает. Вычисления создаются с общедоступным IP-адресом, а список безопасности обновлен, чтобы разрешить подключения из Интернета. Но я не смог добраться до конечной точки из Интернета. По этой причине я подумал о настройке балансировщика нагрузки.

введите здесь описание изображения

Создал балансировщик нагрузки в отдельной подсети (10.0.1.0/24), таблицу маршрутизации и список безопасности. Настроил список безопасности LB для отправки всех пакетов протокола в CIDR вычислений (10.0.0.0/24) и настроил список безопасности вычислений для приема пакетов от LB. Я ожидал, что LB подключится к серверной части. Но это не так.

введите здесь описание изображения

Я могу попасть в LB из Интернета: -

введите здесь описание изображения

Таблица маршрутизации Lb со всеми IP-адресами, маршрутизируемыми через интернет-шлюз. Для CIDR вычислений не определена маршрутизация, как в VCN.

введите здесь описание изображения

LB имеет свой собственный список безопасности, который позволяет вычислять исходящие пакеты и входящие из Интернета, как показано ниже:

введите здесь описание изображения  введите описание изображения здесь

Список безопасности Compute, принимающий пакеты от LB:  введите здесь описание изображения введите описание изображения здесь

Дайте мне знать, если мне что-то здесь не хватает.

Мой интернет-шлюз: -  введите описание изображения здесь

Моя конфигурация подключения к серверу из LB:

введите здесь описание изображения

LB не может установить соединение с серверной частью, похоже, нет доступной информации о журнале:

введите здесь описание изображения

Приложение работает нормально, если я получаю доступ с вычислительного узла:

введите здесь описание изображения


person Subra M    schedule 14.11.2019    source источник
comment
Вы создали Интернет-шлюз и соответствующим образом настроили таблицу маршрутов?   -  person lsarecz    schedule 14.11.2019
comment
Ага. Я обновил скриншоты. Я могу попасть в LB из интернета. Но поскольку LB не может разговаривать с бэкэндами, он отвечает 502. Требуется ли явная маршрутизация в VCN? Мой LB находится в подсети с cidr 10.0.1.0/24, а подсеть copute назначила cidr 10.0.0.0/24   -  person Subra M    schedule 14.11.2019


Ответы (2)


LB имеет проверку работоспособности, которая проверяет подключение к вашей службе. Если это не удастся, LB будет держать ваш бэкэнд вне ротации и даст вам критическое состояние здоровья, как вы видите.

Проверка работоспособности по умолчанию

Вы можете получить к нему доступ, посмотрев на набор серверной части и нажав кнопку «Обновить проверку работоспособности».

Экран конфигурации Backend Set

Изменить: в конечном итоге я понял это, вы должны запустить следующие команды на своем бэкэнде:

sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload

Используйте порт, который вы настроили в своем приложении для прослушивания.

Я использовал httpd вместо spring, но я также сделал следующее

sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
sudo restorecon -F -R -v /var/www/html

Я не очень хорошо знаком с selinux, но вам может потребоваться сделать что-то подобное для вашего приложения.

Кроме того, установка второго хоста в той же подсети для входа в систему и тестирования подключения к другому хосту поможет в устранении неполадок, поскольку он проверит, доступно ли ваше приложение вообще за пределами хоста, на котором оно находится. Как только это произойдет, LB должен прийти в норму.

person juss    schedule 14.11.2019
comment
Спасибо за ответ. У меня уже есть правильная информация о соединении с сервером, чтобы LB мог выполнить вызов для проверки работоспособности. Я не знаю, что вызывает сбой запроса соединения LB на бэкэнде. - person Subra M; 15.11.2019
comment
Я добавил еще скриншоты - person Subra M; 15.11.2019
comment
Я могу попасть в конечную точку приложения из вычислений, и он работает нормально. Я подозреваю, что конфигурация сети связана с проблемой подключения к LB-серверу. - person Subra M; 15.11.2019
comment
Привет @SubraM, это скорее всего конфигурация сети, как вы сказали. Используете ли вы один и тот же список безопасности как для подсети LB, так и для вычислительной подсети? - person juss; 16.11.2019
comment
Hi @juss LB имеет собственный список безопасности. Я обновил скриншоты для LB и compute - person Subra M; 16.11.2019
comment
Я сам с этим повозился и разобрался. Для меня selinux был включен на хосте, а также на брандмауэре. Итак, подключение через localhost было найдено, но я не мог подключиться с другой конечной точки. Позвольте мне отредактировать ответ, чтобы отразить это. - person juss; 17.11.2019
comment
После выполнения команд брандмауэра из серверной части LB может установить соединение с серверной частью. Большое спасибо @juss - person Subra M; 18.11.2019

TL; DR В моем случае это помогло переключить правила списка безопасности с с сохранением состояния на без сохранения состояния в двух соответствующих подсетях (где размещался балансировщик нагрузки и где располагались серверные ВМ). .

В нашем развертывании у меня был балансировщик нагрузки с общедоступным IP-адресом, расположенный в одной подсети, а серверная часть этого балансировщика нагрузки находилась в другой подсети. В обеих подсетях было одно правило входа и одно правило выхода - разрешать все (т.е. 0.0.0.0/0 и все разрешенные порты). Серверные ВМ по-прежнему были недоступны для балансировщика нагрузки, и проверки работоспособности не выполнялись.

Даже несмотря на то, что в моем случае согласно документация переключение между сохранением и сохранением состояния не должно иметь никакого эффекта, это решило мою проблему.

person Bernard Halas    schedule 21.05.2020