Конфигурация Nginx: - Невозможно разрешить хост RabbitMQ-2A.
У меня есть конфигурация nginx для создания кластера RabbitMQ, внутри которого работают 3 контейнера, такие как RabbitMQ-2A, RabbitMQ-2B и RabbitMQ-2C. (Таким образом, имена хостов настраиваются в Docker Compose, как Rabbitm-2A), но хост nginx разрешает имена хостов только в нижнем регистре (rabbitmq-2a).
Итак, я не могу переименовать хост, потому что сообщения уже находятся в очереди (не хочу терять существующие сообщения).
Файл создания Docker docker-compose-rabbitmq.yml
version: "3.2"
services:
rabbitmq-2A:
image: rabbitmq:3-management-alpine
hostname: rabbitmq-2A
rabbitmq-2B:
image: rabbitmq:3-management-alpine
hostname: rabbitmq-2B
rabbitmq-2C:
image: rabbitmq:3-management-alpine
hostname: rabbitmq-2C
metricsTestA{
set $rabbitmqtest http://rabbitmq-2A;
proxy_pass $rabbitmqtest
}
Это не решается, поскольку nginx пытается разрешить это, как будто Rabbitmq-2a (что очевидно) не является именем хоста.
Кроме того, я попытался настроить восходящий поток
upstream backends {
least_conn;
server backends.example.com:8080 max_fails=3;
}
server {
location / {
proxy_pass http://backends;
}
}
https://www.nginx.com/blog/dns-service-discovery-nginx-plus/ Кто-нибудь знает, как это пройти?
1 ответ
DNS нечувствителен к регистру (RFC 4343), так что это не проблема.
Я больше предполагаю, что имена хостов неверны.
Вот несколько советов:
- Ваш nginx находится в том же пространстве имен?
- В противном случае вам понадобится полное доменное имя вместо простого имени. Посмотрите файл kubernetes-config.
- Использует ли nginx правильный DNS-сервер? Может ли он разрешить другие службы?
Редактировать
Судя по вашему последнему комментарию, я могу представить, в чем проблема.
Я думаю, что у тебя естьStatefulSet
?
Тогда ваше имя хоста выглядит странно. Это должно быть что-то вродеrabbitmq-2A-1
илиrabbitmq-1
.
StatfulSets
имеют особое поведение в соответствии с именами хостов. Связанные документы: StatefulSets