Это очень важно для указания пути или порта проверки работоспособности при подключении службы к ALB.
ALB не проверяет тело ответа, но проверяет код состояния, поэтому единственный вызов, который вернет вам 200
код состояния: curl -I http://127.0.0.1:15672
rest потребует аутентификации или 404 или 403, какой LB пометит цель как нездоровую.
![enter image description here](https://i.stack.imgur.com/9C5D5.png)
Как 15672 вернет 200.
![enter image description here](https://i.stack.imgur.com/cOel5.png)
Кроме того, проверьте проверку работоспособности целевой целевой группы задачи ECS, указывает ли она правильный порт экземпляра.
![enter image description here](https://i.stack.imgur.com/BTIUo.png)
2-й вариант: Кроме того, вы можете написать пользовательские проверки работоспособности для LB, которые будут контролировать оба порта вашего контейнера, так как ALB проверяет работоспособность только одного порта за раз, простой пример может быть основан на nodejs, так что это означает, что вы должны запустить простое приложение узла, которое проверит оба порта и ответит на проверки состояния ALB.
В этом случае ваша проверка здоровья будет /ping
, а порт будет 3007
Ниже приведен код, который мы используем для такой задачи ECS, где нам нужно проверить несколько портов.
var express = require('express');
const isAllReachable = require('is-all-reachable');
var request = require('request');
var app = express();
app.get('/ping', (req, res) => {
isAllReachable([
// first check if all reachable
'http://localhost:15672'
// 'http://localhost:otherport'
], (err, reachable, host) => {
//if reachable then do API request if its responding
if (reachable) {
console.log("Health check passed");
console.log("checking rabbitMQ");
request.get('http://localhost:15672/api/vhosts', {
'auth': {
'user': 'guest',
'pass': 'guest',
'sendImmediately': false
}
}, function(error, response, body) {
console.log({
"status_code": response.statusCode,
"body": body
})
if (error) {
console.log(error)
console.log("failed to get vhosts");
res.status(500).send('health check failed');
} else {
res.status(200).send('rabbit mq is running');
}
})
} else {
console.log("health check failed. ", "This server is not reachable", err);
res.status(500).send('health check failed. one of the port is not reachable.');
console.log(reachable)
}
});
});
app.listen(3007, () => console.log('LB custom Health check server listening on port 3007!'));
Для мониторинга Кролика, в глубине вы можете изучить Мониторинг кролика.