Код для включения проверки работоспособности в приложении узла для ALB - PullRequest
1 голос
/ 04 марта 2020

Я проверяю, чтобы включить Application Load Balancer в AWS, используя Node. В моих экземплярах EC2 я использую прокси nginx для отправки на порт 3000, и все, что я настраиваю, это путь "/ healthcheck" для проверки в nginx и узла контроля работоспособности. В nginx было довольно просто

location /healthcheck {
return 200;

}

Но для узла я не могу найти чистый пример включения той же функции для порта 3002. Сейчас у меня ошибка тайм-аута.

Спасибо

PD: я проверил историю, и последнему ответу исполнилось 3 года, я создал ping. html file Как настроить AWS Elasti c Проверка состояния балансировки нагрузки для Node.js

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Я сделал это. В моем случае это была служба маршрутизации на основе латентности DNS AWS, но она работает так же.

Я настроил конечную точку /health в моей программе nodejs. Это довольно просто сделать с express. Затем я помещаю этот раздел в nginx .conf.

         location /health {

              proxy_pass http://relay/health;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection 'upgrade';
              proxy_set_header Host $host;
              proxy_set_header        X-Real-IP       $remote_addr;
              proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
         }

. Все это есть, чтобы убедить ваш обратный прокси nginx передать адрес хоста-источника на сервер nodejs. Мой сервер называется «ретранслятор», ваш - это что-то другое.

Моя конечная точка /health настроена на возврат 200, когда все в порядке, и 503 («служба недоступна» a / k / a «попробуйте снова»). позже "), когда конкретный сервер перегружен или находится в процессе отключения. Полностью мертвый сервер просто не отвечает, что служба DNS AWS правильно интерпретирует, как и служба ALB.

Я также добавил очень маленький объект JSON, описывающий текущее состояние сервера, когда он был построен и запущен, и еще несколько деталей. Хорошо для мониторинга.

1 голос
/ 04 марта 2020

Вам в основном нужно предоставить конечную точку healtcheck. Это будет зависеть от того, что вы используете для создания веб-сервера. варианты express, http, hapijs и др. c. Самый простой маршрут с использованием express может быть

const express = require('express')
const app = express()
const port = 3002

app.get('/healthcheck', (req, res) => res.send('Hello World!'))

app.listen(port, () => console.log(`Example app listening on port ${port}!`));

. В вашем ALB вы можете просто использовать http://someIp:3002/healthcheck. Если он возвращает 200, это означает, что ваше приложение в противном случае не работает. Вы должны убедиться, что порт также открыт для связи на вашем ec2.

...