在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-39
3. 创建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 接口。
如下图所示: