在OpenStack中,创建instance之前必须创建网络。这里通过Dashbord创建私有网络并且通过虚拟路由器与公网相连。私有网络即Tenant network。
1. 创建私有网络及其子网
登录Dashbord->Project->Network->Networks->Create Network
创建私有网络gpu_server_net。
直接创建子网,此处Gateway一定要设置,否则无法连接虚拟路由器。
2. 创建虚拟路由器连接内外网
Project->Network->Routers->Create Router
创建虚拟路由器ext-gpu_server_net_router, 选择外网ext_net。
查看宿主机网络配置发现多了一个虚拟网络接口tapac69635d-39,并且此接口被加入了之前的网桥:
$ ifconfig tapac69635d-39 Link encap:Ethernet HWaddr 8e:65:62:88:73:f2 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:22 errors:0 dropped:0 overruns:0 frame:0 TX packets:1224 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:1900 (1.9 KB) TX bytes:147035 (147.0 KB) $ brctl show brq0bf52efa-2e bridge name bridge id STP enabled interfaces brq0bf52efa-2e 8000.8e65628873f2 no enp129s0f0 tapac69635d-393. 创建Interface,连接私有网络
进入ext-gpu_server_net_router界面->Interfaces->Create Interface
选择私有网络gpu_server_net, IP地址可以自动获取。
最终的拓扑图如下:
这样在私有网络gpu_server_net上创建的instance就可以访问外网了。
私有网络的实现也是通过Linux bridge,通过brctl查看发现多了一个网桥brq7da98464-c3:
$ brctl show bridge name bridge id STP enabled interfaces brq0bf52efa-2e 8000.8e65628873f2 no enp129s0f0 tapac69635d-39 brq7da98464-c3 8000.5291505c09bc no tap9a787464-ac tapa2e6a0fb-82 vxlan-34其中的虚拟网卡tap9a787464-ac和tapa2e6a0fb-82分别是连接Router的Gateway Interface和DHCP agent 接口。
如下图所示: