Python мониторинг радиус службы.Loadbalancer tcp healthcheck - PullRequest
0 голосов
/ 05 февраля 2019

У меня странная ситуация.

Я работаю над парой 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 и приносит удержание?страница вверх или вниз в зависимости от результата?

Спасибо, и извините за эссе.

...