我有一个在 OpenStack 上运行的虚拟机 (VM),我使用 Packstack 在该虚拟机上安装了 OpenStack。我将一个浮动 IP 与该 VM 关联。
在 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
感谢您的帮助。
附加信息
- 在 VM 上安装 OpenStack 后,我必须手动更新公共端点以通过浮动 IP 访问 OpenStack 服务。
- 我还(手动)更新了 Horizon 配置文件(/etc/httpd/conf.d/15-horizon_vhost.conf)
从现在开始,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 --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