#amazon-web-services #docker #jenkins #aws-application-load-balancer #health-check
Вопрос:
Я создал экземпляр AWS EC2 и запустил в нем контейнер jenkins, вот подробности :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
xxxxxxxxx docker.io/jenkins/jenkins 47 hours ago Up 47 hours ago 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp jenkins
после этого я настроил AWS ALB для прослушивания порта 443 и предоставил этому экземпляру jenkins контейнер jenkins в качестве целевого.
Сведения о проверке работоспособности балансировщика нагрузки приведены ниже:
Я также пробовал использовать порт трафика, но это также нездорово.
после этого мой балансировщик нагрузки может переслать запрос экземпляру, и я могу связаться с контейнером Дженкинса с DNS балансировщика нагрузки.
Но мой балансировщик нагрузки показывает, что моя цель нездорова,
Может ли кто-нибудь помочь мне понять, почему моя цель нездорова и какие шаги я мог бы предпринять, чтобы сделать ее здоровой.
Ответ №1:
Дженкинсу EC2 следует назначить группу безопасности, которая разрешает доступ к порту Дженкинса (8080) из ALB. и вы обеспечите полный исходящий доступ в Интернет для Дженкинса, чтобы можно было устанавливать обновления и плагины.
Дженкинсу требуется аутентификация, поэтому, когда ALB выполняет проверку работоспособности как анонимный пользователь, он получает страницу с запрещенным доступом 403, но при проверке работоспособности http ожидается код 200 ok, поэтому вы можете переключить это на проверку работоспособности tcp.
Комментарии:
1. мой экземпляр jenkins уже разрешает порт 8080 из любого места, и исходящие правила также настроены для всех.
2. Это балансировщик нагрузки приложений , ALB работает на уровне 7 na, он будет работать только на http/https. невозможно настроить проверку работоспособности tcp
3. Не могли бы вы попробовать 403 в качестве кода успеха вместо 200
4. но это всего лишь обходной путь, верно? предоставление кода 403 в качестве статуса » ок » не кажется идеальным решением, это не объясняет, почему loadbalancer получал ошибку 403
Ответ №2:
Используйте /login вместо / Проверьте также номер порта. Я использую 8080