如何从VM从外部网络访问openstack vm实例

How to access the openstack vm instance from external network from VM

我有以下场景,我有两个文件客户端和服务器文件,它们使用 docker 容器容器化。客户端容器驻留在使用虚拟框(使用 NAT 和仅主机适配器的网络集)的 VM 上,服务器容器驻留在 OpenStack VM 上。
服务器IP地址为192.168.160.39,VM机器IP地址为enp0s8:192.168.56.108。 我是 运行 docker 容器客户端

docker run --rm -it -p 192.168.56.108:5555:5555 client bash

和运行服务器docker容器作为

docker run --rm -it -p 5555:5555 server bash 

Client.py

context = zmq.Context()
#Socket to talk to server
socket = context.socket( zmq.REQ )
socket.connect( "tcp://192.168.160.39:5555" )
name = "Max"
while True:
  message = input( "Message: " )
  socket.send_pyobj( {1: [name, message]} )

Server.py

context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://0.0.0.0:5555")
while True:
   #Wait for next request from client
   message = socket.recv_pyobj()
   print("%s: %s" % (message.get(1)[0], message.get(1)[1]))

我可以使用 ssh -J proxy-server OpenStack VM 通过 ssh 从我的 VM 访问 OpenStack VM。 例如 ssh -J 4020343@hpdc.xxx.xx ubuntu@192.168.160.39

我的服务器无法从客户端检索数据。谢谢,非常感谢帮助我解决这个问题。

你检查过安全组了吗?您的服务器正在侦听的端口 (5555) 应该在 OpenStack 中的 VM 中打开。

如果你有一个openstack实例id,你可以找到正确的sec。分组:

示例:

openstack server show  284c39d2-79af-485d-8f63-9ac3620cf119 | grep security_groups