У меня есть виртуальная машина (ВМ), работающая на 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