Контейнер Redis для проверки работоспособности с ALB
Я развернул контейнер Redis с помощью Amazon ECS за балансировщиком нагрузки приложений. Похоже, проверки работоспособности не пройдены, хотя контейнер работает и готов к приему соединений. Кажется, что происходит сбой, потому что проверка работоспособности - HTTP, и, конечно, redis не является http-сервером.
# Possible SECURITY ATTACK detected. It looks like somebody is sending
POST or Host: commands to Redis. This is likely due to an attacker
attempting to use Cross Protocol Scripting to compromise your Redis
instance. Connection aborted.
Справедливо.
Классические балансировщики нагрузки, которые я считаю, будут в порядке, так как я могу явно пинговать TCP. Возможно ли использовать Redis с ALB?
3 ответа
Измените проверку здоровья на протокол HTTPS. Все балансировщики нагрузки Amazon поддерживают это. Чем ближе проверка вашего здоровья к тому, что пользователь получает доступ, тем лучше. Проверка HTML-страницы лучше проверки TCP. Проверка страницы, которая требует, чтобы ответные службы отвечали лучше. TCP иногда будет успешным, даже если ваш веб-сервер не обслуживает страницы.
Разверните свой контейнер с установленным nginx и направьте проверку работоспособности на порт обработки nginx.
Недавно я столкнулся с подобной проблемой: мой контейнер Redis был запущен и работал правильно, но
# Possible SECURITY ATTACK detected
сообщение появлялось в журналах раз в минуту. Проверка работоспособности была
curl -fs http://localhost:6379 || exit 1
; это было отклонено кодом Redis (ищите «АТАКА БЕЗОПАСНОСТИ»).
Мое решение заключалось в использовании проверки работоспособности без CURL:
redis-cli ping || exit 1
(взято из этого поста). Состояние проверки работоспособности показывает «исправно», а журналы чистые.
Я знаю, что приведенного выше решения будет недостаточно для всех сторон, но, надеюсь, оно будет полезно при формировании вашего собственного решения.