У меня странная ситуация.
Я работаю над парой freeradius
серверов и планировал установить балансировщик нагрузки перед ними в GCP.Не совсем уверен, что это лучший подход, поскольку у меня нет особого опыта работы с Freeradius ... но это путь, по которому я пошел.
Поэтому я собрал несколько Terraform для создания пары экземпляров GCPи написал сценарий запуска для развертывания файлов приложения и конфигурации.Пока все хорошо.
Затем я начал работу с балансировщиком нагрузки и заметил, что GCP предлагает UDP
Балансировщик нагрузки в качестве услуги, отлично ... это работает.Тем не менее, он действительно хочет проверить здоровье.Что в принципе хорошо, но на самом деле невозможно за UDP
.
Итак, я подумал ... может быть, я напишу какой-нибудь Python, который может проверить, работает ли служба radiusd
, и если нет .. остановите httpd
... Таким образом,балансировщик нагрузки может запустить его http healthcheck
, и если служба radiusd
остановится, скрипт python просто остановит httpd service
, и балансировщик нагрузки узнает, что сервер не работает, и переключится на другой.
У меня много вопросов. Хотя этот подход может работать, это лучший подход?Мне кажется, что чем больше я еду по этой дороге, тем больше это похоже на неправильный путь.
Если случайно это кажется лучшим подходом ... У меня нет большого опыта запуска вывода Python на веб-страницу.Я написал простой кусочек Python для проверки службы, как таковой?
import os
import subprocess
def running(name):
with open(os.devnull, 'wb') as hide_output:
exit_code = subprocess.Popen(['service', name, 'status'], stdout=hide_output, stderr=hide_output).wait()
return exit_code == 0
if not running('radiusd'):
os.system('service httpd stop')
Как вы можете видеть, в этом случае он остановит службу httpd
, которая достигнет того, что я хочу.. но тогда он не запустится httpd
, когда сервис radiusd
снова включится.
Итак, есть ли альтернативное решение?
Если нет, то есть ли способ запустить сценарий как веб-приложение, которое постоянно запускает проверку службы radiusd
и приносит удержание?страница вверх или вниз в зависимости от результата?
Спасибо, и извините за эссе.