2015-01-07 5 views
3

Google App Engine запрашивает/_ah/health из управляемого vm для проверки работоспособности.Как настроить конечные точки проверки работоспособности Google App Engine для управляемых виртуальных машин

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

В настоящее время app.yaml не поддерживает правила перезаписи, если он поддерживается, я могу указать/_ah/health на конечную точку/ping. Это было бы здорово, потому что проверка работоспособности могла быть реализована без изменения кода.

В app.yaml есть конфигурация для обработчиков, я понимаю, что обработчик предназначен для использования во время выполнения google, а не для управляемых виртуальных машин.

Я хочу изменить местоположение запроса/_ah/health. Есть ли способ сделать это изменение?

+0

Вы можете настроить многие параметры проверки работоспособности на https://cloud.google.com/appengine/docs/python/managed-vms/#health_checking, но не AFAIK, URL-адрес, который он использует. Не можете ли вы просто обслуживать медицинские проверки по этому URL-адресу, а также любому другому? Какую специальную задачу вы пытаетесь выполнить точно? –

+0

Вариант использования - поддержка развертывания приложений без изменения исходного кода. –

+0

И если проверки здоровья пошли, чтобы сказать '/ health/mine', а не'/_ah/health', как это облегчит вашу задачу? Вы можете использовать 'app.yaml' (или эквивалентные механизмы в Java), чтобы переключать, какая часть вашего кода служит для проверки работоспособности, в зависимости от того, какой из двух URL-адресов вы используете. –

ответ

2

Итак, предположим, что у вас есть «здоровье-проверку обслуживающей конечной точки» (используя webapp2 для определенности, другие структуры, конечно, работают аналогично) в health.py:

class HealthPage(webapp2.RequestHandler): 
    def get(self): 
    self.response.write('<html><body><p>I\'m fine!</p></body></html>') 

и, к сожалению, у вас также есть информация о маршрутизации Аппаратно кодируются, скажем, в том же файл (а не более правильно читать его из легко изменены и нажат файла конфигурации):

application = webapp2.WSGIApplication([ 
    ('/howareyou', HealthPage), 
]) 

Теперь, чтобы служить медосмотры из того же HealthPage обработчика н ПЕД редактировать ваш app.yaml иметь:

handlers: 
- url: /_ah/health 
    script: health.application 

перед обработчики которых url: имеет специальные символы, которые могут «проглотить» этот, конечно.

Теперь, поскольку у вас есть строгое, жестко закодированное решение маршрутизации в вашем объекте приложения, вам придется его отредактировать. На самом деле это не «редактирующий код» - это редактирование информации о конфигурации, которую вы, к сожалению, решили внедрить в строгие строковые строки в коде, а не собирать ее из кода конфигурации.

Либо сделать маршрутную менее строгим, может быть все, вплоть до в-кода:

application = webapp2.WSGIApplication([ 
    ('.*', HealthPage), 
]) 

или если вы обязались использовать очень строгие жёстко прописанные маршруты в вашем коде, вы»можете выбрать, чтобы добавить одна строка ...:

application = webapp2.WSGIApplication([ 
    ('/howareyou', HealthPage), 
    ('/_ah/health', HealthPage), 
]) 

Аналогично для других систем маршрутизации (за пределами app.yaml и другой маршрутизации конфигурации на основе сделанной для вас самой App Engine), конечно - webapp2 «s система маршрутизации нет ничего странного, ни аномальный ,

Обратите внимание, что ни один из этих изменений не остановить свой код от отбывания /howareyou URL, если он направлен на health.py в других (не GAE и не-GAE-подобных) внедрений - они будут служить ему так же, как они используются делать.

Если вы все равно требуете возможности перезаписи URL-адресов в app.yaml или аналогичных мощных функциях, чтобы иметь дело с проверками работоспособности, избегая при этом необходимости такого крошечного обходного пути, вы можете, конечно, открыть запрос функции на https://code.google.com/p/googleappengine/issues/list - Я просто не могу себе представить, что он получает высокую актуальность и тысячи открытых проблем там, но, эй!, я ошибся раньше :-).

+0

Я открыл проблему для этой функции на странице https://code.google.com/p/googleappengine/issues/detail?id=11636 –

+1

Это старая проблема, но кто-нибудь смог ее решить для рельсов? – beckah

Смежные вопросы