Назад | Перейти на главную страницу

Доступ к RabbitMQ с помощью плавающего IP-адреса, связанного с виртуальной машиной

У меня есть виртуальная машина (ВМ), работающая на OpenStack, на которую я установил OpenStack с помощью Packstack. Я связал плавающий IP-адрес с этой виртуальной машиной.

В OpenStack я настроил правила входящего доступа для всех компонентов OpenStack и RabbitMQ:

....

Ingress     IPv4    TCP     15672   0.0.0.0/0
Ingress     IPv4    TCP     5672    0.0.0.0/0

Я могу получить доступ как к RabbitMQ, так и к плагину управления с виртуальной машины. Я даже развернул на виртуальной машине фиктивного потребителя, и он работал нормально. Однако я не могу получить доступ ни к одному из них с плавающего IP. Я могу успешно получить доступ к другим компонентам OpenStack, таким как Identity.

Я попытался изменить iptables, но это тоже не сработало:

iptables -A INPUT -p tcp -m multiport --dports 5671,5672,15672 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 5671,5672,15672 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Спасибо за помощь.


Дополнительная информация

Начиная с этого момента, localhost - 192.168.113.5, общедоступный IP - это «плавающий IP».

Результаты Telnet

(снаружи)

telnet <floating IP> 5672

Trying <floating IP>...
telnet: connect to address <floating IP>: Connection refused
telnet: Unable to connect to remote host

(из ВМ)

telnet localhost 5672
Trying ::1...
Connected to localhost.
Escape character is '^]'.

Вещи, которые я пробовал

lsof:

sudo lsof -n -i4TCP:5672 | grep LISTEN
<no-results>

сс:

sudo ss --tcp -f inet --listening --numeric --processes | grep 5672
LISTEN  0  128  *:25672  *:*  users:(("beam.smp",pid=1310,fd=44))
LISTEN  0  128  *:15672  *:*  users:(("beam.smp",pid=1310,fd=54))

netstat:

netstat --all --numeric --tcp --programs | grep 5672
tcp  0  0 0.0.0.0:25672  0.0.0.0:*  LISTEN  1310/beam.smp       
tcp  0  0 0.0.0.0:15672  0.0.0.0:*  LISTEN  1310/beam.smp
tcp  0  0 192.168.113.5:59962  192.168.113.5:5672  ESTABLISHED  3115/python2
...
tcp6  0  0  :::5672  :::*  LISTEN  1310/beam.smp       
tcp6  0  0  192.168.113.5:5672  192.168.113.5:59928  ESTABLISHED  1310/beam.smp
...

RabbitMQ:

rabbitmqctl list_connections
guest   192.168.113.5   59922   running
guest   192.168.113.5   59926   running
...

завиток:

curl http://<floating IP>:15672/
curl: (7) Failed to connect to <floating IP> port 15672: Network is unreachable

Это мой файл конфигурации RabbitMQ:

# /etc/rabbitmq/rabbitmq.config 

% This file managed by Puppet
% Template Path: rabbitmq/templates/rabbitmq.config
[
  {rabbit, [
    {tcp_listen_options, [
         {backlog,       128},
         {nodelay,       true},
         {linger,        {true, 0}},
         {exit_on_close, false}
    ]},
    {loopback_users, []},
    {tcp_listen_options, [binary,{packet, raw},{reuseaddr, true},{backlog, 128},{nodelay, true},{exit_on_close, false},{keepalive, true}]},
    {default_user, <<"guest">>},
    {default_pass, <<"guest">>}
  ]},
  {kernel, [

  ]}
].
% EOF