我有nginx配置,使rabbitmq集群whcih有3个容器运行在里面,如rabbitmq-2A,rabbitmq-2B和rabbitmq-2C。(所以主机名在docker compose中被配置为rabbitm-2A),但nginx主机只解析小写字母(rabbitmq-2a)的主机名。
所以,我不能重命名主机,因为消息已经在队列中(don;我不想丢失现有消息)
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条答案
按热度按时间sqyvllje1#
DNS不区分大小写(RFC 4343),所以这不是问题。
我想更多的是,主机名不正确。
以下是一些提示:
编辑
有了你最近的评论,我可以想象问题是什么。
我猜你有一个
StatefulSet
?然后你的主机名看起来很奇怪。它应该类似于
rabbitmq-2A-1
或rabbitmq-1
。StatfulSets
根据其主机名具有特殊行为。相关文档:StatefulSet